1 |
commit: 2c8f26987ba0e1fe111b45cd2d9566abb69372b9 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Thu Jul 19 16:52:16 2012 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Thu Jul 19 16:52:16 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=2c8f2698 |
7 |
|
8 |
packageinfo: compare_version, has_key |
9 |
|
10 |
--- |
11 |
roverlay/packageinfo.py | 34 +++++++++++++++++++++++++++++++++- |
12 |
1 files changed, 33 insertions(+), 1 deletions(-) |
13 |
|
14 |
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py |
15 |
index a2910c5..f9d26d1 100644 |
16 |
--- a/roverlay/packageinfo.py |
17 |
+++ b/roverlay/packageinfo.py |
18 |
@@ -114,6 +114,38 @@ class PackageInfo ( object ): |
19 |
return True |
20 |
# --- end of _writelock_acquire (...) --- |
21 |
|
22 |
+ def has_key ( self, *keys ): |
23 |
+ for k in keys: |
24 |
+ if k not in self._info: |
25 |
+ # try harder - use get() with fallback value to see if value |
26 |
+ # can be calculated |
27 |
+ if self.get ( k, do_fallback=True ) is None: |
28 |
+ return False |
29 |
+ return True |
30 |
+ # --- end of has_key (...) --- |
31 |
+ |
32 |
+ has = has_key |
33 |
+ |
34 |
+ def compare_version ( self, other_package ): |
35 |
+ """Compares the version of two PackageInfo objects. |
36 |
+ Returns 1 if self's version is higher, -1 if lower and 0 if equal. |
37 |
+ |
38 |
+ arguments: |
39 |
+ * other_package -- |
40 |
+ """ |
41 |
+ if other_package is None: return 1 |
42 |
+ |
43 |
+ my_ver = self.get ( 'version', fallback_value=0 ) |
44 |
+ other_ver = other_package.get ( 'version', fallback_value=0 ) |
45 |
+ |
46 |
+ if my_ver > other_ver: |
47 |
+ return 1 |
48 |
+ elif my_ver == other_ver: |
49 |
+ return 0 |
50 |
+ else: |
51 |
+ return -1 |
52 |
+ # --- end of compare_version (...) --- |
53 |
+ |
54 |
def get ( self, key, fallback_value=None, do_fallback=False ): |
55 |
"""Returns the value specified by key. |
56 |
The value is either calculated or taken from dict self._info. |
57 |
@@ -172,7 +204,7 @@ class PackageInfo ( object ): |
58 |
|
59 |
|
60 |
# fallback |
61 |
- if do_fallback: |
62 |
+ if do_fallback or fallback_value is not None: |
63 |
return fallback_value |
64 |
|
65 |
elif key_low in self.__class__.ALWAYS_FALLBACK: |