https://github.com/python/cpython/commit/50270fc9803283d9a7d12731e6d84012f3ef7b32
commit: 50270fc9803283d9a7d12731e6d84012f3ef7b32
branch: 3.12
author: sobolevn <[email protected]>
committer: sobolevn <[email protected]>
date: 2025-03-04T15:34:34Z
summary:
[3.12] gh-129567: Add a note to typing.TypedDict docs about name mangling
(GH-130233) (#130842)
files:
M Doc/library/typing.rst
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index 54a19ae0b6bebc..f176e750b0a293 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -2294,17 +2294,22 @@ types.
The keyword-argument syntax is deprecated in 3.11 and will be removed
in 3.13. It may also be unsupported by static type checkers.
- The functional syntax should also be used when any of the keys are not valid
- :ref:`identifiers <identifiers>`, for example because they are keywords or
contain hyphens.
- Example::
+ This functional syntax allows defining keys which are not valid
+ :ref:`identifiers <identifiers>`, for example because they are
+ keywords or contain hyphens, or when key names must not be
+ :ref:`mangled <private-name-mangling>` like regular private names::
# raises SyntaxError
class Point2D(TypedDict):
in: int # 'in' is a keyword
x-y: int # name with hyphens
+ class Definition(TypedDict):
+ __schema: str # mangled to `_Definition__schema`
+
# OK, functional syntax
Point2D = TypedDict('Point2D', {'in': int, 'x-y': int})
+ Definition = TypedDict('Definition', {'__schema': str}) # not mangled
By default, all keys must be present in a ``TypedDict``. It is possible to
mark individual keys as non-required using :data:`NotRequired`::
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]