Skip to content

Commit

Permalink
gh-126699: allow AsyncIterator to be used as a base for Protocols (#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
tungol authored Nov 12, 2024
1 parent 0052a8c commit feb3e0b
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 1 deletion.
3 changes: 3 additions & 0 deletions Lib/test/test_typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -4255,6 +4255,9 @@ class CustomProtocol(TestCase, Protocol):
class CustomContextManager(typing.ContextManager, Protocol):
pass

class CustomAsyncIterator(typing.AsyncIterator, Protocol):
pass

def test_non_runtime_protocol_isinstance_check(self):
class P(Protocol):
x: int
Expand Down
3 changes: 2 additions & 1 deletion Lib/typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -1940,7 +1940,8 @@ def _allow_reckless_class_checks(depth=2):
_PROTO_ALLOWLIST = {
'collections.abc': [
'Callable', 'Awaitable', 'Iterable', 'Iterator', 'AsyncIterable',
'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', 'Buffer',
'AsyncIterator', 'Hashable', 'Sized', 'Container', 'Collection',
'Reversible', 'Buffer',
],
'contextlib': ['AbstractContextManager', 'AbstractAsyncContextManager'],
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Allow :class:`collections.abc.AsyncIterator` to be a base for Protocols.

0 comments on commit feb3e0b

Please sign in to comment.