Clean up stubtest allowlist for typing (#10205)

This commit is contained in:
Jelle Zijlstra
2023-05-24 12:33:46 -07:00
committed by GitHub
parent e4dcfccbd5
commit 185adf01a9
8 changed files with 124 additions and 9 deletions

View File

@@ -211,6 +211,7 @@ if sys.version_info >= (3, 11):
NotRequired: _SpecialForm
LiteralString: _SpecialForm
@_final
class TypeVarTuple:
@property
def __name__(self) -> str: ...
@@ -220,16 +221,19 @@ if sys.version_info >= (3, 11):
def __typing_prepare_subst__(self, alias: Incomplete, args: Incomplete) -> Incomplete: ...
if sys.version_info >= (3, 10):
@_final
class ParamSpecArgs:
@property
def __origin__(self) -> ParamSpec: ...
def __init__(self, origin: ParamSpec) -> None: ...
@_final
class ParamSpecKwargs:
@property
def __origin__(self) -> ParamSpec: ...
def __init__(self, origin: ParamSpec) -> None: ...
@_final
class ParamSpec:
@property
def __name__(self) -> str: ...
@@ -272,7 +276,7 @@ if sys.version_info >= (3, 10):
class NewType:
def __init__(self, name: str, tp: Any) -> None: ...
def __call__(self, x: _T) -> _T: ...
def __call__(self, __x: _T) -> _T: ...
def __or__(self, other: Any) -> _SpecialForm: ...
def __ror__(self, other: Any) -> _SpecialForm: ...
__supertype__: type

View File

@@ -22,7 +22,6 @@ from typing import ( # noqa: Y022,Y039
DefaultDict as DefaultDict,
Deque as Deque,
Mapping,
NewType as NewType,
NoReturn as NoReturn,
Sequence,
SupportsAbs as SupportsAbs,
@@ -97,6 +96,7 @@ __all__ = [
"runtime_checkable",
"Text",
"TypeAlias",
"TypeAliasType",
"TypeGuard",
"TYPE_CHECKING",
"Never",
@@ -106,6 +106,7 @@ __all__ = [
"clear_overloads",
"get_args",
"get_origin",
"get_original_bases",
"get_overloads",
"get_type_hints",
]
@@ -196,10 +197,11 @@ class SupportsIndex(Protocol, metaclass=abc.ABCMeta):
@abc.abstractmethod
def __index__(self) -> int: ...
# New things in 3.10
# New and changed things in 3.10
if sys.version_info >= (3, 10):
from typing import (
Concatenate as Concatenate,
NewType as NewType,
ParamSpecArgs as ParamSpecArgs,
ParamSpecKwargs as ParamSpecKwargs,
TypeAlias as TypeAlias,
@@ -207,12 +209,16 @@ if sys.version_info >= (3, 10):
is_typeddict as is_typeddict,
)
else:
@final
class ParamSpecArgs:
__origin__: ParamSpec
@property
def __origin__(self) -> ParamSpec: ...
def __init__(self, origin: ParamSpec) -> None: ...
@final
class ParamSpecKwargs:
__origin__: ParamSpec
@property
def __origin__(self) -> ParamSpec: ...
def __init__(self, origin: ParamSpec) -> None: ...
Concatenate: _SpecialForm
@@ -220,6 +226,11 @@ else:
TypeGuard: _SpecialForm
def is_typeddict(tp: object) -> bool: ...
class NewType:
def __init__(self, name: str, tp: Any) -> None: ...
def __call__(self, __x: _T) -> _T: ...
__supertype__: type
# New things in 3.11
# NamedTuples are not new, but the ability to create generic NamedTuples is new in 3.11
if sys.version_info >= (3, 11):

View File

@@ -172,3 +172,14 @@ dataclasses.KW_ONLY
# We pretend it's a read-only property for forward compatibility with 3.12
typing.ParamSpec(Args|Kwargs).__origin__
# https://github.com/python/mypy/issues/15302
typing_extensions\.assert_never
typing_extensions\.assert_type
typing_extensions\.reveal_type
typing.NewType.__call__
# Super-special typing primitives
typing_extensions\.Final
typing\.NamedTuple
typing\.Annotated

View File

@@ -126,7 +126,7 @@ contextlib.AbstractAsyncContextManager.__class_getitem__
contextlib.AbstractContextManager.__class_getitem__
# Super-special typing primitives
typing._SpecialForm.__mro_entries__
typing\._SpecialForm.*
typing._TypedDict.__delitem__
typing._TypedDict.__ior__
typing._TypedDict.__or__
@@ -137,6 +137,10 @@ typing._TypedDict.pop
typing._TypedDict.setdefault
typing._TypedDict.update
typing._TypedDict.values
typing_extensions\.Final
typing\.NamedTuple
typing\.LiteralString
typing\.Annotated
# White lies around defaults
dataclasses.KW_ONLY

View File

@@ -151,3 +151,11 @@ types.GetSetDescriptorType.__get__
types.MemberDescriptorType.__get__
types.MethodDescriptorType.__get__
types.WrapperDescriptorType.__get__
# https://github.com/python/mypy/issues/15302
typing_extensions\.assert_never
typing_extensions\.assert_type
typing_extensions\.reveal_type
# Doesn't exist at runtime
typing\.Protocol

View File

@@ -169,3 +169,11 @@ types.GetSetDescriptorType.__get__
types.MemberDescriptorType.__get__
types.MethodDescriptorType.__get__
types.WrapperDescriptorType.__get__
# https://github.com/python/mypy/issues/15302
typing_extensions\.assert_never
typing_extensions\.assert_type
typing_extensions\.reveal_type
# Super-special typing primitives
typing_extensions\.Final

View File

@@ -165,3 +165,13 @@ types.GetSetDescriptorType.__get__
types.MemberDescriptorType.__get__
types.MethodDescriptorType.__get__
types.WrapperDescriptorType.__get__
# https://github.com/python/mypy/issues/15302
typing_extensions\.assert_never
typing_extensions\.assert_type
typing_extensions\.reveal_type
# Super-special typing primitives
typing_extensions\.Final
typing\.NamedTuple
typing\.Annotated

View File

@@ -407,9 +407,68 @@ pickle.Unpickler.memo # undocumented implementation detail, has different type
re.Pattern.scanner # Undocumented and not useful. #6405
tempfile._TemporaryFileWrapper.[\w_]+ # Dynamically specified by __getattr__, and thus don't exist on the class
# Various classes in typing aren't types at runtime. In addition, mypy thinks some special forms are tautologically defined.
typing.[A-Z]\w+
typing_extensions\..*
# Details of runtime definition don't need to be in stubs
typing_extensions\._SpecialForm.*
typing_extensions\.TypeVar.*
typing_extensions\.ParamSpec.*
typing\.Generic
typing\.Protocol
# Special primitives
typing_extensions\.Annotated
typing_extensions\.NamedTuple
typing_extensions\.LiteralString
typing_extensions\.Coroutine
typing_extensions\.Awaitable
typing_extensions\.AsyncIterator
typing_extensions\.AsyncIterable
typing_extensions\.AsyncGenerator
typing\.ValuesView
typing\.Sized
typing\.Sequence
typing\.Reversible
typing\.Pattern
typing\.MutableSet
typing\.MutableSequence
typing\.MutableMapping
typing\.Match
typing\.MappingView
typing\.Mapping
typing\.KeysView
typing\.Iterator
typing\.Iterable
typing\.ItemsView
typing\.Hashable
typing\.Generator
typing\.Coroutine
typing\.Collection
typing\.Container
typing\.ByteString
typing\.AwaitableGenerator
typing\.Awaitable
typing\.AsyncIterator
typing\.AsyncIterable
typing\.AsyncGenerator
typing\.AbstractSet
# Internal attributes
.*\.__protocol_attrs__
.*\.__callable_proto_members_only__
# Exist at runtime for internal reasons, no need to put them in the stub
typing_extensions\.TypeAliasType\.__call__
typing_extensions\.TypeAliasType\.__init_subclass__
typing_extensions.NewType.__mro_entries__ # just exists for an error message
# We call them read-only properties, runtime implementation is slightly different
typing_extensions\.TypeAliasType\.__(parameters|type_params|name|module|value)__
# https://github.com/python/mypy/issues/15302
typing_extensions.NewType.__call__
typing_extensions\.deprecated
typing_extensions\.get_original_bases
typing_extensions\.override
# These are abstract properties at runtime,
# but marking them as such in the stub breaks half the the typed-Python ecosystem (see #8726)