public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/, gentoopm/pkgcorepm/, gentoopm/paludispm/
@ 2011-07-14  7:32 Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2011-07-14  7:32 UTC (permalink / raw
  To: gentoo-commits

commit:     73ec5c0c1a28d16f22c4d0cd292045511d85946f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 07:33:23 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 07:33:23 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=73ec5c0c

Associate package-derived atoms with packages.

---
 gentoopm/paludispm/atom.py |    3 ++-
 gentoopm/paludispm/pkg.py  |    2 +-
 gentoopm/pkgcorepm/atom.py |    3 ++-
 gentoopm/pkgcorepm/pkg.py  |    2 +-
 gentoopm/portagepm/atom.py |    9 +++++----
 gentoopm/portagepm/pkg.py  |    2 +-
 6 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index 2b03d41..4674b77 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -25,7 +25,7 @@ class PaludisAtom(PMAtom):
 				paludis.RepositoryNameError):
 			raise InvalidAtomStringError('Incorrect atom: %s' % s)
 
-	def __init__(self, s, env):
+	def __init__(self, s, env, pkg = None):
 		try:
 			self._init_atom(s, env)
 		except InvalidAtomStringError:
@@ -34,6 +34,7 @@ class PaludisAtom(PMAtom):
 			self._incomplete = True
 		else:
 			self._incomplete = False
+		self._pkg = pkg
 
 	def __contains__(self, pkg):
 		raise NotImplementedError('Direct atom matching not implemented in Paludis')

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 2ba12d8..5bb8123 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -67,7 +67,7 @@ class PaludisID(PMPackage):
 	@property
 	def atom(self):
 		# XXX: newer version wraps getting atom
-		return PaludisAtom('=%s' % self.id, self._env)
+		return PaludisAtom('=%s' % self.id, self._env, self)
 
 	def __cmp__(self, other):
 		if not isinstance(other, PaludisID):

diff --git a/gentoopm/pkgcorepm/atom.py b/gentoopm/pkgcorepm/atom.py
index 9eb59a6..a765403 100644
--- a/gentoopm/pkgcorepm/atom.py
+++ b/gentoopm/pkgcorepm/atom.py
@@ -9,8 +9,9 @@ from pkgcore.util.parserestrict import parse_match
 from gentoopm.basepm.atom import PMAtom
 
 class PkgCoreAtom(PMAtom):
-	def __init__(self, s):
+	def __init__(self, s, pkg = None):
 		self._r = parse_match(s)
+		self._pkg = pkg
 
 	def __contains__(self, pkg):
 		return self._r.match(pkg._pkg)

diff --git a/gentoopm/pkgcorepm/pkg.py b/gentoopm/pkgcorepm/pkg.py
index 47732ab..f26cdbd 100644
--- a/gentoopm/pkgcorepm/pkg.py
+++ b/gentoopm/pkgcorepm/pkg.py
@@ -43,7 +43,7 @@ class PkgCorePackage(PMPackage):
 
 	@property
 	def atom(self):
-		return PkgCoreAtom('=%s' % self.id)
+		return PkgCoreAtom('=%s' % self.id, self)
 
 	def __cmp__(self, other):
 		if not isinstance(other, PkgCorePackage):

diff --git a/gentoopm/portagepm/atom.py b/gentoopm/portagepm/atom.py
index 63fcbef..70e7629 100644
--- a/gentoopm/portagepm/atom.py
+++ b/gentoopm/portagepm/atom.py
@@ -22,20 +22,21 @@ class FakeSettings(object):
 		return lambda: collections.defaultdict(lambda: '')
 
 class PortageAtom(object):
-	def __new__(self, s):
+	def __new__(self, s, pkg = None):
 		try:
 			a = dep_expand(s, settings = FakeSettings())
 		except pe.InvalidAtom:
 			raise InvalidAtomStringError('Incorrect atom: %s' % s)
 
 		if catsplit(a.cp)[0] == 'null':
-			return UnexpandedPortageAtom(a)
+			return UnexpandedPortageAtom(a, pkg)
 		else:
-			return CompletePortageAtom(a)
+			return CompletePortageAtom(a, pkg)
 
 class CompletePortageAtom(PMAtom):
-	def __init__(self, a):
+	def __init__(self, a, pkg):
 		self._atom = a
+		self._pkg = pkg
 
 	def __contains__(self, pkg):
 		# SLOT matching requires metadata so delay it.

diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py
index dd48252..cb17e0e 100644
--- a/gentoopm/portagepm/pkg.py
+++ b/gentoopm/portagepm/pkg.py
@@ -45,7 +45,7 @@ class PortageDBCPV(PMPackage):
 
 	@property
 	def atom(self):
