title: Weird MRO result when inheriting directly from typing.NamedTuple
body: <p>I am confused why <code>FooBar.__mro__</code> doesn't show <code>&lt;class '__main__.Parent'&gt;</code> like the above two.</p>
  
  <p>I still don't know why after some digging into the CPython source code.</p>
  
  <pre><code>from typing import NamedTuple
  from collections import namedtuple
  
  A = namedtuple('A', ['test'])
  
  class B(NamedTuple):
    test: str
  
  class Parent:
    pass
  
  class Foo(Parent, A):
    pass
  
  class Bar(Parent, B):
    pass
  
  class FooBar(Parent, NamedTuple):
    pass
  
  print(Foo.__mro__)
  # prints (&lt;class '__main__.Foo'&gt;, &lt;class '__main__.Parent'&gt;, &lt;class '__main__.A'&gt;, &lt;class 'tuple'&gt;, &lt;class 'object'&gt;)
  
  print(Bar.__mro__)
  # prints (&lt;class '__main__.Bar'&gt;, &lt;class '__main__.Parent'&gt;, &lt;class '__main__.B'&gt;, &lt;class 'tuple'&gt;, &lt;class 'object'&gt;)
  
  print(FooBar.__mro__)
  # prints (&lt;class '__main__.FooBar'&gt;, &lt;class 'tuple'&gt;, &lt;class 'object'&gt;)
  # expecting: (&lt;class '__main__.FooBar'&gt;, &lt;class '__main__.Parent'&gt;, &lt;class 'tuple'&gt;, &lt;class 'object'&gt;) 
  
  </code></pre>