diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2007-03-06 12:40:04 +0100 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2007-03-06 12:40:04 +0100 |
| commit | f951ee4da8de1ba6d29bcfab1e32005675b8b360 (patch) | |
| tree | a0a91190ceefa3e596ad0dce9f64c131639df976 /apt | |
| parent | 872a9d732d613e28f1296c488124bc226829910c (diff) | |
| parent | 838b096be5b107b6b856c02098926dbde4cbb5e3 (diff) | |
| download | python-apt-f951ee4da8de1ba6d29bcfab1e32005675b8b360.tar.gz | |
* apt/packages.py:
- support candidateDependencies, installedDependencies
Diffstat (limited to 'apt')
| -rw-r--r-- | apt/package.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/apt/package.py b/apt/package.py index 39e2993c..88c81681 100644 --- a/apt/package.py +++ b/apt/package.py @@ -24,6 +24,17 @@ import sys import random import string +class BaseDependency(object): + " a single dependency " + def __init__(self, name, rel, ver, pre): + self.name = name + self.relation = rel + self.version = ver + self.preDepend = pre + +class Dependency(object): + def __init__(self, alternatives): + self.or_dependencies = alternatives class Package(object): """ This class represents a package in the cache @@ -94,6 +105,35 @@ class Package(object): return None candidateVersion = property(candidateVersion) + def _getDependencies(self, ver): + depends_list = [] + depends = ver.DependsList + for t in ["PreDepends", "Depends"]: + if not depends.has_key(t): + continue + for depVerList in depends[t]: + base_deps = [] + for depOr in depVerList: + base_deps.append(BaseDependency(depOr.TargetPkg.Name, depOr.TargetVer, depOr.CompType, (t == "PreDepends"))) + depends_list.append(Dependency(base_deps)) + return depends_list + + @property + def candidateDependencies(self): + """ return a list of candidate dependencies """ + candver = self._depcache.GetCandidateVer(self._pkg) + if candver == None: + return [] + return self._getDependencies(candver) + + @property + def installedDependencies(self): + """ return a list of installed dependencies """ + ver = self._pkg.CurrentVer + if ver == None: + return [] + return self._getDependencies(ver) + def _downloadable(self, useCandidate=True): """ helper, return if the version is downloadable """ if useCandidate: @@ -250,6 +290,8 @@ class Package(object): def installedSize(self): """ The size of the currently installed package """ ver = self._pkg.CurrentVer + if ver is None: + return 0 return ver.InstalledSize installedSize = property(installedSize) @@ -360,6 +402,11 @@ if __name__ == "__main__": print "Description (unformated):\n%s" % pkg.rawDescription print "InstalledSize: %s " % pkg.installedSize print "PackageSize: %s " % pkg.packageSize + print "Dependencies: %s" % pkg.installedDependencies + for dep in pkg.candidateDependencies: + print ",".join(["%s (%s) (%s) (%s)" % (o.name,o.version,o.relation, o.preDepend) for o in dep.or_dependencies]) + + # now test install/remove import apt |
