public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/
@ 2011-07-20 16:41 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-07-20 16:41 UTC (permalink / raw
  To: gentoo-commits

commit:     120c2eca0d78fac4fa4c57132dcd826c049bfe4a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 20 16:38:42 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jul 20 16:38:42 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=120c2eca

Provide a str compat for string-like properties.

---
 gentoopm/basepm/atom.py |    8 ++++----
 gentoopm/basepm/pkg.py  |    4 ++--
 gentoopm/util.py        |   42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/gentoopm/basepm/atom.py b/gentoopm/basepm/atom.py
index 76e4e10..bc63325 100644
--- a/gentoopm/basepm/atom.py
+++ b/gentoopm/basepm/atom.py
@@ -5,9 +5,9 @@
 
 from abc import abstractmethod, abstractproperty
 
-from gentoopm.util import ABCObject, StringifiedComparisons
+from gentoopm.util import ABCObject, StringCompat, StringifiedComparisons
 
-class PMPackageKey(ABCObject, StringifiedComparisons):
+class PMPackageKey(ABCObject, StringCompat):
 	"""
 	A base class for a package key (CP/qualified package name).
 	"""
@@ -56,7 +56,7 @@ class PMIncompletePackageKey(PMPackageKey):
 	def __str__(self):
 		return self.package
 
-class PMPackageVersion(ABCObject, StringifiedComparisons):
+class PMPackageVersion(ABCObject, StringCompat):
 	"""
 	A base class for a package version.
 	"""
@@ -127,7 +127,7 @@ class PMAtom(ABCObject, StringifiedComparisons):
 
 	def __repr__(self):
 		if self.complete:
-			s = repr(self.__str__())
+			s = repr(str(self))
 		else:
 			s = '<incomplete>'
 		return '%s(%s)' % (self.__class__.__name__, s)

diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
index 4d7d01b..91081df 100644
--- a/gentoopm/basepm/pkg.py
+++ b/gentoopm/basepm/pkg.py
@@ -8,9 +8,9 @@ from abc import abstractmethod, abstractproperty
 
 from gentoopm.basepm.atom import PMAtom
 from gentoopm.basepm.environ import PMPackageEnvironment
-from gentoopm.util import ABCObject, FillMissingComparisons
+from gentoopm.util import ABCObject, FillMissingComparisons, StringCompat
 
-class PMPackageDescription(ABCObject):
+class PMPackageDescription(ABCObject, StringCompat):
 	"""
 	Description of a package.
 	"""

diff --git a/gentoopm/util.py b/gentoopm/util.py
index 4ad8bb6..38c9ccc 100644
--- a/gentoopm/util.py
+++ b/gentoopm/util.py
@@ -69,3 +69,45 @@ class BoolCompat(object):
 
 	def __nonzero__(self):
 		return self.__bool__()
+
+class StringCompat(StringifiedComparisons):
+	"""
+	A helper class providing objects with compatibility string functions,
+	working on stringified form of objects. In other words, it lets you use
+	objects like strings.
+	"""
+
+	def __hasattr__(self, k):
+		return hasattr(str, k)
+
+	def __getattr__(self, k):
+		return getattr(str(self), k)
+
+	# other useful special methods
+	def __add__(self, other):
+		return str(self) + other
+
+	def __contains__(self, h):
+		# XXX: might be useful to override this
+		return h in str(self)
+
+	def __format__(self, spec):
+		return format(str(self), spec)
+
+	def __getitem__(self, k):
+		return str(self)[k]
+
+	def __getslice__(self, a, b):
+		return str(self)[a:b]
+
+	def __len__(self):
+		return len(str(self))
+
+	def __mul__(self, other):
+		return str(self) * other
+
+	def __rmod__(self, other):
+		return other % str(self)
+
+	def __rmul__(self, other):
+		return other * str(self)



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/
@ 2011-08-12 20:07 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-08-12 20:07 UTC (permalink / raw
  To: gentoo-commits

commit:     a10932ded1ada106719b9265a00673e4114fcaae
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 12 20:07:16 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Aug 12 20:07:16 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=a10932de

Add an attribute-matching package filter.

---
 gentoopm/basepm/filter.py |    2 ++
 gentoopm/filters.py       |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/gentoopm/basepm/filter.py b/gentoopm/basepm/filter.py
index 9c66b6c..0851d84 100644
--- a/gentoopm/basepm/filter.py
+++ b/gentoopm/basepm/filter.py
@@ -81,6 +81,8 @@ class SmartAttrGetter(object):
 			raise KeyError('Invalid keyword argument: %s' % self._k)
 
 class PMTransformedKeywordFilter(PMPackageMatcher):
+	# XXX: transform this to subclass of ..filters.AttributeMatch
+	# hardcode 'foo_bar' -> 'foo.bar' mappings instead of doing magic
 	def __init__(self, key, val):
 		self._getter = SmartAttrGetter(key)
 		self._val = val

diff --git a/gentoopm/filters.py b/gentoopm/filters.py
new file mode 100644
index 0000000..53f1826
--- /dev/null
+++ b/gentoopm/filters.py
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+#	vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from operator import attrgetter
+
+from .basepm.filter import PMPackageMatcher
+
+class AttributeMatch(PMPackageMatcher):
+	"""
+	A filter matching package attributes with values.
+	"""
+
+	def __init__(self, key, val):
+		self._getter = attrgetter(key)
+		self._val = val
+
+	def __call__(self, pkg):
+		return self._val == self._getter(pkg)



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/
@ 2011-08-13 11:33 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-08-13 11:33 UTC (permalink / raw
  To: gentoo-commits

commit:     c891e72202f960c48f287f5250523012a5fbdfeb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 13 11:35:08 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Aug 13 11:35:08 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=c891e722

Fix docs.

---
 gentoopm/basepm/filter.py |    3 ++-
 gentoopm/basepm/pkg.py    |    2 --
 gentoopm/matchers.py      |    4 ++--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/gentoopm/basepm/filter.py b/gentoopm/basepm/filter.py
index 410750f..4cfaa7d 100644
--- a/gentoopm/basepm/filter.py
+++ b/gentoopm/basepm/filter.py
@@ -101,7 +101,8 @@ def transform_keyword_filters(kwargs):
 	"""
 	Transform a number of keyword filters into positional args.
 
-	@param kwargs: keyword arguments, as passed to L{PMPackageSet.filter()}
+	@param kwargs: keyword arguments, as passed
+		to L{basepm.pkgset.PMPackageSet.filter()}
 	@type kwargs: dict
 	@return: positional arguments representing the keyword filters
 	@rtype: iter(L{AttributeMatch})

diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
index a0bf73b..911ee38 100644
--- a/gentoopm/basepm/pkg.py
+++ b/gentoopm/basepm/pkg.py
@@ -119,8 +119,6 @@ class PMPackage(PMAtom, FillMissingComparisons):
 
 		@param args: list of package matchers
 		@type args: list(L{PMPackageMatcher},L{PMAtom})
-		@param kwargs: dict of keyword matchers
-		@type kwargs: dict(string -> L{PMKeywordMatcher})
 		@return: True if package matches
 		@rtype: bool
 		@raise KeyError: when invalid metadata key is referenced in kwargs

diff --git a/gentoopm/matchers.py b/gentoopm/matchers.py
index c3401b1..52a005f 100644
--- a/gentoopm/matchers.py
+++ b/gentoopm/matchers.py
@@ -16,8 +16,8 @@ class RegExp(PMKeywordMatcher):
 		"""
 		Instantiate the regexp matcher.
 
-		@param re: a regular expression to match values against
-		@type re: string/compiled regexp
+		@param regexp: a regular expression to match values against
+		@type regexp: string/compiled regexp
 		"""
 		if not hasattr(regexp, 'match'):
 			regexp = re.compile(regexp)



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/
@ 2011-08-14 22:34 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-08-14 22:34 UTC (permalink / raw
  To: gentoo-commits

commit:     36f21bacfb8d8658d8b47cc4fd4d894743f0ae06
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 14 22:09:54 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Aug 14 22:09:54 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=36f21bac

Rename old StringCompat -> StringCompat2.

---
 gentoopm/basepm/atom.py     |    6 +++---
 gentoopm/basepm/contents.py |    4 ++--
 gentoopm/basepm/depend.py   |    4 ++--
 gentoopm/basepm/pkg.py      |    4 ++--
 gentoopm/util.py            |    2 +-
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/gentoopm/basepm/atom.py b/gentoopm/basepm/atom.py
index f881917..a08975f 100644
--- a/gentoopm/basepm/atom.py
+++ b/gentoopm/basepm/atom.py
@@ -5,10 +5,10 @@
 
 from abc import abstractmethod, abstractproperty
 
-from ..util import ABCObject, StringCompat, StringifiedComparisons, \
+from ..util import ABCObject, StringCompat2, StringifiedComparisons, \
 		FillMissingComparisons
 
-class PMPackageKey(ABCObject, StringCompat, FillMissingComparisons):
+class PMPackageKey(ABCObject, StringCompat2, FillMissingComparisons):
 	"""
 	A base class for a package key (CP/qualified package name).
 	"""
@@ -60,7 +60,7 @@ class PMIncompletePackageKey(PMPackageKey):
 	def __str__(self):
 		return self.package
 
-class PMPackageVersion(ABCObject, StringCompat):
+class PMPackageVersion(ABCObject, StringCompat2):
 	"""
 	A base class for a package version.
 	"""

diff --git a/gentoopm/basepm/contents.py b/gentoopm/basepm/contents.py
index 0c52ebd..fc5ec66 100644
--- a/gentoopm/basepm/contents.py
+++ b/gentoopm/basepm/contents.py
@@ -6,9 +6,9 @@
 import os.path
 from abc import abstractmethod, abstractproperty
 
-from ..util import ABCObject, StringCompat
+from ..util import ABCObject, StringCompat2
 
-class PMContentObj(StringCompat):
+class PMContentObj(StringCompat2):
 	def __init__(self, path):
 		self._path = os.path.normpath(path)
 

diff --git a/gentoopm/basepm/depend.py b/gentoopm/basepm/depend.py
index 3306130..aad29ad 100644
--- a/gentoopm/basepm/depend.py
+++ b/gentoopm/basepm/depend.py
@@ -5,9 +5,9 @@
 
 from abc import abstractmethod, abstractproperty
 
-from ..util import ABCObject, StringCompat
+from ..util import ABCObject, StringCompat2
 
-class PMRequiredUseAtom(StringCompat):
+class PMRequiredUseAtom(StringCompat2):
 	"""
 	An atom for C{REQUIRED_USE} specification.
 	"""

diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
index 0328200..9f17ed9 100644
--- a/gentoopm/basepm/pkg.py
+++ b/gentoopm/basepm/pkg.py
@@ -6,7 +6,7 @@
 import os.path
 from abc import abstractmethod, abstractproperty
 
-from ..util import ABCObject, FillMissingComparisons, StringCompat, EnumTuple
+from ..util import ABCObject, FillMissingComparisons, StringCompat2, EnumTuple
 
 from .atom import PMAtom, PMPackageKey
 from .environ import PMPackageEnvironment
@@ -60,7 +60,7 @@ class PMPackageDescription(ABCObject):
 		"""
 		pass
 
-class PMUseFlag(ABCObject, StringCompat):
+class PMUseFlag(ABCObject, StringCompat2):
 	"""
 	A base class for a USE flag supported by a package.
 	"""

diff --git a/gentoopm/util.py b/gentoopm/util.py
index 7f2376b..ebae29d 100644
--- a/gentoopm/util.py
+++ b/gentoopm/util.py
@@ -68,7 +68,7 @@ class BoolCompat(object):
 	def __nonzero__(self):
 		return self.__bool__()
 
-class StringCompat(StringifiedComparisons):
+class StringCompat2(StringifiedComparisons):
 	"""
 	A helper class providing objects with compatibility string functions,
 	working on stringified form of objects. In other words, it lets you use



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

end of thread, other threads:[~2011-08-14 22:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-13 11:33 [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2011-08-14 22:34 Michał Górny
2011-08-12 20:07 Michał Górny
2011-07-20 16:41 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