summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-09-24 11:13:14 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-24 11:13:14 -0700
commit64e7f6e3364cb5eceb9ccc1a1d915fe1f5cb810d (patch)
tree5329fc825958e7100b54e90bfac9c3a16b2959ac
parentportageq best_visible: use match-all-cpv-only (diff)
downloadportage-64e7f6e3364cb5eceb9ccc1a1d915fe1f5cb810d.tar.gz
portage-64e7f6e3364cb5eceb9ccc1a1d915fe1f5cb810d.tar.bz2
portage-64e7f6e3364cb5eceb9ccc1a1d915fe1f5cb810d.zip
portdbapi: combine gvisible and visible methods
There's no need to have separate methods, and this allows us to avoid using separate aux_get calls in each method.
-rw-r--r--pym/portage/dbapi/porttree.py49
1 files changed, 20 insertions, 29 deletions
diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py
index ac583758a..ba0da34ab 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -875,18 +875,18 @@ class portdbapi(dbapi):
elif level == "match-visible":
# find all visible matches
if mydep.repo is not None or len(self.porttrees) == 1:
- myval = self.gvisible(self.visible(
+ myval = self.visible(
self.xmatch("match-all", mydep),
- mytree=mytree), mytree=mytree)
+ mytree=mytree)
else:
myval = set()
# We iterate over self.porttrees, since it's common to
# tweak this attribute in order to adjust match behavior.
for tree in self.porttrees:
repo = self.repositories.get_name_for_location(tree)
- myval.update(self.gvisible(self.visible(
+ myval.update(self.visible(
self.xmatch("match-all", mydep.with_repo(repo)),
- mytree=tree), mytree=tree))
+ mytree=tree))
myval = list(myval)
if len(myval) > 1:
self._cpv_sort_ascending(myval)
@@ -1016,32 +1016,18 @@ class portdbapi(dbapi):
def match(self, mydep, use_cache=1):
return self.xmatch("match-visible", mydep)
- def visible(self, mylist, mytree=None):
- """two functions in one. Accepts a list of cpv values and uses the package.mask *and*
- packages file to remove invisible entries, returning remaining items. This function assumes
- that all entries in mylist have the same category and package name."""
- if not mylist:
- return []
-
- db_keys = ["repository", "SLOT"]
- visible = []
- getMaskAtom = self.settings._getMaskAtom
- for cpv in mylist:
- try:
- metadata = dict(zip(db_keys,
- self.aux_get(cpv, db_keys, mytree=mytree)))
- except KeyError:
- # masked by corruption
- continue
- if not metadata["SLOT"]:
- continue
- if getMaskAtom(cpv, metadata):
- continue
- visible.append(cpv)
- return visible
-
def gvisible(self, mylist, mytree=None):
- "strip out group-masked (not in current group) entries"
+ warnings.warn("The 'gvisible' method of "
+ "portage.dbapi.porttree.portdbapi "
+ "is deprecated, and the functionality "
+ "has been combined into the 'visible' method",
+ DeprecationWarning, stacklevel=2)
+ return self.visible(mylist, mytree=mytree)
+
+ def visible(self, mylist, mytree=None):
+ """
+ Return a new list containing only visible packages.
+ """
if mylist is None:
return []
@@ -1051,6 +1037,7 @@ class portdbapi(dbapi):
local_config = self.settings.local_config
chost = self.settings.get('CHOST', '')
accept_chost = self.settings._accept_chost
+ getMaskAtom = self.settings._getMaskAtom
for mycpv in mylist:
metadata.clear()
try:
@@ -1069,6 +1056,10 @@ class portdbapi(dbapi):
continue
if _eapi_is_deprecated(eapi):
continue
+ if not metadata["SLOT"]:
+ continue
+ if getMaskAtom(mycpv, metadata):
+ continue
if self.settings._getMissingKeywords(mycpv, metadata):
continue
if local_config: