Uh oh!
There was an error while loading. Please reload this page.
gh-103763: Implement PEP 695 - #103764
Conversation
…This commit includes: 1. Parser updates 2. AST updates 3. typing.py updates 4. Unit tests It does not include the following: 5. Symtable updates 6. Compiler updates 7. C implementations of TypeVar, TypeVarTuple, ParamSpec, Generic
This fixes compilation for me locally.
This isn't fully functional, but it should be enough to unblock work on the runtime. I'll update this PR as I implement more.
Eclips4
commented
May 15, 2023
Yeah, you're right. |
gvanrossum
commented
May 16, 2023
🎉 |
* main: pythonGH-104510: Fix refleaks in `_io` base types (python#104516) pythongh-104539: Fix indentation error in logging.config.rst (python#104545) pythongh-104050: Don't star-import 'types' in Argument Clinic (python#104543) pythongh-104050: Add basic typing to CConverter in clinic.py (python#104538) pythongh-64595: Fix write file logic in Argument Clinic (python#104507) pythongh-104523: Inline minimal PGO rules (python#104524) pythongh-103861: Fix Zip64 extensions not being properly applied in some cases (python#103863) pythongh-69152: add method get_proxy_response_headers to HTTPConnection class (python#104248) pythongh-103763: Implement PEP 695 (python#103764) pythongh-104461: Run tkinter test_configure_screen on X11 only (pythonGH-104462) pythongh-104469: Convert _testcapi/watchers.c to use Argument Clinic (python#104503) pythongh-104482: Fix error handling bugs in ast.c (python#104483) pythongh-104341: Adjust tstate_must_exit() to Respect Interpreter Finalization (pythongh-104437) pythonGH-102613: Fix recursion error from `pathlib.Path.glob()` (pythonGH-104373)
carljm
commented
May 16, 2023
Congrats! Really excellent work on a tight timeframe. |
zen-xu
commented
May 23, 2023
Awesome! But will python support fromtypingimportProtocolclassDance(Protocol):
defdance(self): ...
classSing(Protocol):
defsing(self): ...
defperform[P: Dance+Sing](person: P):
person.dance()
person.sing() |
It will not, at least not soon. Changes like this often need a PEP. If you are interested in it, new ideas are welcomed at https://discuss.python.org/c/ideas/6. As for this specific question, I think you are asking for a https://discuss.python.org/t/type-intersection-and-negation-in-type-annotations/23879 |
junkmd
commented
May 27, 2023
Adding the feature like a I hope that the adoption of PEP695 will lead to more discussion on this as well and improve the representation of type hints. |
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
A C-accelerator was introduced for the typing module in Python 3.12 (see python/cpython#103764). Because a pure python source is no longer available, now we stub out the missing classes and provide some __class_getitem__ methods to allow subscripting like Type[int]. This may mean when 3.12 is the minimum, we can remove older brain features like infer_typing_alias().
AlexWaygood
commented
Aug 20, 2023
@python/organization-owners, please block @johnnyjeannatasha as a spammer — see the review on this PR and the comment at a390ec2#commitcomment-124994466 |
I will update this message as the status of the PR changes.
This is a complete implementation. It incorporates the changes in python/peps#3122, which were approved by the SC.
I wrote a detailed account of the changes in this PR at https://jellezijlstra.github.io/pep695
Reviews are welcome on any aspect of the implementation.