make os._wrap_close not inherit from TextIOWrapper (#12774)

This commit is contained in:
Stephen Morton
2024-10-14 02:39:30 -07:00
committed by GitHub
parent 4b5a7b09a4
commit 16bab543a3
2 changed files with 29 additions and 5 deletions

View File

@@ -634,6 +634,13 @@ tkinter.Place.place_slaves
tkinter.Place.slaves
# Methods that come from __getattr__() at runtime
os._wrap_close.read
os._wrap_close.readable
os._wrap_close.readline
os._wrap_close.readlines
os._wrap_close.writable
os._wrap_close.write
os._wrap_close.writelines
tkinter.Tk.adderrorinfo
tkinter.Tk.call
tkinter.Tk.createcommand

View File

@@ -23,8 +23,9 @@ from abc import abstractmethod
from builtins import OSError
from collections.abc import Callable, Iterable, Iterator, Mapping, MutableMapping, Sequence
from contextlib import AbstractContextManager
from io import BufferedRandom, BufferedReader, BufferedWriter, FileIO, TextIOWrapper as _TextIOWrapper
from io import BufferedRandom, BufferedReader, BufferedWriter, FileIO, TextIOWrapper
from subprocess import Popen
from types import TracebackType
from typing import (
IO,
Any,
@@ -578,7 +579,7 @@ def fdopen(
newline: str | None = ...,
closefd: bool = ...,
opener: _Opener | None = ...,
) -> _TextIOWrapper: ...
) -> TextIOWrapper: ...
@overload
def fdopen(
fd: int,
@@ -917,9 +918,25 @@ if sys.platform != "win32":
if sys.platform != "darwin" and sys.platform != "linux":
def plock(op: int, /) -> None: ...
class _wrap_close(_TextIOWrapper):
def __init__(self, stream: _TextIOWrapper, proc: Popen[str]) -> None: ...
def close(self) -> int | None: ... # type: ignore[override]
class _wrap_close:
def __init__(self, stream: TextIOWrapper, proc: Popen[str]) -> None: ...
def close(self) -> int | None: ...
def __enter__(self) -> Self: ...
def __exit__(
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
) -> None: ...
def __iter__(self) -> Iterator[str]: ...
# Methods below here don't exist directly on the _wrap_close object, but
# are copied from the wrapped TextIOWrapper object via __getattr__.
# The full set of TextIOWrapper methods are technically available this way,
# but undocumented. Only a subset are currently included here.
def read(self, size: int | None = -1, /) -> str: ...
def readable(self) -> bool: ...
def readline(self, size: int = -1, /) -> str: ...
def readlines(self, hint: int = -1, /) -> list[str]: ...
def writable(self) -> bool: ...
def write(self, s: str, /) -> int: ...
def writelines(self, lines: Iterable[str], /) -> None: ...
def popen(cmd: str, mode: str = "r", buffering: int = -1) -> _wrap_close: ...
def spawnl(mode: int, file: StrOrBytesPath, arg0: StrOrBytesPath, *args: StrOrBytesPath) -> int: ...