Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6f06c52

Browse files
committed
Fallback to __bases__
1 parent 1cb14c2 commit 6f06c52

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

Lib/test/test_types.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,10 +1366,10 @@ class A: pass
13661366
class B(typing.Generic[T]): pass
13671367
class C(B[int]): pass
13681368
class D(B[str], float): pass
1369-
self.assertIsNone(types.get_original_bases(A))
1369+
self.assertEqual(types.get_original_bases(A), (object,))
13701370
self.assertEqual(types.get_original_bases(B), (typing.Generic[T],))
13711371
self.assertEqual(types.get_original_bases(C), (B[int],))
1372-
self.assertIsNone(types.get_original_bases(int))
1372+
self.assertEqual(types.get_original_bases(int), (object,))
13731373
self.assertEqual(types.get_original_bases(D), (B[str], float))
13741374

13751375
class E(list[T]): pass
@@ -1383,6 +1383,9 @@ class G(typing.NamedTuple):
13831383

13841384
self.assertIs(types.get_original_bases(G)[0], typing.NamedTuple)
13851385

1386+
with self.assertRaises(TypeError):
1387+
types.get_original_bases(object())
1388+
13861389
# Many of the following tests are derived from test_descr.py
13871390
def test_prepare_class(self):
13881391
# Basic test of metaclass derivation

Lib/types.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,15 @@ class Baz(list[str]): ...
163163
get_original_bases(Baz) == (list[str],)
164164
get_original_bases(int) == None
165165
"""
166-
if isinstance(cls, type):
166+
try:
167+
return cls.__orig_bases__
168+
except AttributeError:
167169
try:
168-
return cls.__orig_bases__
170+
return cls.__bases__
169171
except AttributeError:
170-
pass
171-
return None
172+
raise TypeError(
173+
f'Expected an instance of type, not {type(cls).__name__!r}'
174+
) from None
172175

173176

174177
class DynamicClassAttribute:

0 commit comments

Comments
 (0)