]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-42955: Rename module_names to sys.stdlib_module_names (GH-24332)
authorVictor Stinner <vstinner@python.org>
Mon, 25 Jan 2021 22:12:50 +0000 (23:12 +0100)
committerGitHub <noreply@github.com>
Mon, 25 Jan 2021 22:12:50 +0000 (23:12 +0100)
* Rename _Py_module_names to _Py_stdlib_module_names.
* Rename Python/module_names.h to Python/stdlib_module_names.h.

15 files changed:
.github/workflows/build.yml
.travis.yml
Doc/library/sys.rst
Doc/whatsnew/3.10.rst
Lib/test/test_capi.py
Lib/test/test_faulthandler.py
Lib/test/test_sys.py
Makefile.pre.in
Misc/NEWS.d/next/Library/2021-01-18-11-59-46.bpo-42955.CSWLC9.rst
PCbuild/pythoncore.vcxproj
PCbuild/pythoncore.vcxproj.filters
Python/pylifecycle.c
Python/stdlib_module_names.h [moved from Python/module_names.h with 95% similarity]
Python/sysmodule.c
Tools/scripts/generate_stdlib_module_names.py [moved from Tools/scripts/generate_module_names.py with 92% similarity]

index 6a41b5182454627159017184b97172b8b1541449..48b5825db042f3baad231b7cc41ff60ccdcfdb63 100644 (file)
@@ -63,7 +63,7 @@ jobs:
           # Build Python with the libpython dynamic library
           ./configure --with-pydebug --enable-shared
           make -j4 regen-all
-          make regen-module-names
+          make regen-stdlib-module-names
       - name: Check for changes
         run: |
           changes=$(git status --porcelain)
index c908891b2e322fe967eb65b585303fdcca8a6214..6a22d20455b422940d3f9a445c43251eabfa66cd 100644 (file)
@@ -172,7 +172,7 @@ before_script:
   - eval "$(pyenv init -)"
   - pyenv global 3.8
   - PYTHON_FOR_REGEN=python3.8 make -j4 regen-all
-  - make regen-module-names
+  - make regen-stdlib-module-names
   - changes=`git status --porcelain`
   - |
       # Check for changes in regenerated files
index f187895410cd4f67e487a57a838edc8081be931a..0219ae8ceb65fe6feaab2bf1f08461a1da013e84 100644 (file)
@@ -157,7 +157,7 @@ always available.
    Python interpreter.  (This information is not available in any other way ---
    ``modules.keys()`` only lists the imported modules.)
 
-   See also the :attr:`sys.module_names` list.
+   See also the :attr:`sys.stdlib_module_names` list.
 
 
 .. function:: call_tracing(func, args)
@@ -1062,24 +1062,6 @@ always available.
         This is still called as a fallback if a :data:`meta_path` entry doesn't
         have a :meth:`~importlib.abc.MetaPathFinder.find_spec` method.
 
-.. data:: module_names
-
-   A frozenset of strings containing the names of standard library modules.
-
-   It is the same on all platforms. Modules which are not available on
-   some platforms and modules disabled at Python build are also listed.
-   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.
-
-   See also the :attr:`sys.builtin_module_names` list.
-
-   .. versionadded:: 3.10
-
-
 .. data:: modules
 
    This is a dictionary that maps module names to modules which have already been
@@ -1584,6 +1566,24 @@ always available.
        to a console and Python apps started with :program:`pythonw`.
 
 
+.. data:: stdlib_module_names
+
+   A frozenset of strings containing the names of standard library modules.
+
+   It is the same on all platforms. Modules which are not available on
+   some platforms and modules disabled at Python build are also listed.
+   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.
+
+   See also the :attr:`sys.builtin_module_names` list.
+
+   .. versionadded:: 3.10
+
+
 .. data:: thread_info
 
    A :term:`named tuple` holding information about the thread
