[Python-Dev] PEP 544: Protocols - second round (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Thu May 25 10:19:44 EDT 2017


On 25 May 2017 at 21:26, Antoine Pitrou <solipsis at pitrou.net> wrote:

On Wed, 24 May 2017 23:31:47 +0200 Ivan Levkivskyi <levkivskyi at gmail.com> wrote:

Hi all,

After collecting suggestions in the previous discussion on python-dev https://mail.python.org/pipermail/python-dev/2017-March/thread.html#147629 and playing with implementation, here is an updated version of PEP 544. -- Ivan

A link for those who don't like reading long e-mails: https://www.python.org/dev/peps/pep-0544/ ========================= PEP: 544 Title: Protocols Can you give this PEP a more explicit title? "Protocols" sound like network protocols to me.

Especially given the existing use of the term in an asyncio context: https://www.python.org/dev/peps/pep-3156/#transports-and-protocols

Given the abstract, I'd suggest "Structural Subtyping" as a suitable title for the PEP.

That said, I think it's fine to use "protocol" throughout the rest of the PEP as is currently the case - object protocols and network protocols are clearly different things, it's just the bare word "Protocols" appearing as a PEP title in the PEP index with no other context that's potentially confusing.

I'm +1 on the general idea of the PEP, and only have one question regarding the specifics. Given:

import typing

class MyContainer:
    def __len__(self) -> int:
        ...
    def close(self) -> None:
        ...

Would that be enough for a static typechecker to consider MyContainer a structural subtype of both typing.Sized and SupportsClose from the PEP, even though neither is imported explicitly into the module? I'm assuming the answer is "Yes", but I didn't see it explicitly stated anywhere.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list