gh-76785: Rename _xxsubinterpreters to _interpreters (gh-117791)

See https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.
This commit is contained in:
Eric Snow 2024-04-24 10:18:24 -06:00 committed by GitHub
parent af3c1d817d
commit 03e3e31723
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
34 changed files with 546 additions and 539 deletions

View File

@ -54,7 +54,7 @@ struct atexit_state {
int callback_len; int callback_len;
}; };
// Export for '_xxinterpchannels' shared extension // Export for '_interpchannels' shared extension
PyAPI_FUNC(int) _Py_AtExit( PyAPI_FUNC(int) _Py_AtExit(
PyInterpreterState *interp, PyInterpreterState *interp,
atexit_datacallbackfunc func, atexit_datacallbackfunc func,

View File

@ -9,7 +9,7 @@ extern "C" {
#endif #endif
// Exported for the _xxinterpchannels module. // Exported for the _interpchannels module.
PyAPI_FUNC(int) _PyBuffer_ReleaseInInterpreter( PyAPI_FUNC(int) _PyBuffer_ReleaseInInterpreter(
PyInterpreterState *interp, Py_buffer *view); PyInterpreterState *interp, Py_buffer *view);
PyAPI_FUNC(int) _PyBuffer_ReleaseInInterpreterAndRawFree( PyAPI_FUNC(int) _PyBuffer_ReleaseInInterpreterAndRawFree(

View File

@ -77,10 +77,10 @@ _Py_IsMainInterpreterFinalizing(PyInterpreterState *interp)
interp == &_PyRuntime._main_interpreter); interp == &_PyRuntime._main_interpreter);
} }
// Export for _xxsubinterpreters module. // Export for _interpreters module.
PyAPI_FUNC(PyObject *) _PyInterpreterState_GetIDObject(PyInterpreterState *); PyAPI_FUNC(PyObject *) _PyInterpreterState_GetIDObject(PyInterpreterState *);
// Export for _xxsubinterpreters module. // Export for _interpreters module.
PyAPI_FUNC(int) _PyInterpreterState_SetRunningMain(PyInterpreterState *); PyAPI_FUNC(int) _PyInterpreterState_SetRunningMain(PyInterpreterState *);
PyAPI_FUNC(void) _PyInterpreterState_SetNotRunningMain(PyInterpreterState *); PyAPI_FUNC(void) _PyInterpreterState_SetNotRunningMain(PyInterpreterState *);
PyAPI_FUNC(int) _PyInterpreterState_IsRunningMain(PyInterpreterState *); PyAPI_FUNC(int) _PyInterpreterState_IsRunningMain(PyInterpreterState *);

View File

@ -99,7 +99,7 @@ extern void _PyThread_AfterFork(struct _pythread_runtime_state *state);
// unset: -1 seconds, in nanoseconds // unset: -1 seconds, in nanoseconds
#define PyThread_UNSET_TIMEOUT ((PyTime_t)(-1 * 1000 * 1000 * 1000)) #define PyThread_UNSET_TIMEOUT ((PyTime_t)(-1 * 1000 * 1000 * 1000))
// Exported for the _xxinterpchannels module. // Exported for the _interpchannels module.
PyAPI_FUNC(int) PyThread_ParseTimeoutArg( PyAPI_FUNC(int) PyThread_ParseTimeoutArg(
PyObject *arg, PyObject *arg,
int blocking, int blocking,
@ -111,7 +111,7 @@ PyAPI_FUNC(int) PyThread_ParseTimeoutArg(
* are returned, depending on whether the lock can be acquired within the * are returned, depending on whether the lock can be acquired within the
* timeout. * timeout.
*/ */
// Exported for the _xxinterpchannels module. // Exported for the _interpchannels module.
PyAPI_FUNC(PyLockStatus) PyThread_acquire_lock_timed_with_retries( PyAPI_FUNC(PyLockStatus) PyThread_acquire_lock_timed_with_retries(
PyThread_type_lock, PyThread_type_lock,
PY_TIMEOUT_T microseconds); PY_TIMEOUT_T microseconds);

View File

@ -114,7 +114,7 @@ def multi_interp_extensions_check(enabled=True):
This only applies to modules that haven't been imported yet. This only applies to modules that haven't been imported yet.
It overrides the PyInterpreterConfig.check_multi_interp_extensions It overrides the PyInterpreterConfig.check_multi_interp_extensions
setting (see support.run_in_subinterp_with_config() and setting (see support.run_in_subinterp_with_config() and
_xxsubinterpreters.create()). _interpreters.create()).
Also see importlib.utils.allowing_all_extensions(). Also see importlib.utils.allowing_all_extensions().
""" """

View File

@ -2,10 +2,10 @@
import threading import threading
import weakref import weakref
import _xxsubinterpreters as _interpreters import _interpreters
# aliases: # aliases:
from _xxsubinterpreters import ( from _interpreters import (
InterpreterError, InterpreterNotFoundError, NotShareableError, InterpreterError, InterpreterNotFoundError, NotShareableError,
is_shareable, is_shareable,
) )

View File

@ -1,10 +1,10 @@
"""Cross-interpreter Channels High Level Module.""" """Cross-interpreter Channels High Level Module."""
import time import time
import _xxinterpchannels as _channels import _interpchannels as _channels
# aliases: # aliases:
from _xxinterpchannels import ( from _interpchannels import (
ChannelError, ChannelNotFoundError, ChannelClosedError, ChannelError, ChannelNotFoundError, ChannelClosedError,
ChannelEmptyError, ChannelNotEmptyError, ChannelEmptyError, ChannelNotEmptyError,
) )

View File

@ -4,10 +4,10 @@ import pickle
import queue import queue
import time import time
import weakref import weakref
import _xxinterpqueues as _queues import _interpqueues as _queues
# aliases: # aliases:
from _xxinterpqueues import ( from _interpqueues import (
QueueError, QueueNotFoundError, QueueError, QueueNotFoundError,
) )

View File

@ -13,9 +13,9 @@ from test.support import os_helper
from test.support import script_helper from test.support import script_helper
_interpreters = import_helper.import_module('_xxsubinterpreters') _interpreters = import_helper.import_module('_interpreters')
_testinternalcapi = import_helper.import_module('_testinternalcapi') _testinternalcapi = import_helper.import_module('_testinternalcapi')
from _xxsubinterpreters import InterpreterNotFoundError from _interpreters import InterpreterNotFoundError
################################## ##################################
@ -231,7 +231,7 @@ class ModuleTests(TestBase):
def test_import_in_interpreter(self): def test_import_in_interpreter(self):
_run_output( _run_output(
_interpreters.create(), _interpreters.create(),
'import _xxsubinterpreters as _interpreters', 'import _interpreters',
) )
@ -273,7 +273,7 @@ class GetCurrentTests(TestBase):
main, *_ = _interpreters.get_main() main, *_ = _interpreters.get_main()
interp = _interpreters.create() interp = _interpreters.create()
out = _run_output(interp, dedent(""" out = _run_output(interp, dedent("""
import _xxsubinterpreters as _interpreters import _interpreters
cur, *_ = _interpreters.get_current() cur, *_ = _interpreters.get_current()
print(cur) print(cur)
assert isinstance(cur, int) assert isinstance(cur, int)
@ -296,7 +296,7 @@ class GetMainTests(TestBase):
[expected] = [id for id, *_ in _interpreters.list_all()] [expected] = [id for id, *_ in _interpreters.list_all()]
interp = _interpreters.create() interp = _interpreters.create()
out = _run_output(interp, dedent(""" out = _run_output(interp, dedent("""
import _xxsubinterpreters as _interpreters import _interpreters
main, *_ = _interpreters.get_main() main, *_ = _interpreters.get_main()
print(main) print(main)
assert isinstance(main, int) assert isinstance(main, int)
@ -323,7 +323,7 @@ class IsRunningTests(TestBase):
def test_from_subinterpreter(self): def test_from_subinterpreter(self):
interp = _interpreters.create() interp = _interpreters.create()
out = _run_output(interp, dedent(f""" out = _run_output(interp, dedent(f"""
import _xxsubinterpreters as _interpreters import _interpreters
if _interpreters.is_running({interp}): if _interpreters.is_running({interp}):
print(True) print(True)
else: else:
@ -385,7 +385,7 @@ class CreateTests(TestBase):
main, = [id for id, *_ in _interpreters.list_all()] main, = [id for id, *_ in _interpreters.list_all()]
id1 = _interpreters.create() id1 = _interpreters.create()
out = _run_output(id1, dedent(""" out = _run_output(id1, dedent("""
import _xxsubinterpreters as _interpreters import _interpreters
id = _interpreters.create() id = _interpreters.create()
print(id) print(id)
assert isinstance(id, int) assert isinstance(id, int)
@ -402,7 +402,7 @@ class CreateTests(TestBase):
def f(): def f():
nonlocal id2 nonlocal id2
out = _run_output(id1, dedent(""" out = _run_output(id1, dedent("""
import _xxsubinterpreters as _interpreters import _interpreters
id = _interpreters.create() id = _interpreters.create()
print(id) print(id)
""")) """))
@ -505,7 +505,7 @@ class DestroyTests(TestBase):
main, = [id for id, *_ in _interpreters.list_all()] main, = [id for id, *_ in _interpreters.list_all()]
id = _interpreters.create() id = _interpreters.create()
script = dedent(f""" script = dedent(f"""
import _xxsubinterpreters as _interpreters import _interpreters
try: try:
_interpreters.destroy({id}) _interpreters.destroy({id})
except _interpreters.InterpreterError: except _interpreters.InterpreterError:
@ -521,7 +521,7 @@ class DestroyTests(TestBase):
id1 = _interpreters.create() id1 = _interpreters.create()
id2 = _interpreters.create() id2 = _interpreters.create()
script = dedent(f""" script = dedent(f"""
import _xxsubinterpreters as _interpreters import _interpreters
_interpreters.destroy({id2}) _interpreters.destroy({id2})
""") """)
_interpreters.run_string(id1, script) _interpreters.run_string(id1, script)
@ -862,7 +862,7 @@ class RunStringTests(TestBase):
script = dedent(""" script = dedent("""
from textwrap import dedent from textwrap import dedent
import threading import threading
import _xxsubinterpreters as _interpreters import _interpreters
id = _interpreters.create() id = _interpreters.create()
def f(): def f():
_interpreters.run_string(id, dedent(''' _interpreters.run_string(id, dedent('''

View File

@ -42,7 +42,7 @@ try:
except ImportError: except ImportError:
_testsinglephase = None _testsinglephase = None
try: try:
import _xxsubinterpreters as _interpreters import _interpreters
except ModuleNotFoundError: except ModuleNotFoundError:
_interpreters = None _interpreters = None

View File

@ -50,7 +50,7 @@ try:
except ImportError: except ImportError:
_testmultiphase = None _testmultiphase = None
try: try:
import _xxsubinterpreters as _interpreters import _interpreters
except ModuleNotFoundError: except ModuleNotFoundError:
_interpreters = None _interpreters = None
try: try:

View File

@ -27,7 +27,7 @@ try:
except ImportError: except ImportError:
_testmultiphase = None _testmultiphase = None
try: try:
import _xxsubinterpreters as _interpreters import _interpreters
except ModuleNotFoundError: except ModuleNotFoundError:
_interpreters = None _interpreters = None

View File

@ -9,7 +9,7 @@ import unittest
from test import support from test import support
from test.support import import_helper from test.support import import_helper
# Raise SkipTest if subinterpreters not supported. # Raise SkipTest if subinterpreters not supported.
_interpreters = import_helper.import_module('_xxsubinterpreters') _interpreters = import_helper.import_module('_interpreters')
from test.support import Py_GIL_DISABLED from test.support import Py_GIL_DISABLED
from test.support import interpreters from test.support import interpreters
from test.support.interpreters import ( from test.support.interpreters import (
@ -385,7 +385,7 @@ class TestInterpreterIsRunning(TestBase):
def test_from_subinterpreter(self): def test_from_subinterpreter(self):
interp = interpreters.create() interp = interpreters.create()
out = _run_output(interp, dedent(f""" out = _run_output(interp, dedent(f"""
import _xxsubinterpreters as _interpreters import _interpreters
if _interpreters.is_running({interp.id}): if _interpreters.is_running({interp.id}):
print(True) print(True)
else: else:
@ -876,7 +876,7 @@ class TestInterpreterExec(TestBase):
with self.assertRaisesRegex(InterpreterError, 'unrecognized'): with self.assertRaisesRegex(InterpreterError, 'unrecognized'):
interp.exec('raise Exception("it worked!")') interp.exec('raise Exception("it worked!")')
# test_xxsubinterpreters covers the remaining # test__interpreters covers the remaining
# Interpreter.exec() behavior. # Interpreter.exec() behavior.
@ -1290,7 +1290,7 @@ class LowLevelTests(TestBase):
self.assertEqual(whence, _interpreters.WHENCE_RUNTIME) self.assertEqual(whence, _interpreters.WHENCE_RUNTIME)
script = f""" script = f"""
import {_interpreters.__name__} as _interpreters import _interpreters
interpid, whence = _interpreters.get_current() interpid, whence = _interpreters.get_current()
print((interpid, whence)) print((interpid, whence))
""" """
@ -1333,7 +1333,7 @@ class LowLevelTests(TestBase):
with self.subTest('via interp from _interpreters'): with self.subTest('via interp from _interpreters'):
text = self.run_and_capture(interpid2, f""" text = self.run_and_capture(interpid2, f"""
import {_interpreters.__name__} as _interpreters import _interpreters
print( print(
_interpreters.list_all()) _interpreters.list_all())
""") """)
@ -1352,7 +1352,7 @@ class LowLevelTests(TestBase):
(interpid5, _interpreters.WHENCE_STDLIB), (interpid5, _interpreters.WHENCE_STDLIB),
] ]
text = self.run_temp_from_capi(f""" text = self.run_temp_from_capi(f"""
import {_interpreters.__name__} as _interpreters import _interpreters
_interpreters.create() _interpreters.create()
print( print(
_interpreters.list_all()) _interpreters.list_all())
@ -1507,7 +1507,7 @@ class LowLevelTests(TestBase):
with self.subTest('from C-API, running'): with self.subTest('from C-API, running'):
text = self.run_temp_from_capi(dedent(f""" text = self.run_temp_from_capi(dedent(f"""
import {_interpreters.__name__} as _interpreters import _interpreters
interpid, *_ = _interpreters.get_current() interpid, *_ = _interpreters.get_current()
print(_interpreters.whence(interpid)) print(_interpreters.whence(interpid))
"""), """),
@ -1518,7 +1518,7 @@ class LowLevelTests(TestBase):
with self.subTest('from legacy C-API, running'): with self.subTest('from legacy C-API, running'):
... ...
text = self.run_temp_from_capi(dedent(f""" text = self.run_temp_from_capi(dedent(f"""
import {_interpreters.__name__} as _interpreters import _interpreters
interpid, *_ = _interpreters.get_current() interpid, *_ = _interpreters.get_current()
print(_interpreters.whence(interpid)) print(_interpreters.whence(interpid))
"""), """),

View File

@ -7,7 +7,7 @@ import time
from test.support import import_helper from test.support import import_helper
# Raise SkipTest if subinterpreters not supported. # Raise SkipTest if subinterpreters not supported.
_channels = import_helper.import_module('_xxinterpchannels') _channels = import_helper.import_module('_interpchannels')
from test.support import interpreters from test.support import interpreters
from test.support.interpreters import channels from test.support.interpreters import channels
from .utils import _run_output, TestBase from .utils import _run_output, TestBase
@ -22,7 +22,7 @@ class LowLevelTests(TestBase):
# encountered by the high-level module, thus they # encountered by the high-level module, thus they
# mostly shouldn't matter as much. # mostly shouldn't matter as much.
# Additional tests are found in Lib/test/test__xxinterpchannels.py. # Additional tests are found in Lib/test/test__interpchannels.py.
# XXX Those should be either moved to LowLevelTests or eliminated # XXX Those should be either moved to LowLevelTests or eliminated
# in favor of high-level tests in this file. # in favor of high-level tests in this file.

View File

@ -10,7 +10,7 @@ from test import support
from test.support import import_helper from test.support import import_helper
from test.support import os_helper from test.support import os_helper
# Raise SkipTest if subinterpreters not supported. # Raise SkipTest if subinterpreters not supported.
import_helper.import_module('_xxsubinterpreters') import_helper.import_module('_interpreters')
from .utils import TestBase from .utils import TestBase

View File

@ -7,7 +7,7 @@ import time
from test.support import import_helper, Py_DEBUG from test.support import import_helper, Py_DEBUG
# Raise SkipTest if subinterpreters not supported. # Raise SkipTest if subinterpreters not supported.
_queues = import_helper.import_module('_xxinterpqueues') _queues = import_helper.import_module('_interpqueues')
from test.support import interpreters from test.support import interpreters
from test.support.interpreters import queues from test.support.interpreters import queues
from .utils import _run_output, TestBase as _TestBase from .utils import _run_output, TestBase as _TestBase

View File

@ -5,7 +5,7 @@ from test import support
from test.support import import_helper from test.support import import_helper
from test.support import threading_helper from test.support import threading_helper
# Raise SkipTest if subinterpreters not supported. # Raise SkipTest if subinterpreters not supported.
import_helper.import_module('_xxsubinterpreters') import_helper.import_module('_interpreters')
from test.support import interpreters from test.support import interpreters
from .utils import TestBase from .utils import TestBase

View File

@ -21,7 +21,7 @@ from test import support
# We would use test.support.import_helper.import_module(), # We would use test.support.import_helper.import_module(),
# but the indirect import of test.support.os_helper causes refleaks. # but the indirect import of test.support.os_helper causes refleaks.
try: try:
import _xxsubinterpreters as _interpreters import _interpreters
except ImportError as exc: except ImportError as exc:
raise unittest.SkipTest(str(exc)) raise unittest.SkipTest(str(exc))
from test.support import interpreters from test.support import interpreters

View File

@ -1686,11 +1686,11 @@ Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule
Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h
Modules/_xxsubinterpretersmodule.o: $(srcdir)/Modules/_xxsubinterpretersmodule.c $(srcdir)/Modules/_interpreters_common.h Modules/_interpretersmodule.o: $(srcdir)/Modules/_interpretersmodule.c $(srcdir)/Modules/_interpreters_common.h
Modules/_xxinterpqueuesmodule.o: $(srcdir)/Modules/_xxinterpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h Modules/_interpqueuesmodule.o: $(srcdir)/Modules/_interpqueuesmodule.c $(srcdir)/Modules/_interpreters_common.h
Modules/_xxinterpchannelsmodule.o: $(srcdir)/Modules/_xxinterpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h Modules/_interpchannelsmodule.o: $(srcdir)/Modules/_interpchannelsmodule.c $(srcdir)/Modules/_interpreters_common.h
Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h Python/crossinterp.o: $(srcdir)/Python/crossinterp.c $(srcdir)/Python/crossinterp_data_lookup.h $(srcdir)/Python/crossinterp_exceptions.h

View File

@ -0,0 +1,6 @@
We've exposed the low-level :mod:`!_interpreters` module for the sake of the
PyPI implementation of :pep:`734`. It was sometimes available as the
:mod:`!_xxsubinterpreters` module and was formerly used only for testing. For
the most part, it should be considered an internal module, like :mod:`!_thread`
and :mod:`!_imp`. See
https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.

View File

@ -137,6 +137,9 @@ PYTHONPATH=$(COREPYTHONPATH)
#_datetime _datetimemodule.c #_datetime _datetimemodule.c
#_decimal _decimal/_decimal.c #_decimal _decimal/_decimal.c
#_heapq _heapqmodule.c #_heapq _heapqmodule.c
#_interpchannels _interpchannelsmodule.c
#_interpqueues _interpqueuesmodule.c
#_interpreters _interpretersmodule.c
#_json _json.c #_json _json.c
#_lsprof _lsprof.c rotatingtree.c #_lsprof _lsprof.c rotatingtree.c
#_multiprocessing -I$(srcdir)/Modules/_multiprocessing _multiprocessing/multiprocessing.c _multiprocessing/semaphore.c #_multiprocessing -I$(srcdir)/Modules/_multiprocessing _multiprocessing/multiprocessing.c _multiprocessing/semaphore.c
@ -271,9 +274,6 @@ PYTHONPATH=$(COREPYTHONPATH)
# Testing # Testing
#_xxsubinterpreters _xxsubinterpretersmodule.c
#_xxinterpchannels _xxinterpchannelsmodule.c
#_xxinterpqueues _xxinterpqueuesmodule.c
#_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c #_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c
#_testbuffer _testbuffer.c #_testbuffer _testbuffer.c
#_testinternalcapi _testinternalcapi.c #_testinternalcapi _testinternalcapi.c

View File

@ -43,9 +43,10 @@
@MODULE__STRUCT_TRUE@_struct _struct.c @MODULE__STRUCT_TRUE@_struct _struct.c
# build supports subinterpreters # build supports subinterpreters
@MODULE__XXSUBINTERPRETERS_TRUE@_xxsubinterpreters _xxsubinterpretersmodule.c @MODULE__INTERPRETERS_TRUE@_interpreters _interpretersmodule.c
@MODULE__XXINTERPCHANNELS_TRUE@_xxinterpchannels _xxinterpchannelsmodule.c @MODULE__INTERPCHANNELS_TRUE@_interpchannels _interpchannelsmodule.c
@MODULE__XXINTERPQUEUES_TRUE@_xxinterpqueues _xxinterpqueuesmodule.c @MODULE__INTERPQUEUES_TRUE@_interpqueues _interpqueuesmodule.c
@MODULE__ZONEINFO_TRUE@_zoneinfo _zoneinfo.c @MODULE__ZONEINFO_TRUE@_zoneinfo _zoneinfo.c
# needs libm # needs libm

View File

@ -84,7 +84,7 @@ channel's queue, which are safely managed via the _PyCrossInterpreterData_*()
API.. The module does not create any objects that are shared globally. API.. The module does not create any objects that are shared globally.
*/ */
#define MODULE_NAME _xxinterpchannels #define MODULE_NAME _interpchannels
#define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME) #define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME)
#define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME) #define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME)

View File

@ -13,7 +13,7 @@
#undef REGISTERS_HEAP_TYPES #undef REGISTERS_HEAP_TYPES
#define MODULE_NAME _xxinterpqueues #define MODULE_NAME _interpqueues
#define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME) #define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME)
#define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME) #define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME)

View File

@ -23,7 +23,7 @@
#include "_interpreters_common.h" #include "_interpreters_common.h"
#define MODULE_NAME _xxsubinterpreters #define MODULE_NAME _interpreters
#define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME) #define MODULE_NAME_STR Py_STRINGIFY(MODULE_NAME)
#define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME) #define MODINIT_FUNC_NAME RESOLVE_MODINIT_FUNC_NAME(MODULE_NAME)

View File

@ -35,9 +35,9 @@ extern PyObject* PyInit__codecs(void);
extern PyObject* PyInit__weakref(void); extern PyObject* PyInit__weakref(void);
/* XXX: These two should really be extracted to standalone extensions. */ /* XXX: These two should really be extracted to standalone extensions. */
extern PyObject* PyInit_xxsubtype(void); extern PyObject* PyInit_xxsubtype(void);
extern PyObject* PyInit__xxsubinterpreters(void); extern PyObject* PyInit__interpreters(void);
extern PyObject* PyInit__xxinterpchannels(void); extern PyObject* PyInit__interpchannels(void);
extern PyObject* PyInit__xxinterpqueues(void); extern PyObject* PyInit__interpqueues(void);
extern PyObject* PyInit__random(void); extern PyObject* PyInit__random(void);
extern PyObject* PyInit_itertools(void); extern PyObject* PyInit_itertools(void);
extern PyObject* PyInit__collections(void); extern PyObject* PyInit__collections(void);
@ -139,9 +139,9 @@ struct _inittab _PyImport_Inittab[] = {
{"_json", PyInit__json}, {"_json", PyInit__json},
{"xxsubtype", PyInit_xxsubtype}, {"xxsubtype", PyInit_xxsubtype},
{"_xxsubinterpreters", PyInit__xxsubinterpreters}, {"_interpreters", PyInit__interpreters},
{"_xxinterpchannels", PyInit__xxinterpchannels}, {"_interpchannels", PyInit__interpchannels},
{"_xxinterpqueues", PyInit__xxinterpqueues}, {"_interpqueues", PyInit__interpqueues},
#ifdef _Py_HAVE_ZLIB #ifdef _Py_HAVE_ZLIB
{"zlib", PyInit_zlib}, {"zlib", PyInit_zlib},
#endif #endif

View File

@ -465,9 +465,9 @@
<ClCompile Include="..\Modules\_typingmodule.c" /> <ClCompile Include="..\Modules\_typingmodule.c" />
<ClCompile Include="..\Modules\timemodule.c" /> <ClCompile Include="..\Modules\timemodule.c" />
<ClCompile Include="..\Modules\xxsubtype.c" /> <ClCompile Include="..\Modules\xxsubtype.c" />
<ClCompile Include="..\Modules\_xxsubinterpretersmodule.c" /> <ClCompile Include="..\Modules\_interpretersmodule.c" />
<ClCompile Include="..\Modules\_xxinterpchannelsmodule.c" /> <ClCompile Include="..\Modules\_interpchannelsmodule.c" />
<ClCompile Include="..\Modules\_xxinterpqueuesmodule.c" /> <ClCompile Include="..\Modules\_interpqueuesmodule.c" />
<ClCompile Include="..\Modules\_io\fileio.c" /> <ClCompile Include="..\Modules\_io\fileio.c" />
<ClCompile Include="..\Modules\_io\bytesio.c" /> <ClCompile Include="..\Modules\_io\bytesio.c" />
<ClCompile Include="..\Modules\_io\stringio.c" /> <ClCompile Include="..\Modules\_io\stringio.c" />

View File

@ -1547,13 +1547,13 @@
<ClCompile Include="..\Parser\peg_api.c"> <ClCompile Include="..\Parser\peg_api.c">
<Filter>Parser</Filter> <Filter>Parser</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Modules\_xxsubinterpretersmodule.c"> <ClCompile Include="..\Modules\_interpretersmodule.c">
<Filter>Modules</Filter> <Filter>Modules</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Modules\_xxinterpchannelsmodule.c"> <ClCompile Include="..\Modules\_interpchannelsmodule.c">
<Filter>Modules</Filter> <Filter>Modules</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Modules\_xxinterpqueuesmodule.c"> <ClCompile Include="..\Modules\_interpqueuesmodule.c">
<Filter>Modules</Filter> <Filter>Modules</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\Parser\string_parser.c"> <ClCompile Include="..\Parser\string_parser.c">

View File

@ -37,6 +37,9 @@ static const char* _Py_stdlib_module_names[] = {
"_hashlib", "_hashlib",
"_heapq", "_heapq",
"_imp", "_imp",
"_interpchannels",
"_interpqueues",
"_interpreters",
"_io", "_io",
"_ios_support", "_ios_support",
"_json", "_json",

View File

@ -36,9 +36,6 @@ IGNORE = {
'_testmultiphase', '_testmultiphase',
'_testsinglephase', '_testsinglephase',
'_testexternalinspection', '_testexternalinspection',
'_xxsubinterpreters',
'_xxinterpchannels',
'_xxinterpqueues',
'_xxtestfuzz', '_xxtestfuzz',
'idlelib.idle_test', 'idlelib.idle_test',
'test', 'test',

View File

@ -164,8 +164,8 @@ Python/pylifecycle.c _Py_FatalErrorFormat reentrant -
Python/pylifecycle.c fatal_error reentrant - Python/pylifecycle.c fatal_error reentrant -
# explicitly protected, internal-only # explicitly protected, internal-only
Modules/_xxinterpchannelsmodule.c - _globals - Modules/_interpchannelsmodule.c - _globals -
Modules/_xxinterpqueuesmodule.c - _globals - Modules/_interpqueuesmodule.c - _globals -
# set once during module init # set once during module init
Modules/_decimal/_decimal.c - minalloc_is_set - Modules/_decimal/_decimal.c - minalloc_is_set -
@ -246,11 +246,11 @@ Modules/_struct.c - bigendian_table -
Modules/_struct.c - lilendian_table - Modules/_struct.c - lilendian_table -
Modules/_struct.c - native_table - Modules/_struct.c - native_table -
Modules/_tkinter.c - state_key - Modules/_tkinter.c - state_key -
Modules/_xxinterpchannelsmodule.c - _channelid_end_recv - Modules/_interpchannelsmodule.c - _channelid_end_recv -
Modules/_xxinterpchannelsmodule.c - _channelid_end_send - Modules/_interpchannelsmodule.c - _channelid_end_send -
Modules/_zoneinfo.c - DAYS_BEFORE_MONTH - Modules/_zoneinfo.c - DAYS_BEFORE_MONTH -
Modules/_zoneinfo.c - DAYS_IN_MONTH - Modules/_zoneinfo.c - DAYS_IN_MONTH -
Modules/_xxsubinterpretersmodule.c - no_exception - Modules/_interpretersmodule.c - no_exception -
Modules/arraymodule.c - descriptors - Modules/arraymodule.c - descriptors -
Modules/arraymodule.c - emptybuf - Modules/arraymodule.c - emptybuf -
Modules/cjkcodecs/_codecs_cn.c - _mapping_list - Modules/cjkcodecs/_codecs_cn.c - _mapping_list -

Can't render this file because it has a wrong number of fields in line 4.

84
configure generated vendored
View File

@ -775,12 +775,12 @@ MODULE__MULTIPROCESSING_FALSE
MODULE__MULTIPROCESSING_TRUE MODULE__MULTIPROCESSING_TRUE
MODULE__ZONEINFO_FALSE MODULE__ZONEINFO_FALSE
MODULE__ZONEINFO_TRUE MODULE__ZONEINFO_TRUE
MODULE__XXINTERPQUEUES_FALSE MODULE__INTERPQUEUES_FALSE
MODULE__XXINTERPQUEUES_TRUE MODULE__INTERPQUEUES_TRUE
MODULE__XXINTERPCHANNELS_FALSE MODULE__INTERPCHANNELS_FALSE
MODULE__XXINTERPCHANNELS_TRUE MODULE__INTERPCHANNELS_TRUE
MODULE__XXSUBINTERPRETERS_FALSE MODULE__INTERPRETERS_FALSE
MODULE__XXSUBINTERPRETERS_TRUE MODULE__INTERPRETERS_TRUE
MODULE__TYPING_FALSE MODULE__TYPING_FALSE
MODULE__TYPING_TRUE MODULE__TYPING_TRUE
MODULE__STRUCT_FALSE MODULE__STRUCT_FALSE
@ -28659,9 +28659,9 @@ case $ac_sys_system in #(
py_cv_module__posixsubprocess=n/a py_cv_module__posixsubprocess=n/a
py_cv_module__scproxy=n/a py_cv_module__scproxy=n/a
py_cv_module__tkinter=n/a py_cv_module__tkinter=n/a
py_cv_module__xxsubinterpreters=n/a py_cv_module__interpreters=n/a
py_cv_module__xxinterpchannels=n/a py_cv_module__interpchannels=n/a
py_cv_module__xxinterpqueues=n/a py_cv_module__interpqueues=n/a
py_cv_module_grp=n/a py_cv_module_grp=n/a
py_cv_module_pwd=n/a py_cv_module_pwd=n/a
py_cv_module_resource=n/a py_cv_module_resource=n/a
@ -29126,20 +29126,20 @@ then :
fi fi
if test "$py_cv_module__xxsubinterpreters" != "n/a" if test "$py_cv_module__interpreters" != "n/a"
then : then :
py_cv_module__xxsubinterpreters=yes py_cv_module__interpreters=yes
fi fi
if test "$py_cv_module__xxsubinterpreters" = yes; then if test "$py_cv_module__interpreters" = yes; then
MODULE__XXSUBINTERPRETERS_TRUE= MODULE__INTERPRETERS_TRUE=
MODULE__XXSUBINTERPRETERS_FALSE='#' MODULE__INTERPRETERS_FALSE='#'
else else
MODULE__XXSUBINTERPRETERS_TRUE='#' MODULE__INTERPRETERS_TRUE='#'
MODULE__XXSUBINTERPRETERS_FALSE= MODULE__INTERPRETERS_FALSE=
fi fi
as_fn_append MODULE_BLOCK "MODULE__XXSUBINTERPRETERS_STATE=$py_cv_module__xxsubinterpreters$as_nl" as_fn_append MODULE_BLOCK "MODULE__INTERPRETERS_STATE=$py_cv_module__interpreters$as_nl"
if test "x$py_cv_module__xxsubinterpreters" = xyes if test "x$py_cv_module__interpreters" = xyes
then : then :
@ -29148,20 +29148,20 @@ then :
fi fi
if test "$py_cv_module__xxinterpchannels" != "n/a" if test "$py_cv_module__interpchannels" != "n/a"
then : then :
py_cv_module__xxinterpchannels=yes py_cv_module__interpchannels=yes
fi fi
if test "$py_cv_module__xxinterpchannels" = yes; then if test "$py_cv_module__interpchannels" = yes; then
MODULE__XXINTERPCHANNELS_TRUE= MODULE__INTERPCHANNELS_TRUE=
MODULE__XXINTERPCHANNELS_FALSE='#' MODULE__INTERPCHANNELS_FALSE='#'
else else
MODULE__XXINTERPCHANNELS_TRUE='#' MODULE__INTERPCHANNELS_TRUE='#'
MODULE__XXINTERPCHANNELS_FALSE= MODULE__INTERPCHANNELS_FALSE=
fi fi
as_fn_append MODULE_BLOCK "MODULE__XXINTERPCHANNELS_STATE=$py_cv_module__xxinterpchannels$as_nl" as_fn_append MODULE_BLOCK "MODULE__INTERPCHANNELS_STATE=$py_cv_module__interpchannels$as_nl"
if test "x$py_cv_module__xxinterpchannels" = xyes if test "x$py_cv_module__interpchannels" = xyes
then : then :
@ -29170,20 +29170,20 @@ then :
fi fi
if test "$py_cv_module__xxinterpqueues" != "n/a" if test "$py_cv_module__interpqueues" != "n/a"
then : then :
py_cv_module__xxinterpqueues=yes py_cv_module__interpqueues=yes
fi fi
if test "$py_cv_module__xxinterpqueues" = yes; then if test "$py_cv_module__interpqueues" = yes; then
MODULE__XXINTERPQUEUES_TRUE= MODULE__INTERPQUEUES_TRUE=
MODULE__XXINTERPQUEUES_FALSE='#' MODULE__INTERPQUEUES_FALSE='#'
else else
MODULE__XXINTERPQUEUES_TRUE='#' MODULE__INTERPQUEUES_TRUE='#'
MODULE__XXINTERPQUEUES_FALSE= MODULE__INTERPQUEUES_FALSE=
fi fi
as_fn_append MODULE_BLOCK "MODULE__XXINTERPQUEUES_STATE=$py_cv_module__xxinterpqueues$as_nl" as_fn_append MODULE_BLOCK "MODULE__INTERPQUEUES_STATE=$py_cv_module__interpqueues$as_nl"
if test "x$py_cv_module__xxinterpqueues" = xyes if test "x$py_cv_module__interpqueues" = xyes
then : then :
@ -31532,16 +31532,16 @@ if test -z "${MODULE__TYPING_TRUE}" && test -z "${MODULE__TYPING_FALSE}"; then
as_fn_error $? "conditional \"MODULE__TYPING\" was never defined. as_fn_error $? "conditional \"MODULE__TYPING\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${MODULE__XXSUBINTERPRETERS_TRUE}" && test -z "${MODULE__XXSUBINTERPRETERS_FALSE}"; then if test -z "${MODULE__INTERPRETERS_TRUE}" && test -z "${MODULE__INTERPRETERS_FALSE}"; then
as_fn_error $? "conditional \"MODULE__XXSUBINTERPRETERS\" was never defined. as_fn_error $? "conditional \"MODULE__INTERPRETERS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${MODULE__XXINTERPCHANNELS_TRUE}" && test -z "${MODULE__XXINTERPCHANNELS_FALSE}"; then if test -z "${MODULE__INTERPCHANNELS_TRUE}" && test -z "${MODULE__INTERPCHANNELS_FALSE}"; then
as_fn_error $? "conditional \"MODULE__XXINTERPCHANNELS\" was never defined. as_fn_error $? "conditional \"MODULE__INTERPCHANNELS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${MODULE__XXINTERPQUEUES_TRUE}" && test -z "${MODULE__XXINTERPQUEUES_FALSE}"; then if test -z "${MODULE__INTERPQUEUES_TRUE}" && test -z "${MODULE__INTERPQUEUES_FALSE}"; then
as_fn_error $? "conditional \"MODULE__XXINTERPQUEUES\" was never defined. as_fn_error $? "conditional \"MODULE__INTERPQUEUES\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${MODULE__ZONEINFO_TRUE}" && test -z "${MODULE__ZONEINFO_FALSE}"; then if test -z "${MODULE__ZONEINFO_TRUE}" && test -z "${MODULE__ZONEINFO_FALSE}"; then

View File

@ -7433,9 +7433,9 @@ AS_CASE([$ac_sys_system],
[_posixsubprocess], [_posixsubprocess],
[_scproxy], [_scproxy],
[_tkinter], [_tkinter],
[_xxsubinterpreters], [_interpreters],
[_xxinterpchannels], [_interpchannels],
[_xxinterpqueues], [_interpqueues],
[grp], [grp],
[pwd], [pwd],
[resource], [resource],
@ -7558,9 +7558,9 @@ PY_STDLIB_MOD_SIMPLE([_random])
PY_STDLIB_MOD_SIMPLE([select]) PY_STDLIB_MOD_SIMPLE([select])
PY_STDLIB_MOD_SIMPLE([_struct]) PY_STDLIB_MOD_SIMPLE([_struct])
PY_STDLIB_MOD_SIMPLE([_typing]) PY_STDLIB_MOD_SIMPLE([_typing])
PY_STDLIB_MOD_SIMPLE([_xxsubinterpreters]) PY_STDLIB_MOD_SIMPLE([_interpreters])
PY_STDLIB_MOD_SIMPLE([_xxinterpchannels]) PY_STDLIB_MOD_SIMPLE([_interpchannels])
PY_STDLIB_MOD_SIMPLE([_xxinterpqueues]) PY_STDLIB_MOD_SIMPLE([_interpqueues])
PY_STDLIB_MOD_SIMPLE([_zoneinfo]) PY_STDLIB_MOD_SIMPLE([_zoneinfo])
dnl multiprocessing modules dnl multiprocessing modules