diff --git a/stubs/aiofiles/aiofiles/tempfile/__init__.pyi b/stubs/aiofiles/aiofiles/tempfile/__init__.pyi index bfee5b17a..210dd9cd6 100644 --- a/stubs/aiofiles/aiofiles/tempfile/__init__.pyi +++ b/stubs/aiofiles/aiofiles/tempfile/__init__.pyi @@ -1,3 +1,4 @@ +import sys from _typeshed import ( BytesPath, Incomplete, @@ -21,66 +22,6 @@ _T_co = TypeVar("_T_co", covariant=True) _V_co = TypeVar("_V_co", covariant=True) _T_contra = TypeVar("_T_contra", contravariant=True) -# Text mode: always returns AsyncTextIOWrapper -@overload -def NamedTemporaryFile( - mode: OpenTextMode, - buffering: int = -1, - encoding: str | None = None, - newline: str | None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: StrOrBytesPath | None = None, - delete: bool = True, - loop: AbstractEventLoop | None = None, - executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... - -# Unbuffered binary: returns a FileIO -@overload -def NamedTemporaryFile( - mode: OpenBinaryMode, - buffering: Literal[0], - encoding: None = None, - newline: None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: StrOrBytesPath | None = None, - delete: bool = True, - loop: AbstractEventLoop | None = None, - executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncFileIO]: ... - -# Buffered binary reading/updating: AsyncBufferedReader -@overload -def NamedTemporaryFile( - mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", - buffering: Literal[-1, 1] = -1, - encoding: None = None, - newline: None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: StrOrBytesPath | None = None, - delete: bool = True, - loop: AbstractEventLoop | None = None, - executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... - -# Buffered binary writing: AsyncBufferedIOBase -@overload -def NamedTemporaryFile( - mode: OpenBinaryModeWriting, - buffering: Literal[-1, 1] = -1, - encoding: None = None, - newline: None = None, - suffix: AnyStr | None = None, - prefix: AnyStr | None = None, - dir: StrOrBytesPath | None = None, - delete: bool = True, - loop: AbstractEventLoop | None = None, - executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... - # Text mode: always returns AsyncTextIOWrapper @overload def TemporaryFile( @@ -137,6 +78,133 @@ def TemporaryFile( executor: Incomplete | None = None, ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... +# 3.12 added `delete_on_close` +if sys.version_info >= (3, 12): + # Text mode: always returns AsyncTextIOWrapper + @overload + def NamedTemporaryFile( + mode: OpenTextMode, + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + delete_on_close: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... + + # Unbuffered binary: returns a FileIO + @overload + def NamedTemporaryFile( + mode: OpenBinaryMode, + buffering: Literal[0], + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + delete_on_close: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... + + # Buffered binary reading/updating: AsyncBufferedReader + @overload + def NamedTemporaryFile( + mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + delete_on_close: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... + + # Buffered binary writing: AsyncBufferedIOBase + @overload + def NamedTemporaryFile( + mode: OpenBinaryModeWriting, + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + delete_on_close: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... + +else: + # Text mode: always returns AsyncTextIOWrapper + @overload + def NamedTemporaryFile( + mode: OpenTextMode, + buffering: int = -1, + encoding: str | None = None, + newline: str | None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... + + # Unbuffered binary: returns a FileIO + @overload + def NamedTemporaryFile( + mode: OpenBinaryMode, + buffering: Literal[0], + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... + + # Buffered binary reading/updating: AsyncBufferedReader + @overload + def NamedTemporaryFile( + mode: OpenBinaryModeReading | OpenBinaryModeUpdating = "w+b", + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... + + # Buffered binary writing: AsyncBufferedIOBase + @overload + def NamedTemporaryFile( + mode: OpenBinaryModeWriting, + buffering: Literal[-1, 1] = -1, + encoding: None = None, + newline: None = None, + suffix: AnyStr | None = None, + prefix: AnyStr | None = None, + dir: StrOrBytesPath | None = None, + delete: bool = True, + loop: AbstractEventLoop | None = None, + executor: Incomplete | None = None, + ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... + # Text mode: always returns AsyncTextIOWrapper @overload def SpooledTemporaryFile(