mirror of https://github.com/python/cpython
bpo-39481: PEP 585 for a variety of modules (GH-19423)
- concurrent.futures - ctypes - http.cookies - multiprocessing - queue - tempfile - unittest.case - urllib.parse
This commit is contained in:
parent
e3ec44d692
commit
0361556537
|
@ -7,6 +7,7 @@ import collections
|
|||
import logging
|
||||
import threading
|
||||
import time
|
||||
import types
|
||||
|
||||
FIRST_COMPLETED = 'FIRST_COMPLETED'
|
||||
FIRST_EXCEPTION = 'FIRST_EXCEPTION'
|
||||
|
@ -544,6 +545,8 @@ class Future(object):
|
|||
self._condition.notify_all()
|
||||
self._invoke_callbacks()
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
class Executor(object):
|
||||
"""This is an abstract base class for concrete asynchronous executors."""
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ from concurrent.futures import _base
|
|||
import itertools
|
||||
import queue
|
||||
import threading
|
||||
import types
|
||||
import weakref
|
||||
import os
|
||||
|
||||
|
@ -57,6 +58,8 @@ class _WorkItem(object):
|
|||
else:
|
||||
self.future.set_result(result)
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
def _worker(executor_reference, work_queue, initializer, initargs):
|
||||
if initializer is not None:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
"""create and manipulate C data types in Python"""
|
||||
|
||||
import os as _os, sys as _sys
|
||||
import types as _types
|
||||
|
||||
__version__ = "1.1.0"
|
||||
|
||||
|
@ -450,6 +451,8 @@ class LibraryLoader(object):
|
|||
def LoadLibrary(self, name):
|
||||
return self._dlltype(name)
|
||||
|
||||
__class_getitem__ = classmethod(_types.GenericAlias)
|
||||
|
||||
cdll = LibraryLoader(CDLL)
|
||||
pydll = LibraryLoader(PyDLL)
|
||||
|
||||
|
|
|
@ -131,6 +131,7 @@ Finis.
|
|||
#
|
||||
import re
|
||||
import string
|
||||
import types
|
||||
|
||||
__all__ = ["CookieError", "BaseCookie", "SimpleCookie"]
|
||||
|
||||
|
@ -419,6 +420,8 @@ class Morsel(dict):
|
|||
# Return the result
|
||||
return _semispacejoin(result)
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
#
|
||||
# Pattern for finding cookie
|
||||
|
|
|
@ -21,6 +21,7 @@ import signal
|
|||
import array
|
||||
import queue
|
||||
import time
|
||||
import types
|
||||
import os
|
||||
from os import getpid
|
||||
|
||||
|
@ -1129,6 +1130,8 @@ class ValueProxy(BaseProxy):
|
|||
return self._callmethod('set', (value,))
|
||||
value = property(get, set)
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
BaseListProxy = MakeProxyType('BaseListProxy', (
|
||||
'__add__', '__contains__', '__delitem__', '__getitem__', '__len__',
|
||||
|
|
|
@ -20,6 +20,7 @@ import queue
|
|||
import threading
|
||||
import time
|
||||
import traceback
|
||||
import types
|
||||
import warnings
|
||||
from queue import Empty
|
||||
|
||||
|
@ -780,6 +781,8 @@ class ApplyResult(object):
|
|||
del self._cache[self._job]
|
||||
self._pool = None
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
AsyncResult = ApplyResult # create alias -- see #17805
|
||||
|
||||
#
|
||||
|
|
|
@ -14,6 +14,7 @@ import os
|
|||
import threading
|
||||
import collections
|
||||
import time
|
||||
import types
|
||||
import weakref
|
||||
import errno
|
||||
|
||||
|
@ -366,3 +367,5 @@ class SimpleQueue(object):
|
|||
else:
|
||||
with self._wlock:
|
||||
self._writer.send_bytes(obj)
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
|
|
@ -14,6 +14,7 @@ import os
|
|||
import errno
|
||||
import struct
|
||||
import secrets
|
||||
import types
|
||||
|
||||
if os.name == "nt":
|
||||
import _winapi
|
||||
|
@ -508,3 +509,5 @@ class ShareableList:
|
|||
return position
|
||||
else:
|
||||
raise ValueError(f"{value!r} not in this container")
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'''A multi-producer, multi-consumer queue.'''
|
||||
|
||||
import threading
|
||||
import types
|
||||
from collections import deque
|
||||
from heapq import heappush, heappop
|
||||
from time import monotonic as time
|
||||
|
@ -216,6 +217,8 @@ class Queue:
|
|||
def _get(self):
|
||||
return self.queue.popleft()
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
class PriorityQueue(Queue):
|
||||
'''Variant of Queue that retrieves open entries in priority order (lowest first).
|
||||
|
@ -316,6 +319,8 @@ class _PySimpleQueue:
|
|||
'''Return the approximate size of the queue (not reliable!).'''
|
||||
return len(self._queue)
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
if SimpleQueue is None:
|
||||
SimpleQueue = _PySimpleQueue
|
||||
|
|
|
@ -829,3 +829,5 @@ class TemporaryDirectory(object):
|
|||
def cleanup(self):
|
||||
if self._finalizer.detach():
|
||||
self._rmtree(self.name)
|
||||
|
||||
__class_getitem__ = classmethod(_types.GenericAlias)
|
||||
|
|
|
@ -6,16 +6,28 @@ from collections import (
|
|||
defaultdict, deque, OrderedDict, Counter, UserDict, UserList
|
||||
)
|
||||
from collections.abc import *
|
||||
from concurrent.futures import Future
|
||||
from concurrent.futures.thread import _WorkItem
|
||||
from contextlib import AbstractContextManager, AbstractAsyncContextManager
|
||||
from ctypes import Array, LibraryLoader
|
||||
from difflib import SequenceMatcher
|
||||
from filecmp import dircmp
|
||||
from fileinput import FileInput
|
||||
from mmap import mmap
|
||||
from ipaddress import IPv4Network, IPv4Interface, IPv6Network, IPv6Interface
|
||||
from itertools import chain
|
||||
from http.cookies import Morsel
|
||||
from multiprocessing.managers import ValueProxy
|
||||
from multiprocessing.pool import ApplyResult
|
||||
from multiprocessing.shared_memory import ShareableList
|
||||
from multiprocessing.queues import SimpleQueue
|
||||
from os import DirEntry
|
||||
from re import Pattern, Match
|
||||
from types import GenericAlias, MappingProxyType, AsyncGeneratorType
|
||||
from tempfile import TemporaryDirectory, SpooledTemporaryFile
|
||||
from urllib.parse import SplitResult, ParseResult
|
||||
from unittest.case import _AssertRaisesContext
|
||||
from queue import Queue, SimpleQueue
|
||||
import typing
|
||||
|
||||
from typing import TypeVar
|
||||
|
@ -49,6 +61,15 @@ class BaseTest(unittest.TestCase):
|
|||
DirEntry,
|
||||
IPv4Network, IPv4Interface, IPv6Network, IPv6Interface,
|
||||
chain,
|
||||
TemporaryDirectory, SpooledTemporaryFile,
|
||||
Queue, SimpleQueue,
|
||||
_AssertRaisesContext,
|
||||
Array, LibraryLoader,
|
||||
SplitResult, ParseResult,
|
||||
ValueProxy, ApplyResult,
|
||||
ShareableList, SimpleQueue,
|
||||
Future, _WorkItem,
|
||||
Morsel,
|
||||
):
|
||||
tname = t.__name__
|
||||
with self.subTest(f"Testing {tname}"):
|
||||
|
|
|
@ -241,6 +241,8 @@ class _AssertRaisesContext(_AssertRaisesBaseContext):
|
|||
expected_regex.pattern, str(exc_value)))
|
||||
return True
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
class _AssertWarnsContext(_AssertRaisesBaseContext):
|
||||
"""A context manager used to implement TestCase.assertWarns* methods."""
|
||||
|
|
|
@ -29,6 +29,7 @@ test_urlparse.py provides a good indicator of parsing behavior.
|
|||
|
||||
import re
|
||||
import sys
|
||||
import types
|
||||
import collections
|
||||
import warnings
|
||||
|
||||
|
@ -176,6 +177,8 @@ class _NetlocResultMixinBase(object):
|
|||
raise ValueError("Port out of range 0-65535")
|
||||
return port
|
||||
|
||||
__class_getitem__ = classmethod(types.GenericAlias)
|
||||
|
||||
|
||||
class _NetlocResultMixinStr(_NetlocResultMixinBase, _ResultMixinStr):
|
||||
__slots__ = ()
|
||||
|
|
|
@ -4798,6 +4798,12 @@ Array_length(PyObject *myself)
|
|||
return self->b_length;
|
||||
}
|
||||
|
||||
static PyMethodDef Array_methods[] = {
|
||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
static PySequenceMethods Array_as_sequence = {
|
||||
Array_length, /* sq_length; */
|
||||
0, /* sq_concat; */
|
||||
|
@ -4846,7 +4852,7 @@ PyTypeObject PyCArray_Type = {
|
|||
0, /* tp_weaklistoffset */
|
||||
0, /* tp_iter */
|
||||
0, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
Array_methods, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
|
|
|
@ -302,6 +302,8 @@ static PyMethodDef simplequeue_methods[] = {
|
|||
_QUEUE_SIMPLEQUEUE_PUT_METHODDEF
|
||||
_QUEUE_SIMPLEQUEUE_PUT_NOWAIT_METHODDEF
|
||||
_QUEUE_SIMPLEQUEUE_QSIZE_METHODDEF
|
||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue