<div dir="auto"><div style="font-family:sans-serif;font-size:12.8px" dir="auto"><div style="margin:15px 0px"><div><div dir="auto"><div dir="auto">[originally I sent this to typing-sig but I guess it got caught up in moderation.]</div><div dir="auto"><br></div><div dir="auto">In PEP 554 [1] it says:</div><div dir="auto"><br></div><div dir="auto"><ul style="margin:0px 0px 1.3125em 1.5em;padding:0px;border:0px;font-size:16px;line-height:1.875;font-family:'sourcesansproregular','arial',sans-serif;vertical-align:baseline;list-style:square;color:rgb(68,68,68);background-color:rgb(249,249,249)"><li style="margin:0.2625em 0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-size:inherit;line-height:1.65em;font-family:inherit;vertical-align:baseline">Implement metaclass functionality to detect whether a class is a protocol or not. Add a class attribute <tt>_is_protocol = True</tt> if that is the case. Verify that a protocol class only has protocol base classes in the MRO (except for object). </li></ul></div><div dir="auto">The phrase "except for object" implies that having "type" in the MRO would not be allowed.  Was that intentional?</div><div dir="auto"><br></div><div dir="auto">Perhaps I've misunderstood semantics with typing stuff (I haven't followed much of the discussion), but there seems to be a disconnect with how special ("dunder") methods are looked up (i.e. on classes).  Effectively, an object's *class* has to implement the relevant "protocol".  So disallowing "type" in the MRO means not using the PEP's functionality for "special method" protocols (as well as metaclasses in general).  Have I understood that right?  Is that on purpose?</div><div dir="auto"><br></div><div dir="auto">Thanks for working on this, BTW.  It's a nice addition. :)</div><div dir="auto"><br></div><div dir="auto">-eric</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">[1] <a href="https://www.python.org/dev/peps/pep-0544/#implementation-details" style="text-decoration-line:none;color:rgb(66,133,244)" rel="noreferrer noreferrer" target="_blank">https://www.python.org/dev/peps/pep-0544/#implementation-details</a></div></div></div></div></div></div>