tempfile.pyi: readability improvements (#7959)

The name `_DirT` implies that it is a `TypeVar`, but it isn't; it's a generic `TypeAlias` that can be parameterised with a `TypeVar`. Rename it to just `_Dir` instead.

Also, use aliases instead of repeating incredibly long Literal annotations six times.
This commit is contained in:
Alex Waygood
2022-05-27 08:52:44 +01:00
committed by GitHub
parent 7d34d75582
commit c05731c46f

View File

@@ -31,31 +31,33 @@ TMP_MAX: int
tempdir: str | None
template: str
_DirT: TypeAlias = AnyStr | os.PathLike[AnyStr]
_Dir: TypeAlias = AnyStr | os.PathLike[AnyStr]
_StrMode: TypeAlias = Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"]
_BytesMode: TypeAlias = Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"]
if sys.version_info >= (3, 8):
@overload
def NamedTemporaryFile(
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
mode: _StrMode,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
*,
errors: str | None = ...,
) -> _TemporaryFileWrapper[str]: ...
@overload
def NamedTemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
*,
errors: str | None = ...,
@@ -68,7 +70,7 @@ if sys.version_info >= (3, 8):
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
*,
errors: str | None = ...,
@@ -77,24 +79,24 @@ if sys.version_info >= (3, 8):
else:
@overload
def NamedTemporaryFile(
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
mode: _StrMode,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
) -> _TemporaryFileWrapper[str]: ...
@overload
def NamedTemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
) -> _TemporaryFileWrapper[bytes]: ...
@overload
@@ -105,7 +107,7 @@ else:
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
delete: bool = ...,
) -> _TemporaryFileWrapper[Any]: ...
@@ -115,25 +117,25 @@ else:
if sys.version_info >= (3, 8):
@overload
def TemporaryFile(
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
mode: _StrMode,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
*,
errors: str | None = ...,
) -> IO[str]: ...
@overload
def TemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
*,
errors: str | None = ...,
) -> IO[bytes]: ...
@@ -145,30 +147,30 @@ else:
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
*,
errors: str | None = ...,
) -> IO[Any]: ...
else:
@overload
def TemporaryFile(
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"],
mode: _StrMode,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
) -> IO[str]: ...
@overload
def TemporaryFile(
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
) -> IO[bytes]: ...
@overload
def TemporaryFile(
@@ -178,7 +180,7 @@ else:
newline: str | None = ...,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
) -> IO[Any]: ...
class _TemporaryFileWrapper(Generic[AnyStr], IO[AnyStr]):
@@ -236,7 +238,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
def __init__(
self: SpooledTemporaryFile[bytes],
max_size: int = ...,
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
@@ -250,7 +252,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
def __init__(
self: SpooledTemporaryFile[str],
max_size: int = ...,
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] = ...,
mode: _StrMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
@@ -281,7 +283,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
def __init__(
self: SpooledTemporaryFile[bytes],
max_size: int = ...,
mode: Literal["rb", "wb", "ab", "xb", "r+b", "w+b", "a+b", "x+b"] = ...,
mode: _BytesMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
@@ -293,7 +295,7 @@ class SpooledTemporaryFile(IO[AnyStr], _SpooledTemporaryFileBase):
def __init__(
self: SpooledTemporaryFile[str],
max_size: int = ...,
mode: Literal["r", "w", "a", "x", "r+", "w+", "a+", "x+", "rt", "wt", "at", "xt", "r+t", "w+t", "a+t", "x+t"] = ...,
mode: _StrMode = ...,
buffering: int = ...,
encoding: str | None = ...,
newline: str | None = ...,
@@ -365,14 +367,14 @@ class TemporaryDirectory(Generic[AnyStr]):
self,
suffix: AnyStr | None = ...,
prefix: AnyStr | None = ...,
dir: _DirT[AnyStr] | None = ...,
dir: _Dir[AnyStr] | None = ...,
ignore_cleanup_errors: bool = ...,
) -> None: ...
else:
@overload
def __init__(self: TemporaryDirectory[str], suffix: None = ..., prefix: None = ..., dir: None = ...) -> None: ...
@overload
def __init__(self, suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _DirT[AnyStr] | None = ...) -> None: ...
def __init__(self, suffix: AnyStr | None = ..., prefix: AnyStr | None = ..., dir: _Dir[AnyStr] | None = ...) -> None: ...
def cleanup(self) -> None: ...
def __enter__(self) -> AnyStr: ...
@@ -383,18 +385,18 @@ class TemporaryDirectory(Generic[AnyStr]):
# The overloads overlap, but they should still work fine.
@overload
def mkstemp( # type: ignore[misc]
suffix: str | None = ..., prefix: str | None = ..., dir: _DirT[str] | None = ..., text: bool = ...
suffix: str | None = ..., prefix: str | None = ..., dir: _Dir[str] | None = ..., text: bool = ...
) -> tuple[int, str]: ...
@overload
def mkstemp(
suffix: bytes | None = ..., prefix: bytes | None = ..., dir: _DirT[bytes] | None = ..., text: bool = ...
suffix: bytes | None = ..., prefix: bytes | None = ..., dir: _Dir[bytes] | None = ..., text: bool = ...
) -> tuple[int, bytes]: ...
# The overloads overlap, but they should still work fine.
@overload
def mkdtemp(suffix: str | None = ..., prefix: str | None = ..., dir: _DirT[str] | None = ...) -> str: ... # type: ignore[misc]
def mkdtemp(suffix: str | None = ..., prefix: str | None = ..., dir: _Dir[str] | None = ...) -> str: ... # type: ignore[misc]
@overload
def mkdtemp(suffix: bytes | None = ..., prefix: bytes | None = ..., dir: _DirT[bytes] | None = ...) -> bytes: ...
def mkdtemp(suffix: bytes | None = ..., prefix: bytes | None = ..., dir: _Dir[bytes] | None = ...) -> bytes: ...
def mktemp(suffix: str = ..., prefix: str = ..., dir: StrPath | None = ...) -> str: ...
def gettempdirb() -> bytes: ...
def gettempprefixb() -> bytes: ...