-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use PEP 570 syntax in stdlib #11250
Use PEP 570 syntax in stdlib #11250
Conversation
This comment has been minimized.
This comment has been minimized.
Fixing the stubtest issue... |
stubtest PR here: python/mypy#16750 |
Looks reasonable, though I wonder if it handles classmethods? You could probably special-case parameters named |
Ah did I not push that change? Oops, looks like I did not. Good point on metaclasses, will do that as well |
This comment has been minimized.
This comment has been minimized.
Looks like there's only one instance of the old syntax that PyCQA/flake8-pyi#461 detects in the stdlib and this PR doesn't fix: Lines 204 to 205 in 1de5830
You could fix that as well by also special-casing parameters named Maybe it'd be best to revert the handful of changes stubtest has issues with for now? We can easily defer them until there's a mypy release with the stubtest fix |
Thanks for checking that! I also found several cases of incorrect positional-only arguments that this PR leaves alone. It's basically all overloads containing positional-only args. Since this isn't user facing, I'd rather either just wait or use a pre-release mypy for stubtest CI |
fa169be
to
db218ce
Compare
Diff from mypy_primer, showing the effect of this PR on open source code: prefect (https://github.com/PrefectHQ/prefect)
- src/prefect/utilities/pydantic.py:184: note: def __new__(cls: type[type], object, /) -> type
+ src/prefect/utilities/pydantic.py:184: note: def __new__(type[type], object, /) -> type
- src/prefect/utilities/pydantic.py:184: note: def [_typeshed.Self] __new__(cls: type[_typeshed.Self], str, tuple[type, ...], dict[str, Any], /, **kwds: Any) -> _typeshed.Self
+ src/prefect/utilities/pydantic.py:184: note: def [_typeshed.Self] __new__(type[_typeshed.Self], str, tuple[type, ...], dict[str, Any], /, **kwds: Any) -> _typeshed.Self
- src/prefect/utilities/pydantic.py:186: note: def __new__(cls: type[type], object, /) -> type
+ src/prefect/utilities/pydantic.py:186: note: def __new__(type[type], object, /) -> type
- src/prefect/utilities/pydantic.py:186: note: def [_typeshed.Self] __new__(cls: type[_typeshed.Self], str, tuple[type, ...], dict[str, Any], /, **kwds: Any) -> _typeshed.Self
+ src/prefect/utilities/pydantic.py:186: note: def [_typeshed.Self] __new__(type[_typeshed.Self], str, tuple[type, ...], dict[str, Any], /, **kwds: Any) -> _typeshed.Self
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looked at a couple of files, looks great.
Fixes #11237
This is the script I used: https://raw.githubusercontent.com/hauntsaninja/snippets/main/pep570.py
I haven't looked through the entire diff, let's see stubtest