[aiofiles] Fix NamedTemporaryFile name type - #16357
Conversation
|
According to mypy_primer, this change has no effect on the checked open source code. 🤖🎉 |
| @type_check_only | ||
| class _NamedAsyncTextIOWrapper(AsyncTextIOWrapper, Generic[AnyStr]): | ||
| @property | ||
| def name(self) -> AnyStr: ... |
There was a problem hiding this comment.
Considering these all derive from _UnknownAsyncBinaryIO or _UnknownAsyncTextIO, I think a better approach is to make these classes and their sub-classes generic over name.
_NameT = TypeVar("_NameT", bound=FileDescriptorOrPath, default=FileDescriptorOrPath)| loop: AbstractEventLoop | None = None, | ||
| executor: Executor | None = None, | ||
| ) -> AiofilesContextManager[AsyncTextIOWrapper]: ... | ||
| ) -> AiofilesContextManager[_NamedAsyncTextIOWrapper[AnyStr]]: ... |
There was a problem hiding this comment.
I don't think using AnyStr here or in the other branches is correct. For one, if neither suffix or prefix is given, AnyStr is unbound. Also the name attribute of the wrapped temporary file object always seems to to be str. This would require further investigation.
|
Thanks for the review. Agreed that making the existing unknown async I/O hierarchy generic over |
Fixes #13551. Replaces #16162 after its branch history was repaired.
Models the path-dependent
nameattribute on wrappers returned byaiofiles.tempfile.NamedTemporaryFile(), preservingbyteswhen bytes path arguments are supplied while retainingstrfor string paths.OpenAI Codex was used to prepare this change.