| #!/usr/bin/env python3 |
| import re |
| |
| from stdlibs import py38, py39, py310, py311, py312, py313, py314 |
| |
| URL = "https://docs.python.org/{}/objects.inv" |
| PATH = "isort/stdlibs/py{}.py" |
| VERSIONS = [ |
| py38, |
| py39, |
| py310, |
| py311, |
| py312, |
| py313, |
| py314, |
| ] |
| |
| DOCSTRING = """ |
| File contains the standard library of Python {}. |
| |
| DO NOT EDIT. If the standard library changes, a new list should be created |
| using the mkstdlibs.py script. |
| """ |
| |
| |
| class FakeConfig: |
| intersphinx_timeout = None |
| tls_verify = True |
| user_agent = "" |
| tls_cacerts = None |
| |
| |
| class FakeApp: |
| srcdir = "" |
| config = FakeConfig() |
| |
| |
| for version_module in VERSIONS: |
| version_match = re.match( |
| r"^stdlibs\.py(?P<major>\d)(?P<minor>\d+)$", |
| version_module.__name__, |
| ) |
| version_info = (version_match.groupdict()["major"], version_match.groupdict()["minor"]) |
| |
| # Any modules we want to enforce across Python versions stdlib can be included in set init |
| modules = {"_ast", "posixpath", "ntpath", "sre_constants", "sre_parse", "sre_compile", "sre"} |
| modules.update( |
| { |
| module_name |
| for module_name in version_module.module_names |
| if not module_name.startswith("_") |
| } |
| ) |
| |
| path = PATH.format("".join(version_info)) |
| with open(path, "w") as stdlib_file: |
| docstring = DOCSTRING.format(".".join(version_info)) |
| stdlib_file.write(f'"""{docstring}"""\n\n') |
| stdlib_file.write("stdlib = {\n") |
| for module in sorted(modules): |
| stdlib_file.write(f' "{module}",\n') |
| stdlib_file.write("}\n") |