index 3026a1ac0e542ff2ade92042f0bb3319512e89c6..30a82816444af4c355c30269c61923b07cdc3dda 100644 (file)
@@ -396,7 +396,7 @@ Add :data:`sys.orig_argv` attribute: the list of the original command line
 arguments passed to the Python executable.
 (Contributed by Victor Stinner in :issue:`23427`.)
 
-Add :data:`sys.module_names`, containing the list of the standard library
+Add :data:`sys.stdlib_module_names`, containing the list of the standard library
 module names.
 (Contributed by Victor Stinner in :issue:`42955`.)
 
index 5f5c0d038d9f312e7f073e9aac93a7bb42b0e5c6..8e92a50026c8682676f2e100b43055b87550975f 100644 (file)
@@ -581,7 +581,7 @@ class CAPITest(unittest.TestCase):
         not_expected = ('_testcapi',)
         code = textwrap.dedent('''
             import _testcapi, sys
-            sys.module_names = frozenset({"_testcapi"})
+            sys.stdlib_module_names = frozenset({"_testcapi"})
             _testcapi.fatal_error(b"MESSAGE")
         ''')
         self.check_fatal_error(code, expected)
index 02077a69bb4d8516ba09a778fd3d7afc1768f788..648624482e5553c68e6eacfa9f18f466a9ae2508 100644 (file)
@@ -336,7 +336,7 @@ class FaultHandlerTests(unittest.TestCase):
             import faulthandler
             import sys
             # Don't filter stdlib module names
