Examples using typing.Protocol from PEP 544
From PEP 333 – Python Web Server Gateway Interface v1.0 (2003):
To be considered “file-like”, the object supplied by the application must have a
read()method that takes an optional size argument.
The words "file-like" (or "file like") appear with similar implied meaning in the Python 3.12 distribution:
- 148 times in the documentation;
- 92 times in code comments (
.pyor.csource files).
Also, 30 times across 21 PEPs (100, 214, 258, 282, 305, 310, 333, 368, 400, 441, 444, 578, 680, 691, 3116, 3119, 3143, 3145, 3154, 3156, 3333).
Definition in Lib/wsgiref/types.py:
class _Readable(Protocol):
def read(self, size: int = ..., /) -> bytes: ...typing.Protocol definitions found with ripgrep:
rg "Protocol\)" -g '*.pyi' | sort- 120 definitions on
typeshed/stdlib(Python standard library) - 134 definitions on
typeshed/stubs(external packages)
importlib/resources/abc.py:class Traversable(Protocol)with several abstract and concrete methods, looks like an ABC but derives fromtyping.Protocol
asyncio/protocols.py: defines classesBaseProtocol,Protocoletc. for network protocols