PEP 604: Remove some more uses of Union/Optional (#7515)

The following patterns still break mypy:

1. `type[]` at top level fails
2. `tuple[T1, T2]` at top level fails (but `tuple[T1, ...]` is fine)
3. `T1 | Callable[..., T2 | T3]` fails, but only <=3.9

This PR cleans up usage of `Union` and `Optional` outside these patterns.
This commit is contained in:
Jelle Zijlstra
2022-03-19 08:23:00 -07:00
committed by GitHub
parent 1acc8f3bd6
commit b7d129f727
7 changed files with 24 additions and 23 deletions

View File

@@ -2,10 +2,10 @@ import socket
import sys
from builtins import type as Type # alias to avoid name clashes with property named "type"
from types import TracebackType
from typing import Any, BinaryIO, Iterable, NoReturn, Union, overload
from typing import Any, BinaryIO, Iterable, NoReturn, overload
# These are based in socket, maybe move them out into _typeshed.pyi or such
_Address = Union[tuple[Any, ...], str]
_Address = tuple[Any, ...] | str
_RetAddress = Any
_WriteBuffer = bytearray | memoryview
_CMSG = tuple[int, int, bytes]

View File

@@ -32,7 +32,6 @@ from typing import (
Protocol,
Sequence,
TypeVar,
Union,
overload,
runtime_checkable,
)
@@ -832,16 +831,16 @@ def execlpe(file: StrOrBytesPath, __arg0: StrOrBytesPath, *args: Any) -> NoRetur
# Not separating out PathLike[str] and PathLike[bytes] here because it doesn't make much difference
# in practice, and doing so would explode the number of combinations in this already long union.
# All these combinations are necessary due to list being invariant.
_ExecVArgs = Union[
tuple[StrOrBytesPath, ...],
list[bytes],
list[str],
list[PathLike[Any]],
list[bytes | str],
list[bytes | PathLike[Any]],
list[str | PathLike[Any]],
list[bytes | str | PathLike[Any]],
]
_ExecVArgs = (
tuple[StrOrBytesPath, ...]
| list[bytes]
| list[str]
| list[PathLike[Any]]
| list[bytes | str]
| list[bytes | PathLike[Any]]
| list[str | PathLike[Any]]
| list[bytes | str | PathLike[Any]]
)
_ExecEnv = Mapping[bytes, bytes | str] | Mapping[str, bytes | str]
def execv(__path: StrOrBytesPath, __argv: _ExecVArgs) -> NoReturn: ...

View File

@@ -1,7 +1,7 @@
import sys
from _typeshed import Self, SupportsWrite
from types import FrameType, TracebackType
from typing import IO, Any, Generator, Iterable, Iterator, Mapping, Optional, overload
from typing import IO, Any, Generator, Iterable, Iterator, Mapping, overload
from typing_extensions import Literal
__all__ = [
@@ -26,7 +26,7 @@ __all__ = [
"walk_tb",
]
_PT = tuple[str, int, str, Optional[str]]
_PT = tuple[str, int, str, str | None]
def print_tb(tb: TracebackType | None, limit: int | None = ..., file: IO[str] | None = ...) -> None: ...

View File

@@ -1,6 +1,6 @@
from abc import abstractmethod
from types import TracebackType
from typing import IO, Callable, MutableMapping, Optional
from typing import IO, Callable, MutableMapping
from .headers import Headers
from .types import ErrorStream, InputStream, StartResponse, WSGIApplication, WSGIEnvironment
@@ -8,7 +8,7 @@ from .util import FileWrapper
__all__ = ["BaseHandler", "SimpleHandler", "BaseCGIHandler", "CGIHandler", "IISCGIHandler", "read_environ"]
_exc_info = tuple[Optional[type[BaseException]], Optional[BaseException], Optional[TracebackType]]
_exc_info = tuple[type[BaseException] | None, BaseException | None, TracebackType | None]
def format_date_time(timestamp: float | None) -> str: ... # undocumented
def read_environ() -> dict[str, str]: ...

View File

@@ -13,8 +13,10 @@ class _SupportsTimeTuple(Protocol):
def timetuple(self) -> time.struct_time: ...
_DateTimeComparable = DateTime | datetime | str | _SupportsTimeTuple
_Marshallable = Union[None, bool, int, float, str, bytes, tuple[Any, ...], list[Any], dict[Any, Any], datetime, DateTime, Binary]
_XMLDate = Union[int, datetime, tuple[int, ...], time.struct_time]
_Marshallable = (
bool | int | float | str | bytes | None | tuple[Any, ...] | list[Any] | dict[Any, Any] | datetime | DateTime | Binary
)
_XMLDate = int | datetime | tuple[int, ...] | time.struct_time
_HostType = Union[tuple[str, dict[str, str]], str]
def escape(s: str) -> str: ... # undocumented