]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-42955: Remove sub-packages from sys.stdlib_module_names (GH-24353)
authorVictor Stinner <vstinner@python.org>
Wed, 27 Jan 2021 23:03:23 +0000 (00:03 +0100)
committerGitHub <noreply@github.com>
Wed, 27 Jan 2021 23:03:23 +0000 (00:03 +0100)
Doc/library/sys.rst
Python/stdlib_module_names.h
Tools/scripts/generate_stdlib_module_names.py

index 0219ae8ceb65fe6feaab2bf1f08461a1da013e84..80b30d01f91aac87889b724df60f67a6e4de47e3 100644 (file)
@@ -1575,9 +1575,10 @@ always available.
    All module kinds are listed: pure Python, built-in, frozen and extension
    modules. Test modules are excluded.
 
-   For packages, only sub-packages are listed, not sub-modules. For example,
-   ``concurrent`` package and ``concurrent.futures`` sub-package are listed,
-   but not ``concurrent.futures.base`` sub-module.
+   For packages, only the main package is listed: sub-packages and sub-modules
+   are not listed. For example, the ``email`` package is listed, but the
+   ``email.mime`` sub-package and the ``email.message`` sub-module are not
+   listed.
 
    See also the :attr:`sys.builtin_module_names` list.
 
index 8c430821d64b87bc5360e126d6b599143171bffc..01aa6753e42015cba2b56e04c85ddb17d8d58b64 100644 (file)
@@ -117,7 +117,6 @@ static const char* _Py_stdlib_module_names[] = {
 "colorsys",
 "compileall",
 "concurrent",
-"concurrent.futures",
 "configparser",
 "contextlib",
 "contextvars",
@@ -126,7 +125,6 @@ static const char* _Py_stdlib_module_names[] = {
 "crypt",
 "csv",
 "ctypes",
-"ctypes.macholib",
 "curses",
 "dataclasses",
 "datetime",
@@ -135,13 +133,10 @@ static const char* _Py_stdlib_module_names[] = {
 "difflib",
 "dis",
 "distutils",
-"distutils.command",
 "doctest",
 "email",
-"email.mime",
 "encodings",
 "ensurepip",
-"ensurepip._bundled",
 "enum",
 "errno",
 "faulthandler",
@@ -178,8 +173,6 @@ static const char* _Py_stdlib_module_names[] = {
 "json",
 "keyword",
 "lib2to3",
-"lib2to3.fixes",
-"lib2to3.pgen2",
 "linecache",
 "locale",
 "logging",
@@ -194,7 +187,6 @@ static const char* _Py_stdlib_module_names[] = {
 "msilib",
 "msvcrt",
 "multiprocessing",
-"multiprocessing.dummy",
 "netrc",
 "nis",
 "nntplib",
@@ -304,10 +296,6 @@ static const char* _Py_stdlib_module_names[] = {
 "wsgiref",
 "xdrlib",
 "xml",
-"xml.dom",
-"xml.etree",
-"xml.parsers",
-"xml.sax",
 "xmlrpc",
 "zipapp",
 "zipfile",
index 02647691fc4d675786c1a527c1c65a401213f85c..379b262e822db759c45bf74d998e4d06f6a68d63 100644 (file)
@@ -57,29 +57,17 @@ def list_python_modules(names):
         names.add(name)
 
 
-def _list_sub_packages(path, names, parent=None):
-    for name in os.listdir(path):
+# Packages in Lib/
+def list_packages(names):
+    for name in os.listdir(STDLIB_PATH):
         if name in IGNORE:
             continue
-        package_path = os.path.join(path, name)
+        package_path = os.path.join(STDLIB_PATH, name)
         if not os.path.isdir(package_path):
             continue
-        if not any(package_file.endswith(".py")
-                   for package_file in os.listdir(package_path)):
-            continue
-        if parent:
-            qualname = f"{parent}.{name}"
-        else:
-            qualname = name
-        if qualname in IGNORE:
-            continue
-        names.add(qualname)
-        _list_sub_packages(package_path, names, qualname)
-
-
-# Packages and sub-packages
-def list_packages(names):
-    _list_sub_packages(STDLIB_PATH, names)
+        if any(package_file.endswith(".py")
+               for package_file in os.listdir(package_path)):
+            names.add(name)
 
 
 # Extension modules built by setup.py