| """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 == 6: | |
| return stdlib3_6 | |
| if sys.version_info.minor == 7: | |
| return stdlib3_7 | |
| 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_6 = { | |
| "_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", | |
| "copy", | |
| "copyreg", | |
| "crypt", | |
| "csv", | |
| "ctypes", | |
| "curses", | |
| "datetime", | |
| "dbm", | |
| "decimal", | |
| "difflib", | |
| "dis", | |
| "distutils", | |
| "doctest", | |
| "dummy_threading", | |
| "email", | |
| "encodings", | |
| "ensurepip", | |
| "enum", | |
| "errno", | |
| "faulthandler", | |
| "fcntl", | |
| "filecmp", | |
| "fileinput", | |
| "fnmatch", | |
| "formatter", | |
| "fpectl", | |
| "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", | |
| "macpath", | |
| "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_7 = { | |
| "_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", | |
| "macpath", | |
| "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_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", | |
| } |