-		return PkgCoreAtom('=%s' % self.id)
+		return PkgCoreAtom('=%s' % self.id, self)
 
 class PortageCPV(PortageDBCPV):
 	def __init__(self, cpv, dbapi, tree, repo_prio):



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/, gentoopm/pkgcorepm/, gentoopm/paludispm/
@ 2011-07-26 20:10 Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2011-07-26 20:10 UTC (permalink / raw
  To: gentoo-commits

commit:     79f2892a3b8bbf34a177c96483e88ae60202ca80
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 26 19:50:02 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jul 26 19:50:02 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=79f2892a

Support getting IUSE in all PMs.

---
 gentoopm/paludispm/pkg.py |   10 +++++++++-
 gentoopm/pkgcorepm/pkg.py |    9 ++++++++-
 gentoopm/portagepm/pkg.py |   10 +++++++++-
 3 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 08398ae..7ad3e61 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -8,7 +8,7 @@ import paludis
 from gentoopm.basepm.metadata import PMPackageMetadata
 from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
 		PMInstallablePackage, PMInstalledPackage, PMBoundPackageKey, \
-		PMPackageState
+		PMPackageState, PMUseFlag
 from gentoopm.paludispm.atom import PaludisAtom, \
 		PaludisPackageKey, PaludisPackageVersion
 from gentoopm.paludispm.contents import PaludisPackageContents
@@ -39,6 +39,9 @@ class PaludisPackageDescription(PMPackageDescription):
 		k = self._pkg.long_description_key()
 		return k.parse_value() if k is not None else None
 
+class PaludisUseFlag(PMUseFlag):
+	pass
+
 class PaludisID(PMPackage, PaludisAtom):
 	def __init__(self, pkg, env):
 		self._pkg = pkg
@@ -114,6 +117,11 @@ class PaludisID(PMPackage, PaludisAtom):
 				self)
 
 	@property
+	def use(self):
+		iuse = self._pkg.find_metadata('IUSE').parse_value()
+		return SpaceSepTuple([PaludisUseFlag(x) for x in iuse])
+
+	@property
 	def _atom(self):
 		return self._pkg.uniquely_identifying_spec()
 

diff --git a/gentoopm/pkgcorepm/pkg.py b/gentoopm/pkgcorepm/pkg.py
index d49dc51..819aa4b 100644
--- a/gentoopm/pkgcorepm/pkg.py
+++ b/gentoopm/pkgcorepm/pkg.py
@@ -6,7 +6,7 @@
 from gentoopm.basepm.metadata import PMPackageMetadata
 from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
 		PMInstalledPackage, PMInstallablePackage, PMBoundPackageKey, \
-		PMPackageState
+		PMPackageState, PMUseFlag
 from gentoopm.basepm.pkgset import PMPackageSet, PMFilteredPackageSet
 from gentoopm.pkgcorepm.atom import PkgCoreAtom, PkgCorePackageKey
 from gentoopm.pkgcorepm.contents import PkgCorePackageContents
@@ -45,6 +45,9 @@ class PkgCorePackageDescription(PMPackageDescription):
 		else: # vdb, for example
 			return None
 
+class PkgCoreUseFlag(PMUseFlag):
+	pass
+
 class PkgCorePackage(PMPackage, PkgCoreAtom):
 	def __init__(self, pkg, repo_index = 0):
 		self._pkg = pkg
@@ -71,6 +74,10 @@ class PkgCorePackage(PMPackage, PkgCoreAtom):
 		return SpaceSepTuple(self._pkg.homepage)
 
 	@property
+	def use(self):
+		return SpaceSepTuple([PkgCoreUseFlag(x) for x in self._pkg.iuse])
+
+	@property
 	def slotted(self):
 		return PkgCoreAtom(self._pkg.slotted_atom)
 

diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py
index 9922af3..39e4a59 100644
--- a/gentoopm/portagepm/pkg.py
+++ b/gentoopm/portagepm/pkg.py
@@ -8,7 +8,7 @@ from portage.versions import cpv_getkey, cpv_getversion, vercmp
 from gentoopm.basepm.metadata import PMPackageMetadata
 from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
 		PMInstalledPackage, PMInstallablePackage, PMBoundPackageKey, \
-		PMPackageState
+		PMPackageState, PMUseFlag
 from gentoopm.basepm.pkgset import PMPackageSet, PMFilteredPackageSet
 from gentoopm.portagepm.atom import PortageAtom, CompletePortageAtom, \
 		PortagePackageKey, PortagePackageVersion, _get_atom
@@ -55,6 +55,9 @@ class PortagePackageDescription(PMPackageDescription):
 		"""
 		return None # XXX
 
+class PortageUseFlag(PMUseFlag):
+	pass
+
 class PortageDBCPV(PMPackage, CompletePortageAtom):
 	def __init__(self, cpv, dbapi):
 		self._cpv = cpv
@@ -106,6 +109,11 @@ class PortageDBCPV(PMPackage, CompletePortageAtom):
 		raise None
 
 	@property
+	def use(self):
+		return SpaceSepTuple([PortageUseFlag(x) for x \
+				in self._aux_get('IUSE').split()])
+
+	@property
 	def slotted(self):
 		cp = str(self.key)
 		slot = self.slot



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-07-26 20:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-26 20:10 [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/, gentoopm/pkgcorepm/, gentoopm/paludispm/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2011-07-14  7:32 Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox