commit:     d421fe7cc5a3da6a8ffc75a4c8b3929a80cb402f
Author:     Jannik Glückert <jannik.glueckert <AT> gmail <DOT> com>
AuthorDate: Sat Jun 14 18:43:58 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Oct 20 17:31:52 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=d421fe7c

portage.dep.Atom: unify normal and wildcard re group usage

Signed-off-by: Jannik Glückert <jannik.glueckert <AT> gmail.com>
Part-of: https://github.com/gentoo/portage/pull/1445
Signed-off-by: Sam James <sam <AT> gentoo.org>

 lib/portage/dep/__init__.py | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/lib/portage/dep/__init__.py b/lib/portage/dep/__init__.py
index aedc2606a2..ecd1b522cf 100644
--- a/lib/portage/dep/__init__.py
+++ b/lib/portage/dep/__init__.py
@@ -25,6 +25,7 @@ __all__ = [
     "remove_slot",
     "strip_empty",
     "use_reduce",
+    "_repo_name_re",
     "_repo_separator",
     "_slot_separator",
 ]
@@ -75,8 +76,7 @@ _op = r"([=~]|[><]=?)"
 
 _repo_separator = "::"
 _repo_name = r"[\w][\w-]*"
-_repo_name_re = re.compile("^" + _repo_name + "$", re.ASCII)
-_repo = r"(?:" + _repo_separator + "(" + _repo_name + ")" + ")?"
+_repo_name_re = re.compile(rf"^{_repo_name}\Z", re.ASCII)
 
 _extended_cat = r"[\w+*][\w+.*-]*"
 
@@ -136,9 +136,13 @@ def _get_atom_re(eapi_attrs: portage.eapi._eapi_attrs) -> 
re.Pattern:
                 (?P<simple>{cp_re})
             )
             (?:
-                {_slot_separator}{_slot_loose}
+                {_slot_separator}
+                (?P<slot>{_slot_loose})
+            )?
+            (?:
+                {_repo_separator}
+                (?P<repo>{_repo_name})
             )?
-            {_repo}
         )
         (?P<usedeps>{_use})?
         \Z
@@ -180,7 +184,7 @@ def _get_atom_wildcard_re(eapi_attrs):
             )
         )
         (?:
-            :
+            {_slot_separator}
             (?P<slot>{_slot_loose})
         )?
         (?:
@@ -1563,8 +1567,8 @@ class Atom(str):
             op = m_group(base + 1)
             cpv = m_group(base + 2)
             cp = m_group(base + 3)
-            slot = m_group(atom_re.groups - 2)
-            repo = m_group(atom_re.groups - 1)
+            slot = m_group("slot")
+            repo = m_group("repo")
             use_str = m_group("usedeps")
             version = m_group(base + 4)
             if version is not None:
@@ -1588,8 +1592,8 @@ class Atom(str):
             m_group = m.group
             cpv = m_group(base + 1)
             cp = m_group(base + 2)
-            slot = m_group(atom_re.groups - 2)
-            repo = m_group(atom_re.groups - 1)
+            slot = m_group("slot")
+            repo = m_group("repo")
             use_str = m_group("usedeps")
             if m_group(base + 3) is not None:
                 raise InvalidAtom(self)
@@ -1597,8 +1601,8 @@ class Atom(str):
             op = None
             m_group = m.group
             cpv = cp = m_group(atom_re.groupindex["simple"] + 1)
-            slot = m_group(atom_re.groups - 2)
-            repo = m_group(atom_re.groups - 1)
+            slot = m_group("slot")
+            repo = m_group("repo")
             use_str = m_group("usedeps")
             if m_group(atom_re.groupindex["simple"] + 2) is not None:
                 raise InvalidAtom(self)

Reply via email to