summaryrefslogtreecommitdiffstats
path: root/pym/portage/dep/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-06-10 15:37:06 -0700
committerZac Medico <zmedico@gentoo.org>2012-06-10 15:37:06 -0700
commit78e30816903b489106885232c55a2717b51986f8 (patch)
treef6b0948a5a6b64c4855facca27ce3e33073503d2 /pym/portage/dep/__init__.py
parent2a5d810445fa819ce64218b17dc70b3228cd61c5 (diff)
downloadportage-78e30816903b489106885232c55a2717b51986f8.tar.gz
portage-78e30816903b489106885232c55a2717b51986f8.tar.bz2
portage-78e30816903b489106885232c55a2717b51986f8.zip
_get_atom_wildcard_re: use _eapi_attrs
Diffstat (limited to 'pym/portage/dep/__init__.py')
-rw-r--r--pym/portage/dep/__init__.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py
index 27b90b90a..5e747a1f9 100644
--- a/pym/portage/dep/__init__.py
+++ b/pym/portage/dep/__init__.py
@@ -108,6 +108,27 @@ def _get_atom_re(eapi_attrs):
_atom_re_cache[cache_key] = atom_re
return atom_re
+_atom_wildcard_re_cache = {}
+
+def _get_atom_wildcard_re(eapi_attrs):
+ cache_key = eapi_attrs.dots_in_PN
+ atom_re = _atom_wildcard_re_cache.get(cache_key)
+ if atom_re is not None:
+ return atom_re
+
+ if eapi_attrs.dots_in_PN:
+ pkg_re = r'[\w+*][\w+.*-]*?'
+ else:
+ pkg_re = r'[\w+*][\w+*-]*?'
+
+ atom_re = re.compile(r'(?P<simple>(' +
+ _extended_cat + r')/(' + pkg_re +
+ r'))(:(?P<slot>' + _slot + r'))?(' +
+ _repo_separator + r'(?P<repo>' + _repo_name + r'))?$')
+
+ _atom_wildcard_re_cache[cache_key] = atom_re
+ return atom_re
+
_usedep_re_cache = {}
def _get_usedep_re(eapi_attrs):
@@ -1199,7 +1220,7 @@ class Atom(_atom_base):
extended_syntax = False
if m is None:
if allow_wildcard:
- m = _get_atom_wildcard_re(eapi).match(s)
+ m = _get_atom_wildcard_re(eapi_attrs).match(s)
if m is None:
raise InvalidAtom(self)
op = None
@@ -1755,21 +1776,6 @@ _repo_name = r'[\w][\w-]*'
_repo = r'(?:' + _repo_separator + '(' + _repo_name + ')' + ')?'
_extended_cat = r'[\w+*][\w+.*-]*'
-_extended_pkg = {
- "dots_disallowed_in_PN": r'[\w+*][\w+*-]*?',
- "dots_allowed_in_PN": r'[\w+*][\w+.*-]*?',
-}
-
-_atom_wildcard_re = {
- "dots_disallowed_in_PN": re.compile('(?P<simple>(' + _extended_cat + ')/(' + _extended_pkg['dots_disallowed_in_PN'] + '))(:(?P<slot>' + _slot + '))?(' + _repo_separator + '(?P<repo>' + _repo_name + '))?$'),
- "dots_allowed_in_PN": re.compile('(?P<simple>(' + _extended_cat + ')/(' + _extended_pkg['dots_allowed_in_PN'] + '))(:(?P<slot>' + _slot + '))?(' + _repo_separator + '(?P<repo>' + _repo_name + '))?$'),
-}
-
-def _get_atom_wildcard_re(eapi):
- if eapi is None or eapi_allows_dots_in_PN(eapi):
- return _atom_wildcard_re["dots_allowed_in_PN"]
- else:
- return _atom_wildcard_re["dots_disallowed_in_PN"]
def isvalidatom(atom, allow_blockers=False, allow_wildcard=False, allow_repo=False):
"""