Spaces:
Running
Running
"""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", | |
} | |