-            sys.module_names = frozenset()
+            sys.stdlib_module_names = frozenset()
             faulthandler.enable()
             faulthandler._sigsegv()
             """
index 729b8667fc857a783d73acf8fb8778959eb537ce..c4e053594800b248aac57fd0098b79a72bfd1eb9 100644 (file)
@@ -987,8 +987,8 @@ class SysModuleTest(unittest.TestCase):
                          proc)
 
     def test_module_names(self):
-        self.assertIsInstance(sys.module_names, frozenset)
-        for name in sys.module_names:
+        self.assertIsInstance(sys.stdlib_module_names, frozenset)
+        for name in sys.stdlib_module_names:
             self.assertIsInstance(name, str)
 
 
index ca6b5189c756408a87f16e8d2d8340fe7d5710ca..0b22bdd5591b9d881e6f5a4900880f3e96cf6887 100644 (file)
@@ -760,7 +760,7 @@ regen-all: regen-opcode regen-opcode-targets regen-typeslots \
        regen-token regen-ast regen-keyword regen-importlib clinic \
        regen-pegen-metaparser regen-pegen
        @echo
-       @echo "Note: make regen-module-names and autoconf should be run manually"
+       @echo "Note: make regen-stdlib-module-names and autoconf should be run manually"
 
 ############################################################################
 # Special rules for object files
@@ -900,14 +900,14 @@ regen-keyword:
                $(srcdir)/Lib/keyword.py.new
        $(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new
 
-.PHONY: regen-module-names
-regen-module-names: build_all
-       # Regenerate Python/module_names.h
-       # using Tools/scripts/generate_module_names.py
+.PHONY: regen-stdlib-module-names
+regen-stdlib-module-names: build_all
+       # Regenerate Python/stdlib_module_names.h
+       # using Tools/scripts/generate_stdlib_module_names.py
        $(RUNSHARED) ./$(BUILDPYTHON) \
-               $(srcdir)/Tools/scripts/generate_module_names.py \
-               > $(srcdir)/Python/module_names.h.new
-       $(UPDATE_FILE) $(srcdir)/Python/module_names.h $(srcdir)/Python/module_names.h.new
+               $(srcdir)/Tools/scripts/generate_stdlib_module_names.py \
+               > $(srcdir)/Python/stdlib_module_names.h.new
+       $(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
 
 Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o: $(srcdir)/Include/Python-ast.h
 
@@ -1160,7 +1160,7 @@ PYTHON_HEADERS= \
                $(srcdir)/Include/internal/pycore_warnings.h \
                $(DTRACE_HEADERS) \
                \
-               $(srcdir)/Python/module_names.h
+               $(srcdir)/Python/stdlib_module_names.h
 
 $(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS)
 
index 0631acd7a9870a75fa5afe8b79d349ab3960569b..373b829b0fb76d1fc531f952f4690d456198c659 100644 (file)
@@ -1,2 +1,2 @@
-Add :data:`sys.module_names`, containing the list of the standard library
+Add :data:`sys.stdlib_module_names`, containing the list of the standard library
 module names. Patch by Victor Stinner.
index 6a260da65556a969fc16b9ddc1bd505e49c8c96f..f172f2a5786c639518472f0014ddf7a14f9f71a7 100644 (file)
     <ClInclude Include="..\Python\ceval_gil.h" />
     <ClInclude Include="..\Python\condvar.h" />
     <ClInclude Include="..\Python\importdl.h" />
-    <ClInclude Include="..\Python\module_names.h" />
+    <ClInclude Include="..\Python\stdlib_module_names.h" />
     <ClInclude Include="..\Python\thread_nt.h" />
     <ClInclude Include="..\Python\wordcode_helpers.h" />
   </ItemGroup>
index 98e3ca2c9e6b83ae4c6bde271f4c47c70b097f00..3bafdb8d297117a6a791e6b73a08380dfeb7513e 100644 (file)
     <ClInclude Include="..\Python\importdl.h">
       <Filter>Python</Filter>
     </ClInclude>
-    <ClInclude Include="..\Python\module_names.h">
+    <ClInclude Include="..\Python\stdlib_module_names.h">
       <Filter>Python</Filter>
     </ClInclude>
     <ClInclude Include="..\Python\thread_nt.h">
index a97f45d0d5dc412e4f136773520613c46d9b1462..bf5dcdd107e20faa077e54b745ff8ed3568b6247 100644 (file)
@@ -2497,7 +2497,7 @@ fatal_error_exit(int status)
 
 
 // Dump the list of extension modules of sys.modules, excluding stdlib modules
-// (sys.module_names), into fd file descriptor.
+// (sys.stdlib_module_names), into fd file descriptor.
 //
 // This function is called by a signal handler in faulthandler: avoid memory
 // allocations and keep the implementation simple. For example, the list is not
@@ -2519,19 +2519,19 @@ _Py_DumpExtensionModules(int fd, PyInterpreterState *interp)
     // Avoid PyDict_GetItemString() which calls PyUnicode_FromString(),
     // memory cannot be allocated on the heap in a signal handler.
     // Iterate on the dict instead.
-    PyObject *module_names = NULL;
+    PyObject *stdlib_module_names = NULL;
     pos = 0;
     while (PyDict_Next(interp->sysdict, &pos, &key, &value)) {
         if (PyUnicode_Check(key)
-           && PyUnicode_CompareWithASCIIString(key, "module_names") == 0) {
-            module_names = value;
+           && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) {
+            stdlib_module_names = value;
             break;
         }
     }
-    // If we failed to get sys.module_names or it's not a frozenset,
+    // If we failed to get sys.stdlib_module_names or it's not a frozenset,
     // don't exclude stdlib modules.
-    if (module_names != NULL && !PyFrozenSet_Check(module_names)) {
-        module_names = NULL;
+    if (stdlib_module_names != NULL && !PyFrozenSet_Check(stdlib_module_names)) {
+        stdlib_module_names = NULL;
     }
 
     // List extensions
@@ -2547,13 +2547,13 @@ _Py_DumpExtensionModules(int fd, PyInterpreterState *interp)
         }
         // Use the module name from the sys.modules key,
         // don't attempt to get the module object name.
-        if (module_names != NULL) {
+        if (stdlib_module_names != NULL) {
             int is_stdlib_ext = 0;
 
-            Py_ssize_t i;
+            Py_ssize_t i = 0;
             PyObject *item;
             Py_hash_t hash;
-            for (i=0; _PySet_NextEntry(module_names, &i, &item, &hash); ) {
+            while (_PySet_NextEntry(stdlib_module_names, &i, &item, &hash)) {
                 if (PyUnicode_Check(item)
                     && PyUnicode_Compare(key, item) == 0)
                 {
similarity index 95%
rename from Python/module_names.h
rename to Python/stdlib_module_names.h
index 0dc2633916d30f8f19dc815f05c5791384176e77..8c430821d64b87bc5360e126d6b599143171bffc 100644 (file)
@@ -1,7 +1,7 @@
-// Auto-generated by Tools/scripts/generate_module_names.py.
-// List used to create sys.module_names.
+// Auto-generated by Tools/scripts/generate_stdlib_module_names.py.
+// List used to create sys.stdlib_module_names.
 
-static const char* _Py_module_names[] = {
+static const char* _Py_stdlib_module_names[] = {
 "__future__",
 "_abc",
 "_aix_support",
index e2f7e39f33329603d81115b59278598576dc1cf4..b9349effe3c87baa8814b9dca647b7f681d9a961 100644 (file)
@@ -29,7 +29,7 @@ Data members:
 #include "frameobject.h"          // PyFrame_GetBack()
 #include "pydtrace.h"
 #include "osdefs.h"               // DELIM
-#include "module_names.h"         // _Py_module_names
+#include "stdlib_module_names.h"  // _Py_stdlib_module_names
 #include <locale.h>
 
 #ifdef MS_WINDOWS
@@ -2054,16 +2054,16 @@ error:
 
 
 static PyObject *
-list_module_names(void)
+list_stdlib_module_names(void)
 {
-    Py_ssize_t len = Py_ARRAY_LENGTH(_Py_module_names);
+    Py_ssize_t len = Py_ARRAY_LENGTH(_Py_stdlib_module_names);
     PyObject *names = PyTuple_New(len);
     if (names == NULL) {
         return NULL;
     }
 
     for (Py_ssize_t i = 0; i < len; i++) {
-        PyObject *name = PyUnicode_FromString(_Py_module_names[i]);
+        PyObject *name = PyUnicode_FromString(_Py_stdlib_module_names[i]);
         if (name == NULL) {
             Py_DECREF(names);
             return NULL;
@@ -2784,7 +2784,7 @@ _PySys_InitCore(PyThreadState *tstate, PyObject *sysdict)
     SET_SYS("hash_info", get_hash_info(tstate));
     SET_SYS("maxunicode", PyLong_FromLong(0x10FFFF));
     SET_SYS("builtin_module_names", list_builtin_module_names());
-    SET_SYS("module_names", list_module_names());
+    SET_SYS("stdlib_module_names", list_stdlib_module_names());
 #if PY_BIG_ENDIAN
     SET_SYS_FROM_STRING("byteorder", "big");
 #else
similarity index 92%
rename from Tools/scripts/generate_module_names.py
rename to Tools/scripts/generate_stdlib_module_names.py
index 9d363aa04b3009770c983f31c1e0d102c5e59df6..02647691fc4d675786c1a527c1c65a401213f85c 100644 (file)
@@ -1,5 +1,5 @@
 # This script lists the names of standard library modules
-# to update Python/module_names.h
+# to update Python/stdlib_mod_names.h
 import os.path
 import re
 import subprocess
@@ -126,10 +126,11 @@ def list_modules():
 
 
 def write_modules(fp, names):
-    print("// Auto-generated by Tools/scripts/generate_module_names.py.", file=fp)
-    print("// List used to create sys.module_names.", file=fp)
+    print("// Auto-generated by Tools/scripts/generate_stdlib_module_names.py.",
+          file=fp)
+    print("// List used to create sys.stdlib_module_names.", file=fp)
     print(file=fp)
-    print("static const char* _Py_module_names[] = {", file=fp)
+    print("static const char* _Py_stdlib_module_names[] = {", file=fp)
     for name in sorted(names):
         print(f'"{name}",', file=fp)
     print("};", file=fp)