-
-
Notifications
You must be signed in to change notification settings - Fork 31.2k
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
Document PEP 698 and other new typing features in What's New #104957
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -270,7 +270,36 @@ typed dictionaries:: | |
|
||
See :pep:`692` for more details. | ||
|
||
(PEP written by Franek Magiera) | ||
(Contributed by Franek Magiera in :gh:`103629`.) | ||
|
||
PEP 698: Override Decorator for Static Typing | ||
--------------------------------------------- | ||
|
||
A new decorator :func:`typing.override` has been added to the :mod:`typing` | ||
module. It indicates to type checkers that the method is intended to override | ||
a method in a superclass. This allows type checkers to catch mistakes where | ||
a method that is intended to override something in a base class | ||
does not in fact do so. | ||
|
||
Example:: | ||
|
||
from typing import override | ||
|
||
class Base: | ||
def get_color(self) -> str: | ||
return "blue" | ||
|
||
class GoodChild(Base): | ||
@override # ok: overrides Base.get_color | ||
def get_color(self) -> str: | ||
return "yellow" | ||
|
||
class BadChild(Base): | ||
@override # type checker error: does not override Base.get_color | ||
def get_colour(self) -> str: | ||
return "red" | ||
|
||
(Contributed by Steven Troxler in :gh:`101561`.) | ||
|
||
Other Language Changes | ||
====================== | ||
|
@@ -706,11 +735,6 @@ tempfile | |
typing | ||
------ | ||
|
||
* Add :func:`typing.override`, an override decorator telling to static type | ||
checkers to verify that a method overrides some method or attribute of the | ||
same name on a base class, as per :pep:`698`. (Contributed by Steven Troxler in | ||
:gh:`101564`.) | ||
|
||
* :func:`isinstance` checks against | ||
:func:`runtime-checkable protocols <typing.runtime_checkable>` now use | ||
:func:`inspect.getattr_static` rather than :func:`hasattr` to lookup whether | ||
|
@@ -755,6 +779,13 @@ typing | |
or more members may be slower than in Python 3.11. (Contributed by Alex | ||
Waygood in :gh:`74690` and :gh:`103193`.) | ||
|
||
* All :data:`typing.TypedDict` and :data:`typing.NamedTuple` classes now have the | ||
``__orig_bases__`` attribute. (Contributed by Adrian Garcia Badaracco in | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Given that this attribute is undocumented (and I'd prefer it to stay that way, though that's not a strong opinion), could we add this something like "this ensures that There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we could say "now work reliably with :func: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Eh, I guess you're right, it's probably fine as it is |
||
:gh:`103699`.) | ||
|
||
* Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`. | ||
(Contributed by Erik De Bonte in :gh:`99957`.) | ||
|
||
sys | ||
--- | ||
|
||
|
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.
4 space tab would be more consistent.