diff options
Diffstat (limited to 'apt/package.py')
| -rw-r--r-- | apt/package.py | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/apt/package.py b/apt/package.py index 9223ed22..29eec909 100644 --- a/apt/package.py +++ b/apt/package.py @@ -94,7 +94,7 @@ class BaseDependency(object): preDepend = AttributeDeprecatedBy('pre_depend') -class Dependency(object): +class Dependency(list): """Represent an Or-group of dependencies. Attributes defined here: @@ -102,11 +102,12 @@ class Dependency(object): """ def __init__(self, alternatives): - self.or_dependencies = alternatives - - def __repr__(self): - return repr(self.or_dependencies) + super(Dependency, self).__init__() + self.extend(alternatives) + @property + def or_dependencies(self): + return self class DeprecatedProperty(property): """A property which gives DeprecationWarning on access. @@ -408,6 +409,17 @@ class Version(object): return self._cand.priority_str @property + def policy_priority(self): + """Return the internal policy priority as a number. + See apt_preferences(5) for more information about what it means. + """ + priority = 0 + policy = self.package._pcache._depcache.policy + for (packagefile, _) in self._cand.file_list: + priority = max(priority, policy.get_priority(packagefile)) + return priority + + @property def record(self): """Return a Record() object for this version. @@ -455,6 +467,11 @@ class Version(object): return self.get_dependencies("Recommends") @property + def suggests(self): + """Return the suggests of the package version.""" + return self.get_dependencies("Suggests") + + @property def origins(self): """Return a list of origins for the package version.""" origins = [] @@ -528,7 +545,10 @@ class Version(object): .. versionadded:: 0.7.10 """ - return iter(self._uris()).next() + try: + return iter(self._uris()).next() + except StopIteration: + return None def fetch_binary(self, destdir='', progress=None): """Fetch the binary version of the package. @@ -545,8 +565,8 @@ class Version(object): base = os.path.basename(self._records.filename) destfile = os.path.join(destdir, base) if _file_is_same(destfile, self.size, self._records.md5_hash): - print 'Ignoring already existing file:', destfile - return + print('Ignoring already existing file: %s' % destfile) + return os.path.abspath(destfile) acq = apt_pkg.Acquire(progress or apt.progress.text.AcquireProgress()) acqfile = apt_pkg.AcquireFile(acq, self.uri, self._records.md5_hash, self.size, base, destfile=destfile) @@ -555,7 +575,7 @@ class Version(object): if acqfile.status != acqfile.STAT_DONE: raise FetchError("The item %r could not be fetched: %s" % (acqfile.destfile, acqfile.error_text)) - print self._records.filename + return os.path.abspath(destfile) def fetch_source(self, destdir="", progress=None, unpack=True): @@ -594,7 +614,7 @@ class Version(object): if type_ == 'dsc': dsc = destfile if _file_is_same(destfile, size, md5): - print 'Ignoring already existing file:', destfile + print('Ignoring already existing file: %s' % destfile) continue files.append(apt_pkg.AcquireFile(acq, src.index.archive_uri(path), md5, size, base, destfile=destfile)) @@ -707,6 +727,9 @@ class Package(object): return '<Package: name:%r architecture=%r id:%r>' % (self._pkg.name, self._pkg.architecture, self._pkg.id) + def __lt__(self, other): + return self.name < other.name + def candidate(self): """Return the candidate version of the package. @@ -973,8 +996,8 @@ class Package(object): another package, and if no packages depend on it anymore, the package is no longer required. """ - return self.is_installed and \ - self._pcache._depcache.is_garbage(self._pkg) + return ((self.is_installed or self.marked_install) and + self._pcache._depcache.is_garbage(self._pkg)) @property def is_auto_installed(self): |
