put main code in a private func() to remove near duplicated code
authorBrian Dolbec <brian.dolbec@gmail.com>
Tue, 1 Feb 2011 00:12:40 +0000 (16:12 -0800)
committerZac Medico <zmedico@gentoo.org>
Tue, 1 Feb 2011 00:17:42 +0000 (16:17 -0800)
pym/portage/package/ebuild/_config/MaskManager.py

index be7a21274e33f285dbf64c8bc1465303120daecf..c438eb7da2f8931f3f87da905c44e778601fa21f 100644 (file)
@@ -112,7 +112,7 @@ class MaskManager(object):
                        for k, v in d.items():
                                d[k] = tuple(v)
 
-       def getMaskAtom(self, cpv, slot, repo):
+       def _getMaskAtom(self, cpv, slot, repo, unmask_atoms=None):
                """
                Take a package and return a matching package.mask atom, or None if no
                such atom exists or it has been cancelled by package.unmask. PROVIDE
@@ -122,6 +122,10 @@ class MaskManager(object):
                @type cpv: String
                @param slot: The package's slot
                @type slot: String
+               @param repo: The package's repository [optional]
+               @type repo: String
+               @param unmask_atoms: if desired pass in self._punmaskdict.get(cp)
+               @type unmask_atoms: list
                @rtype: String
                @return: A matching atom string or None if one is not found.
                """
@@ -133,7 +137,6 @@ class MaskManager(object):
                        if repo:
                                pkg = "".join((pkg, _repo_separator, repo))
                        pkg_list = [pkg]
-                       unmask_atoms = self._punmaskdict.get(cp)
                        for x in mask_atoms:
                                if not match_from_list(x, pkg_list):
                                        continue
@@ -144,6 +147,27 @@ class MaskManager(object):
                                return x
                return None
 
+
+       def getMaskAtom(self, cpv, slot, repo):
+               """
+               Take a package and return a matching package.mask atom, or None if no
+               such atom exists or it has been cancelled by package.unmask. PROVIDE
+               is not checked, so atoms will not be found for old-style virtuals.
+
+               @param cpv: The package name
+               @type cpv: String
+               @param slot: The package's slot
+               @type slot: String
+               @param repo: The package's repository [optional]
+               @type repo: String
+               @rtype: String
+               @return: A matching atom string or None if one is not found.
+               """
+
+               cp = cpv_getkey(cpv)
+               return self._getMaskAtom(cpv, slot, repo, self._punmaskdict.get(cp))
+
+
        def getRawMaskAtom(self, cpv, slot, repo):
                """
                Take a package and return a matching package.mask atom, or None if no
@@ -155,19 +179,10 @@ class MaskManager(object):
                @type cpv: String
                @param slot: The package's slot
                @type slot: String
+               @param repo: The package's repository [optional]
+               @type repo: String
                @rtype: String
                @return: A matching atom string or None if one is not found.
                """
 
-               cp = cpv_getkey(cpv)
-               mask_atoms = self._pmaskdict_raw.get(cp)
-               if mask_atoms:
-                       pkg = "".join((cpv, _slot_separator, slot))
-                       if repo:
-                               pkg = "".join((pkg, _repo_separator, repo))
-                       pkg_list = [pkg]
-                       for x in mask_atoms:
-                               if not match_from_list(x, pkg_list):
-                                       continue
-                               return x
-               return None
+               return self._getMaskAtom(cpv, slot, repo)