GeezerVison is showing github.com — `Protocol` should be documented as using `ABCMeta` as metaclass · Issue #127677 · python/cpython
Protocol should be documented as using ABCMeta as metaclass #127677
Description
Documentation
Came up in #127648.
Currently the documentation for typing.Protocol doesn't mention that Protocol has ABCMeta in its metaclasses (indirectly via _ProtocolMeta) and that its methods can (should?) be marked with @abstractmethod. In fact, neither the string "ABCMeta" nor "abstractmethod" appear in the documentation for the typing module.
I also suggest to add @abstractmethod to the examples using a Protocol as that is probably a best practice.
Finally, the documentation for Protocol suggests to see PEP 544 for more details. I don't think this is particularly helpful. All information relevant for users should be in the main documentation. PEP 544 should only be suggested as a historical document. (And I don't suggest to directly link to the typing spec, either, although a general link at the top of the page would be useful.)
Reacted by Alex Waygood and Bénédikt Tran
Activity
JelleZijlstra commented on Dec 6, 2024
I also suggest to add @AbstractMethod to the examples using a Protocol as that is probably a best practice.
Not sure how I feel about this. There is some benefit, but it doesn't feel great to make protocol definitions even more verbose. Plus, Protocol is meant to be used with static type checkers, which can already figure out when a method definition is abstract.
Metadata
Metadata
StatusShow more project fields
Development
No branches or pull requestsIssue actions