Skip to content
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

[3.12] Document PEP 698 and other new typing features in What's New (GH-104957) #105045

Merged
merged 1 commit into from
May 28, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 37 additions & 6 deletions Doc/whatsnew/3.12.rst
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,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`.)

.. _whatsnew312-pep695:

Expand Down Expand Up @@ -772,11 +801,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
Expand Down Expand Up @@ -821,6 +845,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
:gh:`103699`.)

* Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`.
(Contributed by Erik De Bonte in :gh:`99957`.)

sys
---

Expand Down