From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Qis1y-0006DK-O3 for garchives@archives.gentoo.org; Mon, 18 Jul 2011 17:55:01 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 682A321C079; Mon, 18 Jul 2011 17:54:51 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 2B6B521C079 for ; Mon, 18 Jul 2011 17:54:51 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9F51B1B4018 for ; Mon, 18 Jul 2011 17:54:50 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id E3A6B8003D for ; Mon, 18 Jul 2011 17:54:49 +0000 (UTC) From: "Michał Górny" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" Message-ID: <43444b667821afedd650acf06cf46821206ff88c.mgorny@gentoo> Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/, gentoopm/pkgcorepm/, gentoopm/paludispm/, gentoopm/basepm/ X-VCS-Repository: proj/gentoopm X-VCS-Files: gentoopm/basepm/pkg.py gentoopm/paludispm/pkg.py gentoopm/pkgcorepm/pkg.py gentoopm/portagepm/pkg.py X-VCS-Directories: gentoopm/portagepm/ gentoopm/pkgcorepm/ gentoopm/paludispm/ gentoopm/basepm/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 43444b667821afedd650acf06cf46821206ff88c Date: Mon, 18 Jul 2011 17:54:49 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: d8bde8ea3d85ad614ca0147adc013071 commit: 43444b667821afedd650acf06cf46821206ff88c Author: Micha=C5=82 G=C3=B3rny gentoo org> AuthorDate: Mon Jul 18 17:55:26 2011 +0000 Commit: Micha=C5=82 G=C3=B3rny gentoo org> CommitDate: Mon Jul 18 17:55:26 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoopm.git;= a=3Dcommit;h=3D43444b66 Support getting package descriptions. --- gentoopm/basepm/pkg.py | 43 +++++++++++++++++++++++++++++++++++++++= ++++ gentoopm/paludispm/pkg.py | 19 ++++++++++++++++++- gentoopm/pkgcorepm/pkg.py | 21 ++++++++++++++++++++- gentoopm/portagepm/pkg.py | 18 +++++++++++++++++- 4 files changed, 98 insertions(+), 3 deletions(-) diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py index 51944d9..7fecdff 100644 --- a/gentoopm/basepm/pkg.py +++ b/gentoopm/basepm/pkg.py @@ -10,6 +10,39 @@ from gentoopm.basepm.atom import PMAtom from gentoopm.basepm.environ import PMPackageEnvironment from gentoopm.util import ABCObject =20 +class PMPackageDescription(ABCObject): + """ + Description of a package. + """ + + @abstractproperty + def short(self): + """ + The short package description (e.g. C{DESCRIPTION} within the ebuild). + + @type: string + """ + pass + + @abstractproperty + def long(self): + """ + The long package description (e.g. from C{metadata.xml}). + + @type: string/C{None} + """ + pass + + def __str__(self): + """ + Stringify to the best package description. In other words, long packag= e + description if available, short otherwise. + + @returns: best package description + @rtype: string + """ + return self.long or self.short + class PMPackage(PMAtom): """ An abstract class representing a single, uniquely-identified package @@ -91,6 +124,16 @@ class PMPackage(PMAtom): The metadata accessor object for the package. =20 @type: L{PMPackageMetadata} + @deprecated: inconsistent, please use L{PMPackage} properties instead + """ + pass + + @abstractproperty + def description(self): + """ + The description of the package. + + @type: L{PMPackageDescription} """ pass =20 diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py index 9f7405e..6ae4f25 100644 --- a/gentoopm/paludispm/pkg.py +++ b/gentoopm/paludispm/pkg.py @@ -6,10 +6,23 @@ import paludis =20 from gentoopm.basepm.metadata import PMPackageMetadata -from gentoopm.basepm.pkg import PMPackage +from gentoopm.basepm.pkg import PMPackage, PMPackageDescription from gentoopm.paludispm.atom import PaludisAtom, \ PaludisPackageKey, PaludisPackageVersion =20 +class PaludisPackageDescription(PMPackageDescription): + def __init__(self, pkg): + self._pkg =3D pkg + + @property + def short(self): + return self._pkg.short_description_key().parse_value() + + @property + def long(self): + k =3D self._pkg.long_description_key() + return k.parse_value() if k is not None else None + class PaludisID(PMPackage, PaludisAtom): def __init__(self, pkg, num =3D 0, enum_id =3D None, env =3D None): self._pkg =3D pkg @@ -44,6 +57,10 @@ class PaludisID(PMPackage, PaludisAtom): return PaludisPackageVersion(self._pkg.version) =20 @property + def description(self): + return PaludisPackageDescription(self._pkg) + + @property def slot(self): k =3D self._pkg.slot_key() return str(k.parse_value()) diff --git a/gentoopm/pkgcorepm/pkg.py b/gentoopm/pkgcorepm/pkg.py index 4c33ddb..4840d88 100644 --- a/gentoopm/pkgcorepm/pkg.py +++ b/gentoopm/pkgcorepm/pkg.py @@ -4,7 +4,7 @@ # Released under the terms of the 2-clause BSD license. =20 from gentoopm.basepm.metadata import PMPackageMetadata -from gentoopm.basepm.pkg import PMPackage +from gentoopm.basepm.pkg import PMPackage, PMPackageDescription from gentoopm.basepm.pkgset import PMPackageSet, PMFilteredPackageSet from gentoopm.pkgcorepm.atom import PkgCoreAtom =20 @@ -18,6 +18,21 @@ class PkgCorePackageSet(PMPackageSet): class PkgCoreFilteredPackageSet(PkgCorePackageSet, PMFilteredPackageSet)= : pass =20 +class PkgCorePackageDescription(PMPackageDescription): + def __init__(self, pkg): + self._pkg =3D pkg + + @property + def short(self): + return self._pkg.description + + @property + def long(self): + if hasattr(self._pkg, 'longdescription'): + return self._pkg.longdescription + else: # vdb, for example + return None + class PkgCorePackage(PMPackage, PkgCoreAtom): def __init__(self, pkg, repo_index =3D 0): self._pkg =3D pkg @@ -32,6 +47,10 @@ class PkgCorePackage(PMPackage, PkgCoreAtom): return self._pkg.path =20 @property + def description(self): + return PkgCorePackageDescription(self._pkg) + + @property def slotted(self): return PkgCoreAtom(self._pkg.slotted_atom) =20 diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py index a999eec..2454685 100644 --- a/gentoopm/portagepm/pkg.py +++ b/gentoopm/portagepm/pkg.py @@ -6,7 +6,7 @@ from portage.versions import cpv_getkey, cpv_getversion, vercmp =20 from gentoopm.basepm.metadata import PMPackageMetadata -from gentoopm.basepm.pkg import PMPackage +from gentoopm.basepm.pkg import PMPackage, PMPackageDescription from gentoopm.basepm.pkgset import PMPackageSet, PMFilteredPackageSet from gentoopm.portagepm.atom import PortageAtom, CompletePortageAtom, \ PortagePackageKey, PortagePackageVersion, _get_atom @@ -21,6 +21,18 @@ class PortagePackageSet(PMPackageSet): class PortageFilteredPackageSet(PortagePackageSet, PMFilteredPackageSet)= : pass =20 +class PortagePackageDescription(PMPackageDescription): + def __init__(self, meta): + self._meta =3D meta + + @property + def short(self): + return self._meta['DESCRIPTION'] + + @property + def long(self): + return None # XXX + class PortageDBCPV(PMPackage, CompletePortageAtom): def __init__(self, cpv, dbapi): self._cpv =3D cpv @@ -44,6 +56,10 @@ class PortageDBCPV(PMPackage, CompletePortageAtom): return PortagePackageVersion(self._cpv) =20 @property + def description(self): + return PortagePackageDescription(self.metadata) # XXX + + @property def slot(self): return self.metadata['SLOT'] # XXX =20