-
-
Notifications
You must be signed in to change notification settings - Fork 30.7k
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
gh-101561: Add typing.override decorator #101564
gh-101561: Add typing.override decorator #101564
Conversation
Most changes to Python require a NEWS entry. Please add it using the blurb_it web app or the blurb command-line tool. |
Most changes to Python require a NEWS entry. Please add it using the blurb_it web app or the blurb command-line tool. |
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.
Thanks! Haven't looked in depth yet at all, but we'll also need:
- A news entry, as @bedevere-bot says
- An entry in
Doc/whatsnew/3.12.rst
- (optionally) you can add your name to
Misc/ACKS
Misc/NEWS.d/next/Library/2023-02-04-16-35-46.gh-issue-101561.Xo6pIZ.rst
Outdated
Show resolved
Hide resolved
The implementation for override LGTM. |
Summary: THe `typing_extensions.override` was added a few months ago, we should support it. The `typing.override` decorator isn't landed yet, but that's okay - we should support it in override checks; it will still raise a "no such name" method when Pyre is being run against a typeshed that doens't have it yet. The PR to add `typing.override` to CPython is out for review now: https://github.com/python/cpython/pull/101564` Reviewed By: grievejia Differential Revision: D43055550 fbshipit-source-id: 3f51f643063afea75bf54ef38ae3a48681b99bd9
Testing: First set up the repo, following instructions at https://devguide.python.org/ by running: ``` ./configure --with-pydebug && make -j ``` Then run the typing tests: ``` ./python -m test test_typing -v ``` I ran the full test suite with ``` ./python -m test -j3 ``` and it came back clean except for a `test_grp` failure which I seem to get on trunk as well - likely something in my build is misconfigured but I'm pretty sure it is unrelated to the changes here.
Correct `s/final/override` (from reusing a similar block of documentation on the `@final` decorator) Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
…o6pIZ.rst Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
4a04527
to
090d9d2
Compare
(Rebase on main) @gvanrossum I think this is waiting on review from you |
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.
Sorry for dropping this; I have a few nits but I'm happy to merge the PR. I'll leave it open for a few days in case Guido does want to take a look himself.
Misc/NEWS.d/next/Library/2023-02-04-16-35-46.gh-issue-101561.Xo6pIZ.rst
Outdated
Show resolved
Hide resolved
I defer to @JelleZijlstra if that's okay. |
Thanks, looks good Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Sorry for being late with a review, I've opened a follow-up for this: #102324 Thanks a lot for adding this decorator! Great work, it would be very useful! 👍 |
* main: (67 commits) pythongh-99108: Add missing md5/sha1 defines to Modules/Setup (python#102308) pythongh-100227: Move _str_replace_inf to PyInterpreterState (pythongh-102333) pythongh-100227: Move the dtoa State to PyInterpreterState (pythongh-102331) pythonGH-102305: Expand some macros in generated_cases.c.h (python#102309) Migrate to new PSF mailgun account (python#102284) pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Python/) (python#102193) pythonGH-90744: Fix erroneous doc links in the sys module (python#101319) pythongh-87092: Make jump target label equal to the offset of the target in the instructions sequence (python#102093) pythongh-101101: Unstable C API tier (PEP 689) (pythonGH-101102) IDLE: Simplify DynOptionsMenu __init__code (python#101371) pythongh-101561: Add typing.override decorator (python#101564) pythongh-101825: Clarify that as_integer_ratio() output is always normalized (python#101843) pythongh-101773: Optimize creation of Fractions in private methods (python#101780) pythongh-102251: Updates to test_imp Toward Fixing Some Refleaks (pythongh-102254) pythongh-102296 Document that inspect.Parameter kinds support ordering (pythonGH-102297) pythongh-102250: Fix double-decref in COMPARE_AND_BRANCH error case (pythonGH-102287) pythongh-101100: Fix sphinx warnings in `types` module (python#102274) pythongh-91038: Change default argument value to `False` instead of `0` (python#31621) pythongh-101765: unicodeobject: use Py_XDECREF correctly (python#102283) [doc] Improve grammar/fix missing word (pythonGH-102060) ...
The code is pulled almost unchanged from
typing_extensions
:Question that came up was where to put the type variable and what to name it:
typing_extensions
the type variables use underscore prefixes to indicate that they are not public, buttyping
doesn't appear to use that convention so I named the type variableF
.Callable
which is defined below. If this is a problem I could correct it using a forward reference, or we could try to rearrange the module to put special forms above type variables.Testing the code:
First set up the repo, following instructions
at https://devguide.python.org/ by running:
Then run the typing tests:
I ran the full test suite with
and it came back clean except for a
test_grp
failure which I seem to get on trunk as well - likely something in my build is misconfigured but I'm pretty sure it is unrelated to the changes here.Make sure the docs build: