* [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-07-20 16:41 [gentoo-commits] proj/gentoopm:master commit in: gentoopm/, gentoopm/basepm/ Michał Górny
-- strict thread matches above, loose matches on Subject: below --
2011-08-12 20:07 Michał Górny
2011-08-13 11:33 Michał Górny
2011-08-14 22:34 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