https://github.com/python/cpython/commit/06f8d7aa9f448128d6eb22017e38eb01ff14d190
commit: 06f8d7aa9f448128d6eb22017e38eb01ff14d190
branch: main
author: sobolevn <[email protected]>
committer: pablogsal <[email protected]>
date: 2025-09-04T00:27:14+01:00
summary:

gh-138281: Remove unused `topsort` and bump minimal version in `peg_generator` 
(#138487)

files:
M Tools/peg_generator/pegen/__main__.py
M Tools/peg_generator/pegen/sccutils.py

diff --git a/Tools/peg_generator/pegen/__main__.py 
b/Tools/peg_generator/pegen/__main__.py
index a6bc627d47cbbb..7a82ad861b4cb5 100755
--- a/Tools/peg_generator/pegen/__main__.py
+++ b/Tools/peg_generator/pegen/__main__.py
@@ -187,7 +187,7 @@ def main() -> None:
 
 
 if __name__ == "__main__":
-    if sys.version_info < (3, 8):  # noqa: UP036
-        print("ERROR: using pegen requires at least Python 3.8!", 
file=sys.stderr)
+    if sys.version_info < (3, 10):  # noqa: UP036
+        print("ERROR: using pegen requires at least Python 3.10!", 
file=sys.stderr)
         sys.exit(1)
     main()
diff --git a/Tools/peg_generator/pegen/sccutils.py 
b/Tools/peg_generator/pegen/sccutils.py
index 51f618a14d936b..db30fc283465b8 100644
--- a/Tools/peg_generator/pegen/sccutils.py
+++ b/Tools/peg_generator/pegen/sccutils.py
@@ -49,54 +49,6 @@ def dfs(v: str) -> Iterator[set[str]]:
             yield from dfs(v)
 
 
-def topsort(
-    data: dict[Set[str], set[Set[str]]]
-) -> Iterable[Set[Set[str]]]:
-    """Topological sort.
-
-    Args:
-      data: A map from SCCs (represented as frozen sets of strings) to
-            sets of SCCs, its dependencies.  NOTE: This data structure
-            is modified in place -- for normalization purposes,
-            self-dependencies are removed and entries representing
-            orphans are added.
-
-    Returns:
-      An iterator yielding sets of SCCs that have an equivalent
-      ordering.  NOTE: The algorithm doesn't care about the internal
-      structure of SCCs.
-
-    Example:
-      Suppose the input has the following structure:
-
-        {A: {B, C}, B: {D}, C: {D}}
-
-      This is normalized to:
-
-        {A: {B, C}, B: {D}, C: {D}, D: {}}
-
-      The algorithm will yield the following values:
-
-        {D}
-        {B, C}
-        {A}
-
-    From 
https://code.activestate.com/recipes/577413-topological-sort/history/1/.
-    """
-    # TODO: Use a faster algorithm?
-    for k, v in data.items():
-        v.discard(k)  # Ignore self dependencies.
-    for item in set.union(*data.values()) - set(data.keys()):
-        data[item] = set()
-    while True:
-        ready = {item for item, dep in data.items() if not dep}
-        if not ready:
-            break
-        yield ready
-        data = {item: (dep - ready) for item, dep in data.items() if item not 
in ready}
-    assert not data, f"A cyclic dependency exists amongst {data}"
-
-
 def find_cycles_in_scc(
     graph: dict[str, Set[str]], scc: Set[str], start: str
 ) -> Iterable[list[str]]:

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to