Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/portagepm/, gentoopm/pkgcorepm/, gentoopm/paludispm/, gentoopm/basepm/
Date: Sat, 30 Jul 2011 18:39:16
Message-Id: 1e63873f70f222a087ebde05e9e75e35b2c5b59e.mgorny@gentoo
1 commit: 1e63873f70f222a087ebde05e9e75e35b2c5b59e
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sat Jul 30 18:40:04 2011 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Sat Jul 30 18:40:04 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=1e63873f
7
8 Support getting hidden USEflags explicitly.
9
10 ---
11 gentoopm/basepm/pkg.py | 5 ++++-
12 gentoopm/paludispm/pkg.py | 28 ++++++++++++++++++++--------
13 gentoopm/pkgcorepm/pkg.py | 7 +++++++
14 gentoopm/portagepm/pkg.py | 7 +++++++
15 4 files changed, 38 insertions(+), 9 deletions(-)
16
17 diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
18 index b2e7581..1442a5b 100644
19 --- a/gentoopm/basepm/pkg.py
20 +++ b/gentoopm/basepm/pkg.py
21 @@ -307,7 +307,10 @@ class PMPackage(PMAtom, FillMissingComparisons):
22 @abstractproperty
23 def use(self):
24 """
25 - Get the list of USE flags applying to the ebuild.
26 + Get the list of USE flags applying to the ebuild. Iterating over the
27 + list should return only the explicitly listed flags (C{IUSE}), though
28 + it is also possible to explicitly get other flags (using indexing)
29 + applying to the ebuild.
30
31 @type: L{SpaceSepFrozenSet}(L{PMUseFlag})
32 """
33
34 diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
35 index 7a9b244..8e77b9d 100644
36 --- a/gentoopm/paludispm/pkg.py
37 +++ b/gentoopm/paludispm/pkg.py
38 @@ -54,14 +54,26 @@ class PaludisChoice(PMUseFlag):
39
40 class PaludisChoiceSet(SpaceSepFrozenSet):
41 def __new__(self, choices):
42 - l = []
43 - for group in choices:
44 - if group.raw_name == 'build_options': # paludis specific
45 - continue
46 - for c in group:
47 - if c.explicitly_listed:
48 - l.append(PaludisChoice(c))
49 - return SpaceSepFrozenSet.__new__(self, l)
50 + def _get_iuse():
51 + for group in choices:
52 + if group.raw_name == 'build_options': # paludis specific
53 + continue
54 + for c in group:
55 + if c.explicitly_listed:
56 + yield PaludisChoice(c)
57 +
58 + self._choices = choices
59 + return SpaceSepFrozenSet.__new__(self, _get_iuse())
60 +
61 + def __getitem__(self, k):
62 + try:
63 + return SpaceSepFrozenSet.__getitem__(self, k)
64 + except KeyError:
65 + for group in self._choices:
66 + for c in group:
67 + if str(c.name_with_prefix) == k:
68 + return PaludisChoice(c)
69 + raise
70
71 class PaludisID(PMPackage, PaludisAtom):
72 def __init__(self, pkg, env):
73
74 diff --git a/gentoopm/pkgcorepm/pkg.py b/gentoopm/pkgcorepm/pkg.py
75 index 757bc90..f9281c2 100644
76 --- a/gentoopm/pkgcorepm/pkg.py
77 +++ b/gentoopm/pkgcorepm/pkg.py
78 @@ -63,6 +63,13 @@ class PkgCoreUseSet(SpaceSepFrozenSet):
79 self._use = use
80 return SpaceSepFrozenSet.__new__(self, _get_iuse())
81
82 + def __getitem__(self, k):
83 + try:
84 + return SpaceSepFrozenSet.__getitem__(self, k)
85 + except KeyError:
86 + # XXX, incorrect flags?
87 + return PkgCoreUseFlag(k, self._use)
88 +
89 class PkgCorePackage(PMPackage, PkgCoreAtom):
90 def __init__(self, pkg, repo_index = 0):
91 self._pkg = pkg
92
93 diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py
94 index 9ced5ec..9ba5a35 100644
95 --- a/gentoopm/portagepm/pkg.py
96 +++ b/gentoopm/portagepm/pkg.py
97 @@ -74,6 +74,13 @@ class PortageUseSet(SpaceSepFrozenSet):
98 self._use = use
99 return SpaceSepFrozenSet.__new__(self, _get_iuse())
100
101 + def __getitem__(self, k):
102 + try:
103 + return SpaceSepFrozenSet.__getitem__(self, k)
104 + except KeyError:
105 + # XXX, incorrect flags?
106 + return PortageUseFlag(k, self._use)
107 +
108 class PortageDBCPV(PMPackage, CompletePortageAtom):
109 def __init__(self, cpv, dbapi):
110 self._cpv = cpv