Skip to content

gh-101561: Add typing.override decorator - #101564

Merged
JelleZijlstra merged 10 commits into
python:mainfrom
stroxler:gh-101561-typing-override
Feb 27, 2023
Merged

gh-101561: Add typing.override decorator#101564
JelleZijlstra merged 10 commits into
python:mainfrom
stroxler:gh-101561-typing-override

Conversation

@stroxler

@stroxlerstroxler commented Feb 4, 2023

Copy link
Copy Markdown
Contributor

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:

  • In typing_extensions the type variables use underscore prefixes to indicate that they are not public, but typing doesn't appear to use that convention so I named the type variable F.
  • I couldn't put the type variable next to all of the other ones (used in generic container definitions) because it relies on 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:

./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.

Make sure the docs build:

cd Doc
make venv
make html

@bedevere-bot

Copy link
Copy Markdown

Most changes to Python require a NEWS entry.

Please add it using the blurb_it web app or the blurb command-line tool.

@stroxlerstroxler changed the title PEP 698: Add typing.override decoratorgh-101561: Add typing.override decoratorFeb 4, 2023
@bedevere-bot

Copy link
Copy Markdown

Most changes to Python require a NEWS entry.

Please add it using the blurb_it web app or the blurb command-line tool.

@AlexWaygoodAlexWaygood left a comment

Copy link
Copy Markdown
Member

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

Comment threadDoc/library/typing.rst Outdated
@arhadthedevarhadthedev added stdlib Standard Library Python modules in the Lib/ directory topic-typing labels Feb 4, 2023
@AlexWaygoodAlexWaygood added type-feature A feature request or enhancement 3.12 only security fixes labels Feb 4, 2023
Comment threadMisc/NEWS.d/next/Library/2023-02-04-16-35-46.gh-issue-101561.Xo6pIZ.rst Outdated
Comment threadLib/typing.py Outdated
@Fidget-Spinner

Copy link
Copy Markdown
Member

The implementation for override LGTM.

facebook-github-bot referenced this pull request in facebook/pyre-check Feb 9, 2023
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
stroxlerand others added 9 commits February 27, 2023 11:55
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:
@stroxler
stroxlerforce-pushed the gh-101561-typing-override branch from 4a04527 to 090d9d2CompareFebruary 27, 2023 19:56
@stroxler

Copy link
Copy Markdown
ContributorAuthor

(Rebase on main)

@gvanrossum I think this is waiting on review from you

@JelleZijlstraJelleZijlstra left a comment

Copy link
Copy Markdown
Member

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.

Comment threadDoc/whatsnew/3.12.rst Outdated
Comment threadMisc/NEWS.d/next/Library/2023-02-04-16-35-46.gh-issue-101561.Xo6pIZ.rst Outdated
@gvanrossum

Copy link
Copy Markdown
Member

I defer to @JelleZijlstra if that's okay.

Thanks, looks good
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
@sobolevn

sobolevn commented Feb 28, 2023

Copy link
Copy Markdown
Member

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! 👍

carljm added a commit to carljm/cpython that referenced this pull request Feb 28, 2023
* 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)
...
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytopic-typingtype-featureA feature request or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@stroxler@bedevere-bot@Fidget-Spinner@gvanrossum@sobolevn@JelleZijlstra@TeamSpen210@AlexWaygood@arhadthedev