PEP 544
E939794
PEP 544 is a Python Enhancement Proposal that introduces structural subtyping via typing.Protocol, enabling static type checkers to support interface-like behavior based on object capabilities rather than inheritance.
All labels observed (1)
| Label | Occurrences |
|---|---|
| PEP 544 canonical | 1 |
How this entity was disambiguated
This entity first appeared as the object of triple T11216059 — resolving that mention is where its identity was fixed. The disambiguator weighed these candidate entities and picked the highlighted one (or “None”, minting a new entity). This is how homonymy is resolved: the same surface form can point to different entities.
Target entity: PEP 544 Context triple: [PEP 484, relatedTo, PEP 544]
-
A.
PEP 552
PEP 552 is a Python Enhancement Proposal that introduced deterministic, hash-based .pyc files to improve reproducibility and caching behavior in Python.
-
B.
PEP 604
PEP 604 is a Python Enhancement Proposal that introduced the modern, concise syntax for expressing type unions (using the `|` operator) in Python’s type hints.
-
C.
PEP 644
PEP 644 is the Python Enhancement Proposal that mandates OpenSSL 1.1.1 or newer as the minimum supported version for Python’s standard ssl module, aligning Python’s security features with modern TLS capabilities.
-
D.
PEP 560
PEP 560 is a Python Enhancement Proposal that optimizes and refines the implementation of typing and generic types in Python, improving performance and simplifying the internal mechanics of the typing module.
-
E.
PEP 624
PEP 624 is a Python Enhancement Proposal that specifies the removal of the Py_UNICODE encoder APIs from the CPython C API to streamline and modernize Unicode handling in Python.
- F. None of above. chosen
- G. Unsure - the case is ambiguous/there is not enough information to decide.
Target entity: PEP 544 Target entity description: PEP 544 is a Python Enhancement Proposal that introduces structural subtyping via typing.Protocol, enabling static type checkers to support interface-like behavior based on object capabilities rather than inheritance.
-
A.
PEP 552
PEP 552 is a Python Enhancement Proposal that introduced deterministic, hash-based .pyc files to improve reproducibility and caching behavior in Python.
-
B.
PEP 604
PEP 604 is a Python Enhancement Proposal that introduced the modern, concise syntax for expressing type unions (using the `|` operator) in Python’s type hints.
-
C.
PEP 644
PEP 644 is the Python Enhancement Proposal that mandates OpenSSL 1.1.1 or newer as the minimum supported version for Python’s standard ssl module, aligning Python’s security features with modern TLS capabilities.
-
D.
PEP 560
PEP 560 is a Python Enhancement Proposal that optimizes and refines the implementation of typing and generic types in Python, improving performance and simplifying the internal mechanics of the typing module.
-
E.
PEP 624
PEP 624 is a Python Enhancement Proposal that specifies the removal of the Py_UNICODE encoder APIs from the CPython C API to streamline and modernize Unicode handling in Python.
- F. None of above. chosen
Statements (47)
| Predicate | Object |
|---|---|
| instanceOf | Python Enhancement Proposal ⓘ |
| affectsModule | typing ⓘ |
| allows |
runtime isinstance checks for some protocols
ⓘ
subtyping based on method signatures ⓘ subtyping without explicit inheritance ⓘ |
| availableVia | typing_extensions in older Python versions ⓘ |
| buildsOn |
PEP 484
NERFINISHED
ⓘ
PEP 526 NERFINISHED ⓘ |
| category | Typing ⓘ |
| clarifies | relationship between ABCs and protocols ⓘ |
| compatibleWith |
Pyright
NERFINISHED
ⓘ
mypy NERFINISHED ⓘ other PEP 484-style type checkers ⓘ |
| contrastsWith | nominal subtyping ⓘ |
| createdForVersion | Python 3 NERFINISHED ⓘ |
| defines | protocols for static typing ⓘ |
| definesSyntaxElement |
Protocol base class
ⓘ
runtime_checkable decorator ⓘ |
| definesTerm |
protocol
ⓘ
runtime protocol ⓘ static protocol ⓘ |
| enables |
interface-like behavior based on object capabilities
ⓘ
static duck typing ⓘ |
| focusesOn | static type checking ⓘ |
| hasNumber | 544 ⓘ |
| hasTitle | Protocols: Structural subtyping (static duck typing) NERFINISHED ⓘ |
| influences | design of typing_extensions.Protocol ⓘ |
| introducesConcept |
structural subtyping
ⓘ
typing.Protocol NERFINISHED ⓘ |
| language | Python NERFINISHED ⓘ |
| mainFeature |
callback protocols
ⓘ
generic protocols ⓘ protocol inheritance ⓘ runtime-checkable protocols ⓘ subtyping based on object capabilities ⓘ |
| motivation |
better support for large code bases using duck typing
ⓘ
provide standard way to define static protocols ⓘ |
| primaryMechanism | typing.Protocol base class ⓘ |
| recommends | using protocols instead of ABCs for some use cases ⓘ |
| status | Final ⓘ |
| subtypingStyle | structural ⓘ |
| supports |
interface-based programming style
ⓘ
static type checkers ⓘ |
| type | Standards Track ⓘ |
| useCase |
defining interfaces for libraries
ⓘ
gradual typing of existing code ⓘ static checking of duck-typed code ⓘ |
How these facts were elicited
The pipeline generated the facts above by prompting gpt-5.1 with this entity's name + description and the instruction below.
You are a knowledge base construction expert. Given a subject entity and a description of it, return factual statements that you know for the subject as a JSON list of dictionaries(triples), where keys must be "subject", "predicate" and "object". The number of facts may be very high, between 25 to 50 or more, for very popular subjects. For less popular subjects, the number of facts can be very low, like 5 or 10. # Requirements - If you don't know the subject at all, return an empty list. - If the subject is not a named entity, return an empty list. - Include at least one triple where predicate is "instanceOf". - Do not get too wordy. - Separate several objects into multiple triples with one object.
Subject: PEP 544 Description of subject: PEP 544 is a Python Enhancement Proposal that introduces structural subtyping via typing.Protocol, enabling static type checkers to support interface-like behavior based on object capabilities rather than inheritance.
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.