123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464 |
- """List of Python standard library modules.
- Sadly, there is no reliable way to tell whether a module is part of the
- standard library except by comparing to a canonical list.
- This is taken from https://github.com/PyCQA/isort/tree/develop/isort/stdlibs,
- which itself is sourced from the Python documentation.
- """
- import sys
- def is_stdlib_module(module: str) -> bool:
- base_module = module.partition(".")[0]
- return base_module in _get_stdlib_modules()
- def _get_stdlib_modules():
- if sys.version_info.major == 3:
- if sys.version_info.minor == 8:
- return stdlib3_8
- if sys.version_info.minor == 9:
- return stdlib3_9
- if sys.version_info.minor >= 10:
- return sys.stdlib_module_names # type: ignore[attr-defined]
- elif sys.version_info.major > 3:
- return sys.stdlib_module_names # type: ignore[attr-defined]
- raise RuntimeError(f"Unsupported Python version: {sys.version_info}")
- stdlib3_8 = {
- "_dummy_thread",
- "_thread",
- "abc",
- "aifc",
- "argparse",
- "array",
- "ast",
- "asynchat",
- "asyncio",
- "asyncore",
- "atexit",
- "audioop",
- "base64",
- "bdb",
- "binascii",
- "binhex",
- "bisect",
- "builtins",
- "bz2",
- "cProfile",
- "calendar",
- "cgi",
- "cgitb",
- "chunk",
- "cmath",
- "cmd",
- "code",
- "codecs",
- "codeop",
- "collections",
- "colorsys",
- "compileall",
- "concurrent",
- "configparser",
- "contextlib",
- "contextvars",
- "copy",
- "copyreg",
- "crypt",
- "csv",
- "ctypes",
- "curses",
- "dataclasses",
- "datetime",
- "dbm",
- "decimal",
- "difflib",
- "dis",
- "distutils",
- "doctest",
- "dummy_threading",
- "email",
- "encodings",
- "ensurepip",
- "enum",
- "errno",
- "faulthandler",
- "fcntl",
- "filecmp",
- "fileinput",
- "fnmatch",
- "formatter",
- "fractions",
- "ftplib",
- "functools",
- "gc",
- "getopt",
- "getpass",
- "gettext",
- "glob",
- "grp",
- "gzip",
- "hashlib",
- "heapq",
- "hmac",
- "html",
- "http",
- "imaplib",
- "imghdr",
- "imp",
- "importlib",
- "inspect",
- "io",
- "ipaddress",
- "itertools",
- "json",
- "keyword",
- "lib2to3",
- "linecache",
- "locale",
- "logging",
- "lzma",
- "mailbox",
- "mailcap",
- "marshal",
- "math",
- "mimetypes",
- "mmap",
- "modulefinder",
- "msilib",
- "msvcrt",
- "multiprocessing",
- "netrc",
- "nis",
- "nntplib",
- "ntpath",
- "numbers",
- "operator",
- "optparse",
- "os",
- "ossaudiodev",
- "parser",
- "pathlib",
- "pdb",
- "pickle",
- "pickletools",
- "pipes",
- "pkgutil",
- "platform",
- "plistlib",
- "poplib",
- "posix",
- "posixpath",
- "pprint",
- "profile",
- "pstats",
- "pty",
- "pwd",
- "py_compile",
- "pyclbr",
- "pydoc",
- "queue",
- "quopri",
- "random",
- "re",
- "readline",
- "reprlib",
- "resource",
- "rlcompleter",
- "runpy",
- "sched",
- "secrets",
- "select",
- "selectors",
- "shelve",
- "shlex",
- "shutil",
- "signal",
- "site",
- "smtpd",
- "smtplib",
- "sndhdr",
- "socket",
- "socketserver",
- "spwd",
- "sqlite3",
- "sre",
- "sre_compile",
- "sre_constants",
- "sre_parse",
- "ssl",
- "stat",
- "statistics",
- "string",
- "stringprep",
- "struct",
- "subprocess",
- "sunau",
- "symbol",
- "symtable",
- "sys",
- "sysconfig",
- "syslog",
- "tabnanny",
- "tarfile",
- "telnetlib",
- "tempfile",
- "termios",
- "test",
- "textwrap",
- "threading",
- "time",
- "timeit",
- "tkinter",
- "token",
- "tokenize",
- "trace",
- "traceback",
- "tracemalloc",
- "tty",
- "turtle",
- "turtledemo",
- "types",
- "typing",
- "unicodedata",
- "unittest",
- "urllib",
- "uu",
- "uuid",
- "venv",
- "warnings",
- "wave",
- "weakref",
- "webbrowser",
- "winreg",
- "winsound",
- "wsgiref",
- "xdrlib",
- "xml",
- "xmlrpc",
- "zipapp",
- "zipfile",
- "zipimport",
- "zlib",
- }
- stdlib3_9 = {
- "_thread",
- "abc",
- "aifc",
- "argparse",
- "array",
- "ast",
- "asynchat",
- "asyncio",
- "asyncore",
- "atexit",
- "audioop",
- "base64",
- "bdb",
- "binascii",
- "binhex",
- "bisect",
- "builtins",
- "bz2",
- "cProfile",
- "calendar",
- "cgi",
- "cgitb",
- "chunk",
- "cmath",
- "cmd",
- "code",
- "codecs",
- "codeop",
- "collections",
- "colorsys",
- "compileall",
- "concurrent",
- "configparser",
- "contextlib",
- "contextvars",
- "copy",
- "copyreg",
- "crypt",
- "csv",
- "ctypes",
- "curses",
- "dataclasses",
- "datetime",
- "dbm",
- "decimal",
- "difflib",
- "dis",
- "distutils",
- "doctest",
- "email",
- "encodings",
- "ensurepip",
- "enum",
- "errno",
- "faulthandler",
- "fcntl",
- "filecmp",
- "fileinput",
- "fnmatch",
- "formatter",
- "fractions",
- "ftplib",
- "functools",
- "gc",
- "getopt",
- "getpass",
- "gettext",
- "glob",
- "graphlib",
- "grp",
- "gzip",
- "hashlib",
- "heapq",
- "hmac",
- "html",
- "http",
- "imaplib",
- "imghdr",
- "imp",
- "importlib",
- "inspect",
- "io",
- "ipaddress",
- "itertools",
- "json",
- "keyword",
- "lib2to3",
- "linecache",
- "locale",
- "logging",
- "lzma",
- "mailbox",
- "mailcap",
- "marshal",
- "math",
- "mimetypes",
- "mmap",
- "modulefinder",
- "msilib",
- "msvcrt",
- "multiprocessing",
- "netrc",
- "nis",
- "nntplib",
- "ntpath",
- "numbers",
- "operator",
- "optparse",
- "os",
- "ossaudiodev",
- "parser",
- "pathlib",
- "pdb",
- "pickle",
- "pickletools",
- "pipes",
- "pkgutil",
- "platform",
- "plistlib",
- "poplib",
- "posix",
- "posixpath",
- "pprint",
- "profile",
- "pstats",
- "pty",
- "pwd",
- "py_compile",
- "pyclbr",
- "pydoc",
- "queue",
- "quopri",
- "random",
- "re",
- "readline",
- "reprlib",
- "resource",
- "rlcompleter",
- "runpy",
- "sched",
- "secrets",
- "select",
- "selectors",
- "shelve",
- "shlex",
- "shutil",
- "signal",
- "site",
- "smtpd",
- "smtplib",
- "sndhdr",
- "socket",
- "socketserver",
- "spwd",
- "sqlite3",
- "sre",
- "sre_compile",
- "sre_constants",
- "sre_parse",
- "ssl",
- "stat",
- "statistics",
- "string",
- "stringprep",
- "struct",
- "subprocess",
- "sunau",
- "symbol",
- "symtable",
- "sys",
- "sysconfig",
- "syslog",
- "tabnanny",
- "tarfile",
- "telnetlib",
- "tempfile",
- "termios",
- "test",
- "textwrap",
- "threading",
- "time",
- "timeit",
- "tkinter",
- "token",
- "tokenize",
- "trace",
- "traceback",
- "tracemalloc",
- "tty",
- "turtle",
- "turtledemo",
- "types",
- "typing",
- "unicodedata",
- "unittest",
- "urllib",
- "uu",
- "uuid",
- "venv",
- "warnings",
- "wave",
- "weakref",
- "webbrowser",
- "winreg",
- "winsound",
- "wsgiref",
- "xdrlib",
- "xml",
- "xmlrpc",
- "zipapp",
- "zipfile",
- "zipimport",
- "zlib",
- "zoneinfo",
- }
|