<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif">On Fri, Nov 10, 2017 at 10:26 PM, Ivan Levkivskyi </span><span dir="ltr" style="font-family:arial,sans-serif"><<a href="mailto:levkivskyi@gmail.com" target="_blank">levkivskyi@gmail.com</a>></span><span style="font-family:arial,sans-serif"> wrote:</span><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On 10 November 2017 at 21:19, Koos Zevenhoven <span dir="ltr"><<a href="mailto:k7hoven@gmail.com" target="_blank">k7hoven@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span><div style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif">On Fri, Nov 10, 2017 at 8:33 PM, Ivan Levkivskyi </span><span dir="ltr" style="font-family:arial,sans-serif"><<a href="mailto:levkivskyi@gmail.com" target="_blank">levkivskyi@gmail.com</a>></span><span style="font-family:arial,sans-serif"> wrote:</span><br></div></span><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On 10 November 2017 at 18:39, Koos Zevenhoven <span dir="ltr"><<a href="mailto:k7hoven@gmail.com" target="_blank">k7hoven@gmail.com</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span><span><div style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif">On Wed, Sep 27, 2017 at 12:28 PM, Ivan Levkivskyi </span><span dir="ltr" style="font-family:arial,sans-serif"><<a href="mailto:levkivskyi@gmail.com" target="_blank">levkivskyi@gmail.com</a>></span><span style="font-family:arial,sans-serif"> wrote:</span><br></div></span></span><span><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:monospace,monospace;display:inline">​</div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:monospace,monospace;display:inline">​</div>After creating the class,<br>the original bases are saved in ``__orig_bases__`` (currently this is also<br>done by the metaclass).<br><br></div></blockquote><div><br></div></span><div><div style="font-family:monospace,monospace">​Those are *still* bases, right, even if they are not in the mro?​ I'm not sure if this is a naming thing or something even more.</div></div></div></div></span></div></blockquote><div><br></div><div>The objects that have __subclass_base__ method (proposed to rename to __mro_entry__)</div><div>are removed from __bases__ attributed of the newly created class. Otherwise they may cause a metaclass conflict.</div><div>One can however still call them syntactic (or static?) bases. For example this is how it is going to be used by typing:</div><div><br></div><div>    from typing import List</div><div><br></div><div>    class Tokens(List[int]):</div><div>        ...</div><div><br></div><div>    assert Tokens.__bases__ == (list,)<br></div><span><div></div><div></div></span></div></div></div></blockquote><div><br></div></span><div><div style="font-family:monospace,monospace">​Why is List[int] not allowed to be the base? Neither method-lookup performance nor the metaclass conflict issue seem to depend on whether List[int] is in __bases__.</div><br></div></div></div></div></blockquote><div><br></div></span><div>The situation is actually quite opposite. Interestingly, the whole discussion started from Mark Shannon pointing to these problems with List[int] at the Language Summit.</div><div>The original discussion on typing tracker is referenced in the PEP draft.</div><div><br></div></div></div></div></blockquote><div><br></div><div class="gmail_default" style="font-family:monospace,monospace">​What do you mean? I don't see any mention of __bases__ in the discussion. </div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Perhaps related, if the syntax indeed were like this (as suggested by Mark?):</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">@implements(List[int])</div><div class="gmail_default" style="font-family:monospace,monospace">class Tokens(list):</div><div class="gmail_default" style="font-family:monospace,monospace">    ...</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">​then I would expect List[int] to be in __implements__ or something like that. </div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">But how to interpret that? Maybe something like "List describes the interface/API that list has"?</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">-- Koos</div><div class="gmail_default" style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_default" style="font-family:monospace,monospace"><span style="font-family:arial,sans-serif">-- </span></div></div><div class="gmail_signature" data-smartmail="gmail_signature">+ Koos Zevenhoven + <a href="http://twitter.com/k7hoven" target="_blank">http://twitter.com/k7hoven</a> +</div>
</div></div>