summaryrefslogtreecommitdiff
path: root/apt
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2014-01-25 17:02:10 +0100
committerJulian Andres Klode <jak@debian.org>2014-01-25 17:16:13 +0100
commitb86459a1114684f4e65a5639d46975670304f65b (patch)
tree6da7149bf2b1f232b1e6e7dc3c70a1697149b443 /apt
parente50f19ba24ff8999d6d18da3fd06cdb44dfccced (diff)
downloadpython-apt-b86459a1114684f4e65a5639d46975670304f65b.tar.gz
apt/package.py: Pass an apt_pkg.Dependency to BaseDependency
Instead of passing the properties to __init__(), let's just pass the apt_pkg.Dependency. Store that in a _dep attribute, and provide properties to provide the API. The other classes do it this way as well. Reported-by: Michael Schaller <michael@5challer.de>
Diffstat (limited to 'apt')
-rw-r--r--apt/package.py60
1 files changed, 41 insertions, 19 deletions
diff --git a/apt/package.py b/apt/package.py
index d1a72744..d75a5185 100644
--- a/apt/package.py
+++ b/apt/package.py
@@ -61,15 +61,7 @@ class FetchError(Exception):
class BaseDependency(object):
- """A single dependency.
-
- Attributes defined here:
- name - The name of the dependency
- relation - The relation (<,<=,=,!=,>=,>,)
- version - The version depended on
- rawtype - The type of the dependendy (e.g. 'Recommends')
- pre_depend - Boolean value whether this is a pre-dependency.
- """
+ """A single dependency."""
class __dstr(str):
"""Compare helper for compatibility with old third-party code.
@@ -95,12 +87,45 @@ class BaseDependency(object):
def __ne__(self, other):
return not self.__eq__(other)
- def __init__(self, name, rel, ver, pre, rawtype=None):
- self.name = name
- self.relation = self.__dstr(rel)
- self.version = ver
- self.pre_depend = pre
- self.rawtype = rawtype
+ def __init__(self, dep):
+ self._dep = dep # apt_pkg.Dependency
+
+ @property
+ def name(self):
+ """The name of the target package."""
+ return self._dep.target_pkg.name
+
+ @property
+ def relation(self):
+ """The relation (<, <=, !=, =, >=, >, ).
+
+ Note that the empty string is a valid string as well, if no version
+ is specified.
+ """
+ return self.__dstr(self._dep.comp_type)
+
+ @property
+ def version(self):
+ """The target version or None.
+
+ It is None if and only if relation is the empty string."""
+ return self._dep.target_ver
+
+ @property
+ def rawtype(self):
+ """Type of the dependency.
+
+ This should be one of 'Breaks', 'Conflicts', 'Depends', 'Enhances',
+ 'PreDepends', 'Recommends', 'Replaces', 'Suggests'.
+
+ Additional types might be added in the future.
+ """
+ return self._dep.dep_type_untranslated
+
+ @property
+ def pre_depend(self):
+ """Whether this is a PreDepends."""
+ return self._dep.dep_type_untranslated == 'PreDepends'
def __repr__(self):
return ('<BaseDependency: name:%r relation:%r version:%r preDepend:%r>'
@@ -433,10 +458,7 @@ class Version(object):
for dep_ver_list in depends[type_]:
base_deps = []
for dep_or in dep_ver_list:
- base_deps.append(BaseDependency(dep_or.target_pkg.name,
- dep_or.comp_type, dep_or.target_ver,
- (type_ == "PreDepends"),
- rawtype=type_))
+ base_deps.append(BaseDependency(dep_or))
depends_list.append(Dependency(base_deps))
except KeyError:
pass