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
base: main
Are you sure you want to change the base?
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 |
|
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
|
|
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 |
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