Alex Waygood
a9328e2b6e
typing tests: remove some unnecessary uses of `exec()` ( #119005 )
2024-05-14 07:16:14 -07:00
Jelle Zijlstra
ec9d12be96
Rename typing._collect_parameters ( #118900 )
...
Unfortunately, released versions of typing_extensions
monkeypatch this function without the extra parameter, which makes
it so things break badly if current main is used with typing_extensions.
Fortunately, the monkeypatching is not needed on Python 3.13, because CPython
now implements PEP 696. By renaming the function, we prevent the monkeypatch
from breaking typing.py internals.
We keep the old name (raising a DeprecationWarning) to help other external users who call it.
2024-05-10 16:55:49 +00:00
Jelle Zijlstra
13d7cf997b
gh-118895: Call PyType_Ready() on typing.NoDefault ( #118897 )
2024-05-10 08:42:00 -07:00
Nikita Sobolev
2f4db5a04d
gh-118803: Remove `ByteString` from `typing` and `collections.abc` ( #118804 )
2024-05-09 00:37:55 +01:00
Jelle Zijlstra
aac6b019fe
gh-118772: Allow TypeVars without a default to follow those with a default when constructing aliases ( #118774 )
2024-05-08 09:54:51 -07:00
Jelle Zijlstra
71080b8a0f
gh-118660: Add second type parameter to (Async)ContextManager ( #118681 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-05-07 14:16:05 +00:00
Alex Waygood
0f8a07d158
gh-118418: Deprecate failing to pass a value to the *type_params* parameter of some private `typing` APIs ( #118695 )
2024-05-07 11:12:28 +00:00
Jelle Zijlstra
8419f01673
gh-118647: Add defaults to typing.Generator and typing.AsyncGenerator ( #118648 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
2024-05-06 22:35:06 +00:00
Jelle Zijlstra
ca269e58c2
gh-116126: Implement PEP 696 ( #116129 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
2024-05-03 06:17:32 -07:00
Jelle Zijlstra
d0b664ee06
gh-118168: Fix Unpack interaction with builtin aliases ( #118169 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-04-23 13:40:26 +00:00
Alex Waygood
1e3e7ce11e
gh-114053: Fix bad interaction of PEP-695, PEP-563 and ``get_type_hints`` ( #118009 )
...
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2024-04-19 13:03:44 +00:00
Jelle Zijlstra
f2132fcd2a
gh-117516: Implement typing.TypeIs ( #117517 )
...
See PEP 742.
Co-authored-by: Carl Meyer <carl@oddbird.net>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-04-09 10:50:37 +00:00
傅立业(Chris Fu)
8eec7ed714
gh-117110: Fix subclasses of typing.Any with custom constructors ( #117111 )
2024-03-29 00:19:20 +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
Nikita Sobolev
95ebd45613
Remove outdated comment about py3.6 in `test_typing` ( #115318 )
2024-02-12 06:23:54 -08: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
Brett Cannon
03f7839703
GH-114013: fix setting `HOSTRUNNER` for `Tools/wasm/wasi.py` (GH-114097)
...
Also fix tests found failing under a pydebug build of WASI thanks to `make test` working due to this change.
2024-01-16 11:36:41 -08: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
Alex Waygood
2ed20d3bd8
gh-74690: Avoid a costly type check where possible in `_ProtocolMeta.__subclasscheck__` ( #112717 )
2023-12-04 19:35:46 +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
Brett Cannon
f489ace9e7
GH-111808: Make the default value for `test.support.infinite_recursion()` conditional on compiler optimizations (GH-112223)
...
Co-authored-by: Victor Stinner <vstinner@python.org>
2023-11-17 15:52:11 -08:00
Nikita Sobolev
7680da4583
gh-112155: Run `typing.py` doctests as part of `test_typing` ( #112156 )
2023-11-16 15:40:09 +00:00
Nikita Sobolev
82e36dba45
gh-108303: Move more `typing` related files to `Lib/test/typinganndata` ( #111825 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-11-08 14:19:34 +00:00
Nikita Sobolev
0e83d941be
gh-111808: Fix recursion error on WASM in `test_typing` (GH-111819)
2023-11-07 11:23:57 -08:00
Nikita Sobolev
ccc8caa858
gh-111681: minor fixes to typing doctests; remove unused imports in `test_typing` ( #111682 )
...
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2023-11-03 12:23:33 +00:00
Nikita Sobolev
ea7c26e4b8
gh-111126: Use `isinstance` instead of `assert[Not]IsInstance` in `test_typing` ( #111127 )
2023-10-20 18:03:32 +00:00
Jelle Zijlstra
d2a536b170
gh-110782: Fix crash when TypeVar is constructed with keyword args ( #110784 )
2023-10-12 16:00:12 -07: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
014aacda62
Enable ruff on `Lib/test/test_typing.py` ( #110179 )
2023-10-02 14:13:48 -06:00
Jelle Zijlstra
732ad44cec
gh-110178: Use fewer weakrefs in test_typing.py ( #110194 )
...
Confirmed that without the C changes from #108517 , this test still segfaults with only 10 weakrefs.
2023-10-02 08:03:53 -07: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
Jelle Zijlstra
482fad7f01
gh-108295: Fix crashes with TypeVar weakrefs ( #108517 )
2023-08-26 17:13:33 -07:00
Nikita Sobolev
3f61cf646d
gh-108303: Move `ann_module*.py` files to `typinganndata/` folder ( #108354 )
2023-08-23 17:42:08 +02:00
Nikita Sobolev
d93b4ac2ff
gh-101162: Forbid using issubclass() with GenericAlias as the 1st arg (GH-103369)
2023-08-11 22:12:11 +03: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
70c075c194
gh-105834: Add tests for calling `issubclass()` between two protocols ( #105835 )
...
Some parts of the implementation of `typing.Protocol` had poor test coverage
2023-06-16 15:47:55 +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
Nikita Sobolev
9d35a71a76
gh-105431: Remove unused stuff from `test_typing.NewTypeTests` ( #105432 )
2023-06-08 07:30:42 +01:00