傅立业(Chris Fu)
8eec7ed714
gh-117110: Fix subclasses of typing.Any with custom constructors ( #117111 )
2024-03-29 00:19:20 +00:00
Irit Katriel
79be75735c
gh-115775: Compiler adds __static_attributes__ field to classes ( #115913 )
2024-03-26 15:18:17 +00:00
Nikita Sobolev
df4784b3b7
gh-116127: PEP-705: Add `ReadOnly` support for `TypedDict` ( #116350 )
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2024-03-12 07:49:39 -07:00
Mehdi Drissi
d308d33e09
gh-89547: Support for nesting special forms like Final ( #116096 )
2024-03-11 23:11:56 -07:00
Nikita Sobolev
a29998a06b
gh-116325: Raise `SyntaxError` rather than `IndexError` on ForwardRef with empty string arg ( #116341 )
2024-03-05 09:14:18 +00:00
Nikita Sobolev
a7549b03ce
gh-112281: Allow `Union` with unhashable `Annotated` metadata ( #112283 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-03-01 16:19:24 +00:00
dave-shawley
564385612c
gh-115165: Fix `typing.Annotated` for immutable types ( #115213 )
...
The return value from an annotated callable can raise any exception from
__setattr__ for the `__orig_class__` property.
2024-02-09 22:11:37 +00:00
Carl Meyer
a225520af9
gh-112903: Handle non-types in _BaseGenericAlias.__mro_entries__() ( #115191 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-02-09 12:19:09 -07:00
Alex Waygood
ed6ea3ea79
gh-113320: Reduce the number of dangerous `getattr()` calls when constructing protocol classes ( #113401 )
...
- Only attempt to figure out whether protocol members are "method members" or not if the class is marked as a runtime protocol. This information is irrelevant for non-runtime protocols; we can safely skip the risky introspection for them.
- Only do the risky getattr() calls in one place (the runtime_checkable class decorator), rather than in three places (_ProtocolMeta.__init__, _ProtocolMeta.__instancecheck__ and _ProtocolMeta.__subclasscheck__). This reduces the number of locations in typing.py where the risky introspection could go wrong.
- For runtime protocols, if determining whether a protocol member is callable or not fails, give a better error message. I think it's reasonable for us to reject runtime protocols that have members which raise strange exceptions when you try to access them. PEP-544 clearly states that all protocol member must be callable for issubclass() calls against the protocol to be valid -- and if a member raises when we try to access it, there's no way for us to figure out whether it's a callable member or not!
2024-01-05 01:01:48 +00:00
Kir
11ee912327
gh-113255: Clarify docs for `typing.reveal_type` ( #113286 )
...
Co-authored-by: AlexWaygood <alex.waygood@gmail.com>
2023-12-20 17:21:23 +00:00
Alex Waygood
2ed20d3bd8
gh-74690: Avoid a costly type check where possible in `_ProtocolMeta.__subclasscheck__` ( #112717 )
2023-12-04 19:35:46 +00:00
Alex Waygood
c718ab92a5
gh-74690: Optimise `isinstance()` and `issubclass()` calls against runtime-checkable protocols by avoiding costly `super()` calls ( #112708 )
2023-12-04 15:41:41 +00:00
Nikita Sobolev
a35a305098
gh-112618: Make `Annotated` cache typed ( #112619 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-12-02 16:10:19 +00:00
Jelle Zijlstra
4038869423
gh-112509: Fix keys being present in both required_keys and optional_keys in TypedDict ( #112512 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-11-29 09:36:48 -08:00
Alex Waygood
22e411e1d1
gh-111874: Call `__set_name__` on objects that define the method inside a `typing.NamedTuple` class dictionary as part of the creation of that class ( #111876 )
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2023-11-27 16:34:44 +00:00
Randolf Scholz
e9d1360c9a
gh-112345: `typing.Protocol`: Let failed subclasscheck show non-method members ( #112344 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-11-24 09:46:08 +00:00
Nikita Sobolev
949b2cc6ea
gh-112194: Convert more examples to doctests in `typing.py` ( #112195 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-11-17 17:56:31 +00:00
Nikita Sobolev
7680da4583
gh-112155: Run `typing.py` doctests as part of `test_typing` ( #112156 )
2023-11-16 15:40:09 +00:00
Qua27
12c7e9d573
GH-112152: Fix typo in `typing.override` docstring ( #112158 )
2023-11-16 15:16:04 +00:00
Nikita Sobolev
5257ade0bc
gh-110682: Ignore `__match_args__` from `__instancecheck__` in protocols ( #110683 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-10-11 19:20:20 -07:00
Alex Waygood
d642c5bbf5
gh-110180: Remove unused `_PickleUsingNameMixin` class from `typing` ( #110181 )
2023-10-01 16:28:02 +01:00
Alex Waygood
e8be0c9c5a
gh-109653: `typing.py`: improve import time by creating soft-deprecated members on demand ( #109651 )
...
Co-authored-by: Thomas Grainger <tagrain@gmail.com>
2023-09-23 08:46:35 +01:00
Jelle Zijlstra
1293fcc3c6
gh-109543: Remove unnecessary hasattr check ( #109544 )
...
Also added a new test case covering the scenario I thought this
might be about.
2023-09-19 20:15:52 -07:00
Alex Waygood
a1cbace91b
gh-105509: Simplify implementation of `typing.Annotated` ( #105510 )
2023-09-01 13:57:25 -07:00
Alex Waygood
32718f908c
gh-106309: Deprecate typing.no_type_check_decorator ( #106312 )
2023-07-13 14:30:35 +01:00
Alex Waygood
9499b0f138
gh-105974: Revert unintentional behaviour change for protocols with non-callable members and custom `__subclasshook__` methods ( #105976 )
2023-06-23 14:59:25 +00:00
Alex Waygood
7b1f0f204a
gh-105570: Deprecate unusual ways of creating empty TypedDicts ( #105780 )
...
Deprecate two methods of creating typing.TypedDict classes with 0 fields using the functional syntax: `TD = TypedDict("TD")` and `TD = TypedDict("TD", None)`. Both will be disallowed in Python 3.15. To create a TypedDict class with 0 fields, either use `class TD(TypedDict): pass` or `TD = TypedDict("TD", {})`.
2023-06-14 14:58:41 +00:00
Alex Waygood
ad56340b66
gh-105566: Deprecate unusual ways of creating `typing.NamedTuple` classes ( #105609 )
...
Deprecate creating a typing.NamedTuple class using keyword arguments to denote the fields (`NT = NamedTuple("NT", x=int, y=str)`). This will be disallowed in Python 3.15. Use the class-based syntax or the functional syntax instead.
Two methods of creating `NamedTuple` classes with 0 fields using the functional syntax are also deprecated, and will be disallowed in Python 3.15: `NT = NamedTuple("NT")` and `NT = NamedTuple("NT", None)`. To create a `NamedTuple` class with 0 fields, either use `class NT(NamedTuple): pass` or `NT = NamedTuple("NT", [])`.
2023-06-14 13:38:49 +01:00
Jelle Zijlstra
fc8037d84c
gh-104873: Add typing.get_protocol_members and typing.is_protocol ( #104878 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-06-14 05:35:06 -07:00
Alex Waygood
8e755923c9
Miscellaneous improvements to the typing docs ( #105529 )
...
Mostly, these are changes so that we use shorter sentences and shorter paragraphs. In particular, I've tried to make the first sentence introducing each object in the typing API short and declarative.
2023-06-09 15:08:57 +00:00
Alex Waygood
d213c2990f
Further improve docs for `typing.Annotated` ( #105498 )
2023-06-08 14:36:30 +00:00
Alex Waygood
d63a7c3694
typing: Improve documentation of generic classes and aliases ( #105369 )
2023-06-07 14:02:40 +00:00
Nikita Sobolev
18309ad94b
gh-105430: Remove `typing._Immutable` unused internal helper ( #105434 )
2023-06-07 06:43:00 -07:00
Alex Waygood
9a89f1bf1e
gh-105286: Further improvements to `typing.py` docstrings ( #105363 )
2023-06-06 17:21:16 -07:00
Alex Waygood
f714aa2c29
gh-105286: Improve `typing.py` docstrings ( #105287 )
...
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
2023-06-05 14:16:09 +00:00
Alex Waygood
08756dbba6
gh-105280: Ensure `isinstance([], collections.abc.Mapping)` always evaluates to `False` ( #105281 )
2023-06-05 14:10:49 +00:00
Alex Waygood
cdfb201bfa
gh-105237: Allow calling `issubclass(X, typing.Protocol)` again ( #105239 )
2023-06-05 06:36:51 -07:00
Alex Waygood
c05c31db8c
gh-105144: Runtime-checkable protocols: move all 'sanity checks' to `_ProtocolMeta.__subclasscheck__` ( #105152 )
2023-05-31 17:02:25 +00:00
Tomas R
46857d0b2a
gh-104943: Remove mentions of old Python versions ( #104945 )
2023-05-25 23:34:17 -07:00
Tomas R
fea8632ec6
gh-104786: Remove kwargs-based TypedDict creation ( #104891 )
...
Deprecated since Python 3.11.
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-05-25 21:14:58 +01:00
Jelle Zijlstra
2b7027d0b2
gh-104935: typing: Fix interactions between `@runtime_checkable` and `Generic` ( #104939 )
...
---------
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-05-25 16:43:40 +00:00
Jelle Zijlstra
c0ab7d401c
gh-104797: Allow Protocols to inherit from collections.abc.Buffer ( #104827 )
2023-05-24 08:24:53 +00:00
Sebastian Rittau
abdda5b133
gh-92871: Remove typing.{io,re} namespaces ( #92873 )
...
Closes #92871
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2023-05-23 13:44:26 +00:00
Alex Waygood
a412fc58cc
Improve readability of `typing._ProtocolMeta.__instancecheck__` ( #104649 )
2023-05-19 14:30:02 +01:00
Alex Waygood
f7835fc7e9
gh-74690: Don't set special protocol attributes on non-protocol subclasses of protocols ( #104622 )
...
Don't set special protocol attributes on non-protocol subclasses of protocols
2023-05-19 00:34:40 +01:00
Alex Waygood
b27fe67f3c
gh-104555: Runtime-checkable protocols: Don't let previous calls to `isinstance()` influence whether `issubclass()` raises an exception ( #104559 )
...
Co-authored-by: Carl Meyer <carl@oddbird.net>
2023-05-17 23:43:12 +00:00
Jelle Zijlstra
0cb2fdc621
typing: Use PEP 695 syntax in typing.py ( #104553 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-05-17 06:03:58 -07:00
Alex Waygood
1163782868
gh-104555: Fix isinstance() and issubclass() for runtime-checkable protocols that use PEP 695 ( #104556 )
...
Fixes #104555
2023-05-16 16:38:10 +00:00
Jelle Zijlstra
24d8b88420
gh-103763: Implement PEP 695 ( #103764 )
...
This implements PEP 695, Type Parameter Syntax. It adds support for:
- Generic functions (def func[T](): ...)
- Generic classes (class X[T](): ...)
- Type aliases (type X = ...)
- New scoping when the new syntax is used within a class body
- Compiler and interpreter changes to support the new syntax and scoping rules
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Eric Traut <eric@traut.com>
Co-authored-by: Larry Hastings <larry@hastings.org>
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-05-15 20:36:23 -07:00
Alex Waygood
c527eb1c2a
gh-91896: Revert some very noisy DeprecationWarnings for `ByteString` ( #104424 )
2023-05-13 09:55:35 +01:00