Skip to content

Commit cdfa1e7

Browse files
interpreters -> concurrent.interpreters
1 parent fb3e215 commit cdfa1e7

26 files changed

+63
-59
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,13 @@ Doc/howto/clinic.rst @erlend-aasland
281281
# Subinterpreters
282282
**/*interpreteridobject.* @ericsnowcurrently
283283
**/*crossinterp* @ericsnowcurrently
284-
Lib/interpreters/ @ericsnowcurrently
285284
Modules/_interp*module.c @ericsnowcurrently
286-
Lib/test/test_interpreters/ @ericsnowcurrently
287285
Lib/test/test__interp*.py @ericsnowcurrently
286+
Lib/concurrent/interpreters/ @ericsnowcurrently
288287
Lib/test/support/channels.py @ericsnowcurrently
288+
Doc/library/concurrent.interpreters.rst @ericsnowcurrently
289+
Lib/test/test_interpreters/ @ericsnowcurrently
289290
Lib/concurrent/futures/interpreter.py @ericsnowcurrently
290-
Doc/library/interpreters.rst @ericsnowcurrently
291291

292292
# Android
293293
**/*Android* @mhsmith @freakboy3742

Doc/library/concurrency.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@ multitasking). Here's an overview:
1818
multiprocessing.shared_memory.rst
1919
concurrent.rst
2020
concurrent.futures.rst
21+
concurrent.interpreters.rst
2122
subprocess.rst
2223
sched.rst
2324
queue.rst
2425
contextvars.rst
2526

26-
Also see the :mod:`interpreters` module.
27-
2827

2928
The following are support modules for some of the above services:
3029

Doc/library/interpreters.rst renamed to Doc/library/concurrent.interpreters.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
:mod:`!interpreters` --- Multiple Interpreters in the Same Process
2-
==================================================================
1+
:mod:`concurrent.!interpreters` --- Multiple Interpreters in the Same Process
2+
=============================================================================
33

4-
.. module:: interpreters
4+
.. module:: concurrent.interpreters
55
:synopsis: Multiple Interpreters in the Same Process
66

77
.. moduleauthor:: Eric Snow <ericsnowcurrently@gmail.com>
88
.. sectionauthor:: Eric Snow <ericsnowcurrently@gmail.com>
99

1010
.. versionadded:: 3.14
1111

12-
**Source code:** :source:`Lib/interpreters/__init__.py`
12+
**Source code:** :source:`Lib/concurrent/interpreters.py`
1313

1414
--------------
1515

1616

1717
Introduction
1818
------------
1919

20-
The :mod:`!interpreters` module constructs higher-level interfaces
21-
on top of the lower level :mod:`!_interpreters` module.
20+
The :mod:`!concurrent.interpreters` module constructs higher-level
21+
interfaces on top of the lower level :mod:`!_interpreters` module.
2222

2323
.. XXX Add references to the upcoming HOWTO docs in the seealso block.
2424
@@ -167,7 +167,7 @@ Basic Usage
167167

168168
Creating an interpreter and running code in it::
169169

170-
import interpreters
170+
from concurrent import interpreters
171171

172172
interp = interpreters.create()
173173

Doc/library/concurrent.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
The :mod:`!concurrent` package
22
==============================
33

4-
Currently, there is only one module in this package:
4+
Currently, there are only two modules in this package:
55

66
* :mod:`concurrent.futures` -- Launching parallel tasks
7+
* :mod:`concurrent.interpreters` -- Multiple interpreters in the same process

Doc/library/python.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ overview:
1717
builtins.rst
1818
__main__.rst
1919
warnings.rst
20-
interpreters.rst
2120
dataclasses.rst
2221
contextlib.rst
2322
abc.rst
@@ -28,3 +27,8 @@ overview:
2827
inspect.rst
2928
annotationlib.rst
3029
site.rst
30+
31+
.. seealso::
32+
33+
* See the :mod:`concurrent.interpreters` module, which similarly
34+
exposes core runtime functionality.

Doc/whatsnew/3.14.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ Each of these separate copies is called an "interpreter".
135135
However, the feature has been available only through the C-API.
136136

137137
That limitation is removed in the 3.14 release,
138-
with the new :mod:`interpreters` module!
138+
with the new :mod:`concurrent.interpreters` module!
139139

140140
There are at least two notable reasons why using multiple interpreters
141141
is worth considering:
File renamed without changes.

Lib/test/support/channels.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import time
44
import _interpchannels as _channels
5-
from interpreters import _crossinterp
5+
from concurrent.interpreters import _crossinterp
66

77
# aliases:
88
from _interpchannels import (
99
ChannelError, ChannelNotFoundError, ChannelClosedError, # noqa: F401
1010
ChannelEmptyError, ChannelNotEmptyError, # noqa: F401
1111
)
12-
from interpreters._crossinterp import (
12+
from concurrent.interpreters._crossinterp import (
1313
UNBOUND_ERROR, UNBOUND_REMOVE,
1414
)
1515

Lib/test/test__interpchannels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from test.support import import_helper, skip_if_sanitizer
1010

1111
_channels = import_helper.import_module('_interpchannels')
12-
from interpreters import _crossinterp
12+
from concurrent.interpreters import _crossinterp
1313
from test.test__interpreters import (
1414
_interpreters,
1515
_run_output,

Lib/test/test_concurrent_futures/test_interpreter_pool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from concurrent.futures.interpreter import (
99
ExecutionFailed, BrokenInterpreterPool,
1010
)
11-
from interpreters import _queues as queues
11+
from concurrent.interpreters import _queues as queues
1212
import _interpreters
1313
from test import support
1414
import test.test_asyncio.utils as testasyncio_utils

Lib/test/test_interpreters/test_api.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
from test.support import import_helper
1414
# Raise SkipTest if subinterpreters not supported.
1515
_interpreters = import_helper.import_module('_interpreters')
16-
import interpreters
16+
from concurrent import interpreters
1717
from test.support import Py_GIL_DISABLED
1818
from test.support import force_not_colorized
1919
import test._crossinterp_definitions as defs
20-
from interpreters import (
20+
from concurrent.interpreters import (
2121
InterpreterError, InterpreterNotFoundError, ExecutionFailed,
2222
)
2323
from .utils import (
@@ -133,7 +133,7 @@ def test_in_subinterpreter(self):
133133
main, = interpreters.list_all()
134134
interp = interpreters.create()
135135
out = _run_output(interp, dedent("""
136-
import interpreters
136+
from concurrent import interpreters
137137
interp = interpreters.create()
138138
print(interp.id)
139139
"""))
@@ -196,7 +196,7 @@ def test_subinterpreter(self):
196196
main = interpreters.get_main()
197197
interp = interpreters.create()
198198
out = _run_output(interp, dedent("""
199-
import interpreters
199+
from concurrent import interpreters
200200
cur = interpreters.get_current()
201201
print(cur.id)
202202
"""))
@@ -213,7 +213,7 @@ def test_idempotent(self):
213213
with self.subTest('subinterpreter'):
214214
interp = interpreters.create()
215215
out = _run_output(interp, dedent("""
216-
import interpreters
216+
from concurrent import interpreters
217217
cur = interpreters.get_current()
218218
print(id(cur))
219219
cur = interpreters.get_current()
@@ -225,7 +225,7 @@ def test_idempotent(self):
225225
with self.subTest('per-interpreter'):
226226
interp = interpreters.create()
227227
out = _run_output(interp, dedent("""
228-
import interpreters
228+
from concurrent import interpreters
229229
cur = interpreters.get_current()
230230
print(id(cur))
231231
"""))
@@ -582,7 +582,7 @@ def test_from_current(self):
582582
main, = interpreters.list_all()
583583
interp = interpreters.create()
584584
out = _run_output(interp, dedent(f"""
585-
import interpreters
585+
from concurrent import interpreters
586586
interp = interpreters.Interpreter({interp.id})
587587
try:
588588
interp.close()
@@ -599,7 +599,7 @@ def test_from_sibling(self):
599599
self.assertEqual(set(interpreters.list_all()),
600600
{main, interp1, interp2})
601601
interp1.exec(dedent(f"""
602-
import interpreters
602+
from concurrent import interpreters
603603
interp2 = interpreters.Interpreter({interp2.id})
604604
interp2.close()
605605
interp3 = interpreters.create()
@@ -806,7 +806,7 @@ def eggs():
806806
ham()
807807
""")
808808
scriptfile = self.make_script('script.py', tempdir, text="""
809-
import interpreters
809+
from concurrent import interpreters
810810
811811
def script():
812812
import spam
@@ -827,7 +827,7 @@ def script():
827827
~~~~~~~~~~~^^^^^^^^
828828
{interpmod_line.strip()}
829829
raise ExecutionFailed(excinfo)
830-
interpreters.ExecutionFailed: RuntimeError: uh-oh!
830+
concurrent.interpreters.ExecutionFailed: RuntimeError: uh-oh!
831831
832832
Uncaught in the interpreter:
833833
@@ -1281,7 +1281,7 @@ def run(text):
12811281
# no module indirection
12821282
with self.subTest('no indirection'):
12831283
text = run(f"""
1284-
import interpreters
1284+
from concurrent import interpreters
12851285
12861286
def spam():
12871287
# This a global var...
@@ -1301,7 +1301,7 @@ def run(interp, func):
13011301
""")
13021302
with self.subTest('indirect as func, direct interp'):
13031303
text = run(f"""
1304-
import interpreters
1304+
from concurrent import interpreters
13051305
import mymod
13061306
13071307
def spam():
@@ -1317,7 +1317,7 @@ def spam():
13171317

13181318
# indirect as func, indirect interp
13191319
new_mod('mymod', f"""
1320-
import interpreters
1320+
from concurrent import interpreters
13211321
def run(func):
13221322
interp = interpreters.create()
13231323
return interp.call(func)

Lib/test/test_interpreters/test_channels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from test.support import import_helper
99
# Raise SkipTest if subinterpreters not supported.
1010
_channels = import_helper.import_module('_interpchannels')
11-
import interpreters
11+
from concurrent import interpreters
1212
from test.support import channels
1313
from .utils import _run_output, TestBase
1414

Lib/test/test_interpreters/test_lifecycle.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def test_sys_path_0(self):
119119
# The main interpreter's sys.path[0] should be used by subinterpreters.
120120
script = '''
121121
import sys
122-
import interpreters
122+
from concurrent import interpreters
123123
124124
orig = sys.path[0]
125125
@@ -170,7 +170,7 @@ def test_gh_109793(self):
170170
# is reported, even when subinterpreters get cleaned up at the end.
171171
import subprocess
172172
argv = [sys.executable, '-c', '''if True:
173-
import interpreters
173+
from concurrent import interpreters
174174
interp = interpreters.create()
175175
raise Exception
176176
''']

Lib/test/test_interpreters/test_queues.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
from test.support import import_helper, Py_DEBUG
88
# Raise SkipTest if subinterpreters not supported.
99
_queues = import_helper.import_module('_interpqueues')
10-
import interpreters
11-
from interpreters import _queues as queues, _crossinterp
10+
from concurrent import interpreters
11+
from concurrent.interpreters import _queues as queues, _crossinterp
1212
from .utils import _run_output, TestBase as _TestBase
1313

1414

@@ -126,7 +126,7 @@ def test_shareable(self):
126126

127127
interp = interpreters.create()
128128
interp.exec(dedent(f"""
129-
from interpreters import _queues as queues
129+
from concurrent.interpreters import _queues as queues
130130
queue1 = queues.Queue({queue1.id})
131131
"""));
132132

@@ -324,7 +324,7 @@ def test_put_get_full_fallback(self):
324324
def test_put_get_same_interpreter(self):
325325
interp = interpreters.create()
326326
interp.exec(dedent("""
327-
from interpreters import _queues as queues
327+
from concurrent.interpreters import _queues as queues
328328
queue = queues.create()
329329
"""))
330330
for methname in ('get', 'get_nowait'):
@@ -351,7 +351,7 @@ def test_put_get_different_interpreters(self):
351351
out = _run_output(
352352
interp,
353353
dedent(f"""
354-
from interpreters import _queues as queues
354+
from concurrent.interpreters import _queues as queues
355355
queue1 = queues.Queue({queue1.id})
356356
queue2 = queues.Queue({queue2.id})
357357
assert queue1.qsize() == 1, 'expected: queue1.qsize() == 1'
@@ -390,7 +390,7 @@ def common(queue, unbound=None, presize=0):
390390
interp = interpreters.create()
391391

392392
_run_output(interp, dedent(f"""
393-
from interpreters import _queues as queues
393+
from concurrent.interpreters import _queues as queues
394394
queue = queues.Queue({queue.id})
395395
obj1 = b'spam'
396396
obj2 = b'eggs'
@@ -468,7 +468,7 @@ def test_put_cleared_with_subinterpreter_mixed(self):
468468
queue = queues.create()
469469
interp = interpreters.create()
470470
_run_output(interp, dedent(f"""
471-
from interpreters import _queues as queues
471+
from concurrent.interpreters import _queues as queues
472472
queue = queues.Queue({queue.id})
473473
queue.put(1, unbounditems=queues.UNBOUND)
474474
queue.put(2, unbounditems=queues.UNBOUND_ERROR)
@@ -504,14 +504,14 @@ def test_put_cleared_with_subinterpreter_multiple(self):
504504

505505
queue.put(1)
506506
_run_output(interp1, dedent(f"""
507-
from interpreters import _queues as queues
507+
from concurrent.interpreters import _queues as queues
508508
queue = queues.Queue({queue.id})
509509
obj1 = queue.get()
510510
queue.put(2, unbounditems=queues.UNBOUND)
511511
queue.put(obj1, unbounditems=queues.UNBOUND_REMOVE)
512512
"""))
513513
_run_output(interp2, dedent(f"""
514-
from interpreters import _queues as queues
514+
from concurrent.interpreters import _queues as queues
515515
queue = queues.Queue({queue.id})
516516
obj2 = queue.get()
517517
obj1 = queue.get()

Lib/test/test_interpreters/test_stress.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from test.support import threading_helper
77
# Raise SkipTest if subinterpreters not supported.
88
import_helper.import_module('_interpreters')
9-
import interpreters
9+
from concurrent import interpreters
1010
from .utils import TestBase
1111

1212

Lib/test/test_interpreters/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import _interpreters
2222
except ImportError as exc:
2323
raise unittest.SkipTest(str(exc))
24-
import interpreters
24+
from concurrent import interpreters
2525

2626

2727
try:

Lib/test/test_sys.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from test.support import force_not_colorized
2525
from test.support import SHORT_TIMEOUT
2626
try:
27-
import interpreters
27+
from concurrent import interpreters
2828
except ImportError:
2929
interpreters = None
3030
import textwrap

Lib/test/test_threading.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from test import support
2929

3030
try:
31-
import interpreters
31+
from concurrent import interpreters
3232
except ImportError:
3333
interpreters = None
3434

0 commit comments

Comments
 (0)