diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-06-10 15:37:06 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-06-10 15:37:06 -0700 |
commit | 78e30816903b489106885232c55a2717b51986f8 (patch) | |
tree | f6b0948a5a6b64c4855facca27ce3e33073503d2 | |
parent | 2a5d810445fa819ce64218b17dc70b3228cd61c5 (diff) | |
download | portage-78e30816903b489106885232c55a2717b51986f8.tar.gz portage-78e30816903b489106885232c55a2717b51986f8.tar.bz2 portage-78e30816903b489106885232c55a2717b51986f8.zip |
_get_atom_wildcard_re: use _eapi_attrs
-rw-r--r-- | pym/portage/dep/__init__.py | 38 |
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): """ |