diff --git a/stubs/aiofiles/@tests/stubtest_allowlist.txt b/stubs/aiofiles/@tests/stubtest_allowlist.txt index 3bf7029b4..6562daed8 100644 --- a/stubs/aiofiles/@tests/stubtest_allowlist.txt +++ b/stubs/aiofiles/@tests/stubtest_allowlist.txt @@ -89,7 +89,3 @@ aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.isatty aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.rollover aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.tell aiofiles.tempfile.temptypes.AsyncTemporaryDirectory.cleanup - -# Metaclass differs: -aiofiles.base.AiofilesContextManager -aiofiles.tempfile.AiofilesContextManagerTempDir diff --git a/stubs/aiofiles/@tests/stubtest_allowlist_win32.txt b/stubs/aiofiles/@tests/stubtest_allowlist_win32.txt deleted file mode 100644 index 7bd650ce1..000000000 --- a/stubs/aiofiles/@tests/stubtest_allowlist_win32.txt +++ /dev/null @@ -1,5 +0,0 @@ -# At runtime, __all__ includes some items that are not available on Windows. -# https://github.com/Tinche/aiofiles/pull/174 -aiofiles.os.__all__ -aiofiles.os.sendfile -aiofiles.os.statvfs diff --git a/stubs/aiofiles/METADATA.toml b/stubs/aiofiles/METADATA.toml index 950f1bd80..d649874b9 100644 --- a/stubs/aiofiles/METADATA.toml +++ b/stubs/aiofiles/METADATA.toml @@ -1,4 +1,4 @@ -version = "23.2.*" +version = "24.1.*" upstream_repository = "https://github.com/Tinche/aiofiles" [tool.stubtest] diff --git a/stubs/aiofiles/aiofiles/base.pyi b/stubs/aiofiles/aiofiles/base.pyi index c705acb30..ea79abf48 100644 --- a/stubs/aiofiles/aiofiles/base.pyi +++ b/stubs/aiofiles/aiofiles/base.pyi @@ -1,12 +1,11 @@ -from collections.abc import Callable, Coroutine, Generator, Iterator -from types import CodeType, FrameType, TracebackType, coroutine +from collections.abc import Awaitable, Callable, Generator +from contextlib import AbstractAsyncContextManager +from types import TracebackType from typing import Any, BinaryIO, Generic, TextIO, TypeVar from typing_extensions import Self _T = TypeVar("_T") -_T_co = TypeVar("_T_co", covariant=True) _V_co = TypeVar("_V_co", covariant=True) -_T_contra = TypeVar("_T_contra", contravariant=True) class AsyncBase(Generic[_T]): def __init__(self, file: str, loop: Any, executor: Any) -> None: ... @@ -16,22 +15,9 @@ class AsyncBase(Generic[_T]): class AsyncIndirectBase(AsyncBase[_T]): def __init__(self, name: str, loop: Any, executor: Any, indirect: Callable[[], TextIO | BinaryIO]) -> None: ... -class AiofilesContextManager(Generic[_T_co, _T_contra, _V_co]): - def __init__(self, coro: Coroutine[_T_co, _T_contra, _V_co]) -> None: ... - def send(self, value: _T_contra) -> _T_co: ... - def throw(self, typ: type[BaseException], val: BaseException | object = None, tb: TracebackType | None = None) -> _T_co: ... - def close(self) -> None: ... - @property - def gi_frame(self) -> FrameType: ... - @property - def gi_running(self) -> bool: ... - @property - def gi_code(self) -> CodeType: ... - def __next__(self) -> _T_co: ... - @coroutine - def __iter__(self) -> Iterator[Coroutine[_T_co, _T_contra, _V_co]]: ... - def __await__(self) -> Generator[Any, None, _V_co]: ... - async def __anext__(self) -> _V_co: ... +class AiofilesContextManager(Awaitable[_V_co], AbstractAsyncContextManager[_V_co]): + def __init__(self, coro: Awaitable[_V_co]) -> None: ... + def __await__(self) -> Generator[Any, Any, _V_co]: ... async def __aenter__(self) -> _V_co: ... async def __aexit__( self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None diff --git a/stubs/aiofiles/aiofiles/os.pyi b/stubs/aiofiles/aiofiles/os.pyi index 54e601040..5a3de3b59 100644 --- a/stubs/aiofiles/aiofiles/os.pyi +++ b/stubs/aiofiles/aiofiles/os.pyi @@ -27,6 +27,7 @@ __all__ = [ "scandir", "access", "wrap", + "getcwd", ] if sys.platform != "win32": @@ -118,6 +119,7 @@ async def listdir(path: int, *, loop: AbstractEventLoop | None = ..., executor: async def access( path: FileDescriptorOrPath, mode: int, *, dir_fd: int | None = None, effective_ids: bool = False, follow_symlinks: bool = True ) -> bool: ... +async def getcwd() -> str: ... if sys.platform != "win32": from os import statvfs_result diff --git a/stubs/aiofiles/aiofiles/ospath.pyi b/stubs/aiofiles/aiofiles/ospath.pyi index 384996d24..a58637536 100644 --- a/stubs/aiofiles/aiofiles/ospath.pyi +++ b/stubs/aiofiles/aiofiles/ospath.pyi @@ -1,7 +1,8 @@ from _typeshed import FileDescriptorOrPath from asyncio.events import AbstractEventLoop from collections.abc import Awaitable, Callable -from typing import Any, TypeVar +from os import PathLike +from typing import Any, AnyStr, TypeVar _R = TypeVar("_R") @@ -9,6 +10,8 @@ def wrap(func: Callable[..., _R]) -> Callable[..., Awaitable[_R]]: ... async def exists(path: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> bool: ... async def isfile(path: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> bool: ... async def isdir(s: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> bool: ... +async def islink(path: FileDescriptorOrPath) -> bool: ... +async def ismount(path: FileDescriptorOrPath) -> bool: ... async def getsize(filename: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> int: ... async def getmtime(filename: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> float: ... async def getatime(filename: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> float: ... @@ -17,5 +20,4 @@ async def samefile( f1: FileDescriptorOrPath, f2: FileDescriptorOrPath, *, loop: AbstractEventLoop | None = ..., executor: Any = ... ) -> bool: ... async def sameopenfile(fp1: int, fp2: int, *, loop: AbstractEventLoop | None = ..., executor: Any = ...) -> bool: ... -async def islink(path: FileDescriptorOrPath) -> bool: ... -async def ismount(path: FileDescriptorOrPath) -> bool: ... +async def abspath(path: PathLike[AnyStr] | AnyStr) -> AnyStr: ... diff --git a/stubs/aiofiles/aiofiles/tempfile/__init__.pyi b/stubs/aiofiles/aiofiles/tempfile/__init__.pyi index 210dd9cd6..e8016aa8d 100644 --- a/stubs/aiofiles/aiofiles/tempfile/__init__.pyi +++ b/stubs/aiofiles/aiofiles/tempfile/__init__.pyi @@ -11,17 +11,13 @@ from _typeshed import ( StrPath, ) from asyncio import AbstractEventLoop -from typing import AnyStr, Literal, TypeVar, overload +from typing import AnyStr, Literal, overload from ..base import AiofilesContextManager from ..threadpool.binary import AsyncBufferedIOBase, AsyncBufferedReader, AsyncFileIO from ..threadpool.text import AsyncTextIOWrapper from .temptypes import AsyncTemporaryDirectory -_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 TemporaryFile( @@ -34,7 +30,7 @@ def TemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... +) -> AiofilesContextManager[AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload @@ -48,7 +44,7 @@ def TemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncFileIO]: ... +) -> AiofilesContextManager[AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload @@ -62,7 +58,7 @@ def TemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... +) -> AiofilesContextManager[AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload @@ -76,7 +72,7 @@ def TemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... +) -> AiofilesContextManager[AsyncBufferedIOBase]: ... # 3.12 added `delete_on_close` if sys.version_info >= (3, 12): @@ -94,7 +90,7 @@ if sys.version_info >= (3, 12): delete_on_close: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... + ) -> AiofilesContextManager[AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload @@ -110,7 +106,7 @@ if sys.version_info >= (3, 12): delete_on_close: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... + ) -> AiofilesContextManager[AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload @@ -126,7 +122,7 @@ if sys.version_info >= (3, 12): delete_on_close: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... + ) -> AiofilesContextManager[AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload @@ -142,7 +138,7 @@ if sys.version_info >= (3, 12): delete_on_close: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... + ) -> AiofilesContextManager[AsyncBufferedIOBase]: ... else: # Text mode: always returns AsyncTextIOWrapper @@ -158,7 +154,7 @@ else: delete: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... + ) -> AiofilesContextManager[AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload @@ -173,7 +169,7 @@ else: delete: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncFileIO]: ... + ) -> AiofilesContextManager[AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload @@ -188,7 +184,7 @@ else: delete: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... + ) -> AiofilesContextManager[AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload @@ -203,7 +199,7 @@ else: delete: bool = True, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, - ) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... + ) -> AiofilesContextManager[AsyncBufferedIOBase]: ... # Text mode: always returns AsyncTextIOWrapper @overload @@ -219,7 +215,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... +) -> AiofilesContextManager[AsyncTextIOWrapper]: ... @overload def SpooledTemporaryFile( max_size: int, @@ -232,7 +228,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... +) -> AiofilesContextManager[AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload @@ -248,7 +244,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncFileIO]: ... +) -> AiofilesContextManager[AsyncFileIO]: ... @overload def SpooledTemporaryFile( max_size: int, @@ -261,7 +257,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncFileIO]: ... +) -> AiofilesContextManager[AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload @@ -276,7 +272,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... +) -> AiofilesContextManager[AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload @@ -292,7 +288,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... +) -> AiofilesContextManager[AsyncBufferedIOBase]: ... @overload def SpooledTemporaryFile( max_size: int, @@ -305,7 +301,7 @@ def SpooledTemporaryFile( dir: StrOrBytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... +) -> AiofilesContextManager[AsyncBufferedIOBase]: ... @overload def TemporaryDirectory( suffix: str | None = None, @@ -313,7 +309,7 @@ def TemporaryDirectory( dir: StrPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManagerTempDir[None, None, AsyncTemporaryDirectory]: ... +) -> AiofilesContextManagerTempDir: ... @overload def TemporaryDirectory( suffix: bytes | None = None, @@ -321,7 +317,7 @@ def TemporaryDirectory( dir: BytesPath | None = None, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManagerTempDir[None, None, AsyncTemporaryDirectory]: ... +) -> AiofilesContextManagerTempDir: ... -class AiofilesContextManagerTempDir(AiofilesContextManager[_T_co, _T_contra, _V_co]): +class AiofilesContextManagerTempDir(AiofilesContextManager[AsyncTemporaryDirectory]): async def __aenter__(self) -> str: ... # type: ignore[override] diff --git a/stubs/aiofiles/aiofiles/threadpool/__init__.pyi b/stubs/aiofiles/aiofiles/threadpool/__init__.pyi index a7154e759..00c587ccd 100644 --- a/stubs/aiofiles/aiofiles/threadpool/__init__.pyi +++ b/stubs/aiofiles/aiofiles/threadpool/__init__.pyi @@ -32,7 +32,7 @@ def open( *, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncTextIOWrapper]: ... +) -> AiofilesContextManager[AsyncTextIOWrapper]: ... # Unbuffered binary: returns a FileIO @overload @@ -48,7 +48,7 @@ def open( *, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncFileIO]: ... +) -> AiofilesContextManager[AsyncFileIO]: ... # Buffered binary reading/updating: AsyncBufferedReader @overload @@ -64,7 +64,7 @@ def open( *, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedReader]: ... +) -> AiofilesContextManager[AsyncBufferedReader]: ... # Buffered binary writing: AsyncBufferedIOBase @overload @@ -80,7 +80,7 @@ def open( *, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, AsyncBufferedIOBase]: ... +) -> AiofilesContextManager[AsyncBufferedIOBase]: ... # Buffering cannot be determined: fall back to _UnknownAsyncBinaryIO @overload @@ -96,7 +96,7 @@ def open( *, loop: AbstractEventLoop | None = None, executor: Incomplete | None = None, -) -> AiofilesContextManager[None, None, _UnknownAsyncBinaryIO]: ... +) -> AiofilesContextManager[_UnknownAsyncBinaryIO]: ... stdin: AsyncTextIndirectIOWrapper stdout: AsyncTextIndirectIOWrapper