From 3240444c0e57d36c6ed822c51c4f41903f939d3e Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 18 Aug 2009 11:13:28 +0200 Subject: * apt/package.py: - add "recommends" property --- apt/package.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'apt/package.py') diff --git a/apt/package.py b/apt/package.py index 308bd223..8d44ef02 100644 --- a/apt/package.py +++ b/apt/package.py @@ -67,11 +67,12 @@ class BaseDependency(object): preDepend - Boolean value whether this is a pre-dependency. """ - def __init__(self, name, rel, ver, pre): + def __init__(self, name, rel, ver, pre, recommends=False): self.name = name self.relation = rel self.version = ver self.preDepend = pre + self.recommends = recommends def __repr__(self): return ('' @@ -377,6 +378,23 @@ class Version(object): pass return depends_list + @property + def recommends(self): + """Return the recommends of the package version.""" + recommends_list = [] + depends = self._cand.DependsList + try: + for depVerList in depends["Recommends"]: + base_recs = [] + for depOr in depVerList: + base_recs.append(BaseDependency(depOr.TargetPkg.Name, + depOr.CompType, + False, True)) + recommends_list.append(Dependency(base_recs)) + except KeyError: + pass + return recommends_list + @property def origins(self): """Return a list of origins for the package version.""" @@ -1096,6 +1114,7 @@ def _test(): print "InstalledSize: %s " % pkg.candidate.installed_size print "PackageSize: %s " % pkg.candidate.size print "Dependencies: %s" % pkg.installed.dependencies + print "Recommends: %s" % pkg.installed.recommends for dep in pkg.candidate.dependencies: print ",".join("%s (%s) (%s) (%s)" % (o.name, o.version, o.relation, o.preDepend) for o in dep.or_dependencies) -- cgit v1.2.3 From aae9d9c7c07c7c078e11d2d8affc88d9eaa51e11 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 18 Aug 2009 13:26:47 +0200 Subject: apt/package.py: Introduce Version.get_dependencies(). Introduce Version.get_dependencies() which takes one or more types of dependencies and returns a list of Dependency objects. This prevents code duplication in Version.dependencies and Version.recommends and allows to access other types as well. --- apt/package.py | 31 ++++++++++++------------------- debian/changelog | 8 +++++++- 2 files changed, 19 insertions(+), 20 deletions(-) (limited to 'apt/package.py') diff --git a/apt/package.py b/apt/package.py index 8d44ef02..7cbb4711 100644 --- a/apt/package.py +++ b/apt/package.py @@ -64,15 +64,16 @@ class BaseDependency(object): name - The name of the dependency relation - The relation (>>,>=,==,<<,<=,) version - The version depended on + rawtype - The type of the dependendy (e.g. 'Recommends') preDepend - Boolean value whether this is a pre-dependency. """ - def __init__(self, name, rel, ver, pre, recommends=False): + def __init__(self, name, rel, ver, pre, rawtype=None): self.name = name self.relation = rel self.version = ver self.preDepend = pre - self.recommends = recommends + self.rawtype = rawtype def __repr__(self): return ('' @@ -360,9 +361,8 @@ class Version(object): """Return a Record() object for this version.""" return Record(self._records.Record) - @property - def dependencies(self): - """Return the dependencies of the package version.""" + def get_dependencies(self, *types): + """Return a list of Dependency objects for the given types.""" depends_list = [] depends = self._cand.DependsList for t in ["PreDepends", "Depends"]: @@ -372,28 +372,21 @@ class Version(object): for depOr in depVerList: base_deps.append(BaseDependency(depOr.TargetPkg.Name, depOr.CompType, depOr.TargetVer, - (t == "PreDepends"))) + (t == "PreDepends"), deptype=t)) depends_list.append(Dependency(base_deps)) except KeyError: pass return depends_list + @property + def dependencies(self): + """Return the dependencies of the package version.""" + return self.get_dependencies("PreDepends", "Depends") + @property def recommends(self): """Return the recommends of the package version.""" - recommends_list = [] - depends = self._cand.DependsList - try: - for depVerList in depends["Recommends"]: - base_recs = [] - for depOr in depVerList: - base_recs.append(BaseDependency(depOr.TargetPkg.Name, - depOr.CompType, - False, True)) - recommends_list.append(Dependency(base_recs)) - except KeyError: - pass - return recommends_list + return self.get_dependencies("Recommends") @property def origins(self): diff --git a/debian/changelog b/debian/changelog index 917c2d88..03f0ad5b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,15 @@ python-apt (0.7.12.2) UNRELEASED; urgency=low + [ Michael Vogt ] * apt/package.py: - add "recommends" property - -- Michael Vogt Tue, 18 Aug 2009 11:48:01 +0200 + [ Julian Andres Klode ] + * apt/package.py: + - Introduce Version.get_dependencies() which takes one or more types + of dependencies and returns a list of Dependency objects. + + -- Julian Andres Klode Tue, 18 Aug 2009 13:22:56 +0200 python-apt (0.7.12.1) unstable; urgency=low -- cgit v1.2.3 From 6a094eb0c26f0997e271f6242654293809a4e4a1 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 19 Aug 2009 15:14:53 +0200 Subject: apt/package.py: fix typo in keyword argument --- apt/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'apt/package.py') diff --git a/apt/package.py b/apt/package.py index 7cbb4711..7322bb94 100644 --- a/apt/package.py +++ b/apt/package.py @@ -372,7 +372,7 @@ class Version(object): for depOr in depVerList: base_deps.append(BaseDependency(depOr.TargetPkg.Name, depOr.CompType, depOr.TargetVer, - (t == "PreDepends"), deptype=t)) + (t == "PreDepends"), rawtype=t)) depends_list.append(Dependency(base_deps)) except KeyError: pass -- cgit v1.2.3 From c31fb6542e64a7eb279d0b246da4ea15dc4d6af3 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Thu, 20 Aug 2009 23:14:19 +0200 Subject: apt/package.py: Do not mark the package as manually installed on upgrade (Closes: #542699) --- apt/package.py | 3 ++- debian/changelog | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'apt/package.py') diff --git a/apt/package.py b/apt/package.py index 7322bb94..e33078d8 100644 --- a/apt/package.py +++ b/apt/package.py @@ -1064,7 +1064,8 @@ class Package(object): def markUpgrade(self): """Mark a package for upgrade.""" if self.isUpgradable: - self.markInstall() + fromUser = not self._pcache._depcache.IsAutoInstalled(self._pkg) + self.markInstall(fromUser=fromUser) else: # FIXME: we may want to throw a exception here sys.stderr.write(("MarkUpgrade() called on a non-upgrable pkg: " diff --git a/debian/changelog b/debian/changelog index 03f0ad5b..7ab2fda4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,8 +8,9 @@ python-apt (0.7.12.2) UNRELEASED; urgency=low * apt/package.py: - Introduce Version.get_dependencies() which takes one or more types of dependencies and returns a list of Dependency objects. + - Do not mark the package as manually installed on upgrade (Closes: #542699) - -- Julian Andres Klode Tue, 18 Aug 2009 13:22:56 +0200 + -- Julian Andres Klode Thu, 20 Aug 2009 23:13:00 +0200 python-apt (0.7.12.1) unstable; urgency=low -- cgit v1.2.3 From 200249fc4f0fccd19e12e1abcb718c08df0bf752 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 21 Aug 2009 14:57:44 +0200 Subject: apt/package.py: Add Package.is_now_broken and Package.is_inst_broken. --- apt/package.py | 10 ++++++++++ debian/changelog | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'apt/package.py') diff --git a/apt/package.py b/apt/package.py index e33078d8..59fb8cfa 100644 --- a/apt/package.py +++ b/apt/package.py @@ -1008,6 +1008,16 @@ class Package(object): """ return VersionList(self) + @property + def is_inst_broken(self): + """Return True if the to-be-installed package is broken.""" + return self._pcache._depcache.IsInstBroken(self._pkg) + + @property + def is_now_broken(self): + """Return True if the installed package is broken.""" + return self._pcache._depcache.IsNowBroken(self._pkg) + # depcache actions def markKeep(self): diff --git a/debian/changelog b/debian/changelog index 7ab2fda4..d91b90a5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,8 +9,9 @@ python-apt (0.7.12.2) UNRELEASED; urgency=low - Introduce Version.get_dependencies() which takes one or more types of dependencies and returns a list of Dependency objects. - Do not mark the package as manually installed on upgrade (Closes: #542699) + - Add Package.is_now_broken and Package.is_inst_broken. - -- Julian Andres Klode Thu, 20 Aug 2009 23:13:00 +0200 + -- Julian Andres Klode Fri, 21 Aug 2009 14:57:08 +0200 python-apt (0.7.12.1) unstable; urgency=low -- cgit v1.2.3