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

drop unicode mode from atom regexes

Unicode has never been allowed in PMS

Bug: https://bugs.gentoo.org/435934
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/_emerge/is_valid_package_atom.py |  2 +-
 lib/portage/dbapi/__init__.py        |  2 +-
 lib/portage/dep/__init__.py          | 10 +++++-----
 lib/portage/tests/dep/test_atom.py   |  1 +
 lib/portage/versions.py              |  6 +++---
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/lib/_emerge/is_valid_package_atom.py 
b/lib/_emerge/is_valid_package_atom.py
index 0db8275c7c..9b8c8ae52d 100644
--- a/lib/_emerge/is_valid_package_atom.py
+++ b/lib/_emerge/is_valid_package_atom.py
@@ -7,7 +7,7 @@ from portage.dep import isvalidatom
 
 def insert_category_into_atom(atom, category):
     # Handle '*' character for "extended syntax" wildcard support.
-    alphanum = re.search(r"[\*\w]", atom, re.UNICODE)
+    alphanum = re.search(r"[\*\w]", atom, re.ASCII)
     if alphanum:
         ret = atom[: alphanum.start()] + f"{category}/" + 
atom[alphanum.start() :]
     else:

diff --git a/lib/portage/dbapi/__init__.py b/lib/portage/dbapi/__init__.py
index 9105227c77..e3522127ba 100644
--- a/lib/portage/dbapi/__init__.py
+++ b/lib/portage/dbapi/__init__.py
@@ -36,7 +36,7 @@ from _emerge.Package import Package
 
 
 class dbapi:
-    _category_re = re.compile(r"^\w[-.+\w]*$", re.UNICODE)
+    _category_re = re.compile(r"^\w[-.+\w]*$", re.ASCII)
     _categories: Optional[tuple[str, ...]] = None
     _use_mutable = False
     _known_keys = frozenset(auxdbkeys)

diff --git a/lib/portage/dep/__init__.py b/lib/portage/dep/__init__.py
index f8a238cd30..98999609b4 100644
--- a/lib/portage/dep/__init__.py
+++ b/lib/portage/dep/__init__.py
@@ -75,7 +75,7 @@ _op = r"([=~]|[><]=?)"
 
 _repo_separator = "::"
 _repo_name = r"[\w][\w-]*"
-_repo_name_re = re.compile("^" + _repo_name + "$", re.UNICODE)
+_repo_name_re = re.compile("^" + _repo_name + "$", re.ASCII)
 _repo = r"(?:" + _repo_separator + "(" + _repo_name + ")" + ")?"
 
 _extended_cat = r"[\w+*][\w+.*-]*"
@@ -94,7 +94,7 @@ def _get_slot_dep_re(eapi_attrs: portage.eapi._eapi_attrs) -> 
re.Pattern:
     else:
         slot_re = _slot
 
-    slot_re = re.compile("^" + slot_re + "$", re.VERBOSE | re.UNICODE)
+    slot_re = re.compile("^" + slot_re + "$", re.VERBOSE | re.ASCII)
 
     _slot_dep_re_cache[cache_key] = slot_re
     return slot_re
@@ -144,7 +144,7 @@ def _get_atom_re(eapi_attrs: portage.eapi._eapi_attrs) -> 
re.Pattern:
         + ")("
         + _use
         + ")?\\Z",
-        re.VERBOSE | re.UNICODE,
+        re.VERBOSE | re.ASCII,
     )
     return _atom_re
 
@@ -179,7 +179,7 @@ def _get_atom_wildcard_re(eapi_attrs):
         + r"(?P<repo>"
         + _repo_name
         + r"))?\Z",
-        re.UNICODE,
+        re.ASCII,
     )
     return _atom_wildcard_re
 
@@ -1929,7 +1929,7 @@ def extended_cp_match(extended_cp, other_cp):
     extended_cp_re = _extended_cp_re_cache.get(extended_cp)
     if extended_cp_re is None:
         extended_cp_re = re.compile(
-            "^" + re.escape(extended_cp).replace(r"\*", "[^/]*") + "$", 
re.UNICODE
+            "^" + re.escape(extended_cp).replace(r"\*", "[^/]*") + "$", 
re.ASCII
         )
         _extended_cp_re_cache[extended_cp] = extended_cp_re
     return extended_cp_re.match(other_cp) is not None

diff --git a/lib/portage/tests/dep/test_atom.py 
b/lib/portage/tests/dep/test_atom.py
index 3cc30b1dae..2b29f20ccb 100644
--- a/lib/portage/tests/dep/test_atom.py
+++ b/lib/portage/tests/dep/test_atom.py
@@ -153,6 +153,7 @@ class TestAtom(TestCase):
         tests_xfail = (
             (Atom("sys-apps/portage"), False, False),
             ("cat/pkg\n", False, False),
+            ("cat/Ҙ", False, False),
             ("+cat/pkg", False, False),
             ("-cat/pkg", False, False),
             (".cat/pkg", False, False),

diff --git a/lib/portage/versions.py b/lib/portage/versions.py
index e7c09fc978..de8f801da9 100644
--- a/lib/portage/versions.py
+++ b/lib/portage/versions.py
@@ -90,7 +90,7 @@ def _get_slot_re(eapi_attrs: _eapi_attrs) -> typing.Pattern:
     else:
         slot_re = _slot
 
-    slot_re = re.compile("^" + slot_re + "$", re.VERBOSE | re.UNICODE)
+    slot_re = re.compile("^" + slot_re + "$", re.VERBOSE | re.ASCII)
 
     _slot_re_cache[cache_key] = slot_re
     return slot_re
@@ -104,7 +104,7 @@ def _get_pv_re(eapi_attrs: _eapi_attrs) -> typing.Pattern:
     if _pv_re is not None:
         return _pv_re
 
-    _pv_re = re.compile(r"^" + _pv + r"$", re.VERBOSE | re.UNICODE)
+    _pv_re = re.compile(r"^" + _pv + r"$", re.VERBOSE | re.ASCII)
 
     return _pv_re
 
@@ -315,7 +315,7 @@ def _pkgsplit(mypkg: str, eapi: Any = None) -> 
Optional[tuple[str, str, str]]:
     return (m.group("pn"), m.group("ver"), rev)
 
 
-_cat_re = re.compile(f"^{_cat}$", re.UNICODE)
+_cat_re = re.compile(f"^{_cat}$", re.ASCII)
 _missing_cat = "null"
 
 

Reply via email to