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]