Jelle Zijlstra
b32789ccb9
gh-117521: Improve typing.TypeGuard docstring ( #117522 )
2024-04-04 06:39:16 -04:00
傅立业(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