aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/support
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2020-05-27 22:33:13 +0100
committerGitHub <noreply@github.com>2020-05-27 23:33:13 +0200
commit7d80b35af1ee03834ae4af83e920dee89c2bc273 (patch)
tree86cd8b2052bc467d5a1bc4478624a70e4e3ec93f /Lib/test/support
parent76ef255bde772005bbd0761399b274c2240e61d3 (diff)
downloadcpython-7d80b35af1ee03834ae4af83e920dee89c2bc273.tar.gz
cpython-7d80b35af1ee03834ae4af83e920dee89c2bc273.zip
Revert "bpo-32604: PEP 554 for use in test suite (GH-19985)" (#20465)
This reverts commit 9d17cbf33df7cfb67ca0f37f6463ba5c18676641.
Diffstat (limited to 'Lib/test/support')
-rw-r--r--Lib/test/support/interpreters.py183
-rw-r--r--Lib/test/support/interpreters.rst145
2 files changed, 0 insertions, 328 deletions
diff --git a/Lib/test/support/interpreters.py b/Lib/test/support/interpreters.py
deleted file mode 100644
index ef9dcafb2a3..00000000000
--- a/Lib/test/support/interpreters.py
+++ /dev/null
@@ -1,183 +0,0 @@
-"""Subinterpreters High Level Module."""
-
-import _xxsubinterpreters as _interpreters
-
-# aliases:
-from _xxsubinterpreters import (
- ChannelError, ChannelNotFoundError, ChannelEmptyError,
- is_shareable,
-)
-
-
-__all__ = [
- 'Interpreter', 'get_current', 'get_main', 'create', 'list_all',
- 'SendChannel', 'RecvChannel',
- 'create_channel', 'list_all_channels', 'is_shareable',
- 'ChannelError', 'ChannelNotFoundError',
- 'ChannelEmptyError',
- ]
-
-
-def create(*, isolated=True):
- """
- Initialize a new (idle) Python interpreter.
- """
- id = _interpreters.create(isolated=isolated)
- return Interpreter(id, isolated=isolated)
-
-
-def list_all():
- """
- Get all existing interpreters.
- """
- return [Interpreter(id) for id in
- _interpreters.list_all()]
-
-
-def get_current():
- """
- Get the currently running interpreter.
- """
- id = _interpreters.get_current()
- return Interpreter(id)
-
-
-def get_main():
- """
- Get the main interpreter.
- """
- id = _interpreters.get_main()
- return Interpreter(id)
-
-
-class Interpreter:
- """
- The Interpreter object represents
- a single interpreter.
- """
-
- def __init__(self, id, *, isolated=None):
- self._id = id
- self._isolated = isolated
-
- @property
- def id(self):
- return self._id
-
- @property
- def isolated(self):
- if self._isolated is None:
- self._isolated = _interpreters.is_isolated(self._id)
- return self._isolated
-
- def is_running(self):
- """
- Return whether or not the identified
- interpreter is running.
- """
- return _interpreters.is_running(self._id)
-
- def close(self):
- """
- Finalize and destroy the interpreter.
-
- Attempting to destroy the current
- interpreter results in a RuntimeError.
- """
- return _interpreters.destroy(self._id)
-
- def run(self, src_str, /, *, channels=None):
- """
- Run the given source code in the interpreter.
- This blocks the current Python thread until done.
- """
- _interpreters.run_string(self._id, src_str)
-
-
-def create_channel():
- """
- Create a new channel for passing data between
- interpreters.
- """
-
- cid = _interpreters.channel_create()
- return (RecvChannel(cid), SendChannel(cid))
-
-
-def list_all_channels():
- """
- Get all open channels.
- """
- return [(RecvChannel(cid), SendChannel(cid))
- for cid in _interpreters.channel_list_all()]
-
-
-_NOT_SET = object()
-
-
-class RecvChannel:
- """
- The RecvChannel object represents
- a recieving channel.
- """
-
- def __init__(self, id):
- self._id = id
-
- def recv(self, *, _delay=10 / 1000): # 10 milliseconds
- """
- Get the next object from the channel,
- and wait if none have been sent.
- Associate the interpreter with the channel.
- """
- import time
- sentinel = object()
- obj = _interpreters.channel_recv(self._id, sentinel)
- while obj is sentinel:
- time.sleep(_delay)
- obj = _interpreters.channel_recv(self._id, sentinel)
- return obj
-
- def recv_nowait(self, default=_NOT_SET):
- """
- Like recv(), but return the default
- instead of waiting.
-
- This function is blocked by a missing low-level
- implementation of channel_recv_wait().
- """
- if default is _NOT_SET:
- return _interpreters.channel_recv(self._id)
- else:
- return _interpreters.channel_recv(self._id, default)
-
-
-class SendChannel:
- """
- The SendChannel object represents
- a sending channel.
- """
-
- def __init__(self, id):
- self._id = id
-
- def send(self, obj):
- """
- Send the object (i.e. its data) to the receiving
- end of the channel and wait. Associate the interpreter
- with the channel.
- """
- import time
- _interpreters.channel_send(self._id, obj)
- time.sleep(2)
-
- def send_nowait(self, obj):
- """
- Like send(), but return False if not received.
-
- This function is blocked by a missing low-level
- implementation of channel_send_wait().
- """
-
- _interpreters.channel_send(self._id, obj)
- return False
diff --git a/Lib/test/support/interpreters.rst b/Lib/test/support/interpreters.rst
deleted file mode 100644
index 37a60b1072a..00000000000
--- a/Lib/test/support/interpreters.rst
+++ /dev/null
@@ -1,145 +0,0 @@
-High-level implementation of Subinterpreters
-============================================
-
-**Source code:** :source:`Lib/test/support/_interpreters.py`
-
---------------
-
-This module provides high-level tools for working with sub-interpreters,
-such as creating them, running code in them, or sending data between them.
-It is a wrapper around the low-level ``__xxsubinterpreters`` module.
-
-.. versionchanged:: added in 3.9
-
-Interpreter Objects
--------------------
-
-The ``Interpreter`` object represents a single interpreter.
-
-.. class:: Interpreter(id)
-
- The class implementing a subinterpreter object.
-
- .. method:: is_running()
-
- Return ``True`` if the identified interpreter is running.
-
- .. method:: close()
-
- Destroy the interpreter. Attempting to destroy the current
- interpreter results in a `RuntimeError`.
-
- .. method:: run(self, src_str, /, *, channels=None):
-
- Run the given source code in the interpreter. This blocks
- the current thread until done. ``channels`` should be in
- the form : `(RecvChannel, SendChannel)`.
-
-RecvChannel Objects
--------------------
-
-The ``RecvChannel`` object represents a recieving channel.
-
-.. class:: RecvChannel(id)
-
- This class represents the receiving end of a channel.
-
- .. method:: recv()
-
- Get the next object from the channel, and wait if
- none have been sent. Associate the interpreter
- with the channel.
-
- .. method:: recv_nowait(default=None)
-
- Like ``recv()``, but return the default result
- instead of waiting.
-
-
-SendChannel Objects
---------------------
-
-The ``SendChannel`` object represents a sending channel.
-
-.. class:: SendChannel(id)
-
- This class represents the sending end of a channel.
-
- .. method:: send(obj)
-
- Send the object ``obj`` to the receiving end of the channel
- and wait. Associate the interpreter with the channel.
-
- .. method:: send_nowait(obj)
-
- Similar to ``send()``, but returns ``False`` if
- *obj* is not immediately received instead of blocking.
-
-
-This module defines the following global functions:
-
-
-.. function:: is_shareable(obj)
-
- Return ``True`` if the object's data can be shared between
- interpreters.
-
-.. function:: create_channel()
-
- Create a new channel for passing data between interpreters.
-
-.. function:: list_all_channels()
-
- Return all open channels.
-
-.. function:: create(*, isolated=True)
-
- Initialize a new (idle) Python interpreter. Get the currently
- running interpreter. This method returns an ``Interpreter`` object.
-
-.. function:: get_current()
-
- Get the currently running interpreter. This method returns
- an ``Interpreter`` object.
-
-.. function:: get_main()
-
- Get the main interpreter. This method returns
- an ``Interpreter`` object.
-
-.. function:: list_all()
-
- Get all existing interpreters. Returns a list
- of ``Interpreter`` objects.
-
-This module also defines the following exceptions.
-
-.. exception:: RunFailedError
-
- This exception, a subclass of :exc:`RuntimeError`, is raised when the
- ``Interpreter.run()`` results in an uncaught exception.
-
-.. exception:: ChannelError
-
- This exception is a subclass of :exc:`Exception`, and is the base
- class for all channel-related exceptions.
-
-.. exception:: ChannelNotFoundError
-
- This exception is a subclass of :exc:`ChannelError`, and is raised
- when the identified channel is not found.
-
-.. exception:: ChannelEmptyError
-
- This exception is a subclass of :exc:`ChannelError`, and is raised when
- the channel is unexpectedly empty.
-
-.. exception:: ChannelNotEmptyError
-
- This exception is a subclass of :exc:`ChannelError`, and is raised when
- the channel is unexpectedly not empty.
-
-.. exception:: NotReceivedError
-
- This exception is a subclass of :exc:`ChannelError`, and is raised when
- nothing was waiting to receive a sent object.