mirror of
https://github.com/python/cpython.git
synced 2024-11-24 10:24:35 +08:00
gh-96769: Cover more typing special forms to be unsubclassable (#96772)
This commit is contained in:
parent
8dc9b3fbc1
commit
9b3d2d008a
@ -1037,6 +1037,15 @@ class TypeVarTupleTests(BaseTestCase):
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
CANNOT_SUBCLASS_INSTANCE % 'TypeVarTuple'):
|
||||
class C(Ts): pass
|
||||
with self.assertRaisesRegex(TypeError, r'Cannot subclass \*Ts'):
|
||||
class C(*Ts): pass
|
||||
with self.assertRaisesRegex(TypeError, CANNOT_SUBCLASS_TYPE):
|
||||
class C(type(Unpack)): pass
|
||||
with self.assertRaisesRegex(TypeError, CANNOT_SUBCLASS_TYPE):
|
||||
class C(type(Unpack[Ts])): pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.Unpack'):
|
||||
class C(Unpack): pass
|
||||
with self.assertRaisesRegex(TypeError, r'Cannot subclass \*Ts'):
|
||||
class C(Unpack[Ts]): pass
|
||||
|
||||
@ -3710,6 +3719,14 @@ class ClassVarTests(BaseTestCase):
|
||||
with self.assertRaisesRegex(TypeError, CANNOT_SUBCLASS_TYPE):
|
||||
class C(type(ClassVar[int])):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.ClassVar'):
|
||||
class C(ClassVar):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.ClassVar\[int\]'):
|
||||
class C(ClassVar[int]):
|
||||
pass
|
||||
|
||||
def test_cannot_init(self):
|
||||
with self.assertRaises(TypeError):
|
||||
@ -3752,6 +3769,14 @@ class FinalTests(BaseTestCase):
|
||||
with self.assertRaisesRegex(TypeError, CANNOT_SUBCLASS_TYPE):
|
||||
class C(type(Final[int])):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.Final'):
|
||||
class C(Final):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.Final\[int\]'):
|
||||
class C(Final[int]):
|
||||
pass
|
||||
|
||||
def test_cannot_init(self):
|
||||
with self.assertRaises(TypeError):
|
||||
@ -6439,13 +6464,18 @@ class RETests(BaseTestCase):
|
||||
self.assertEqual(len(w), 1)
|
||||
|
||||
def test_cannot_subclass(self):
|
||||
with self.assertRaises(TypeError) as ex:
|
||||
|
||||
with self.assertRaisesRegex(
|
||||
TypeError,
|
||||
r"type 're\.Match' is not an acceptable base type",
|
||||
):
|
||||
class A(typing.Match):
|
||||
pass
|
||||
|
||||
self.assertEqual(str(ex.exception),
|
||||
"type 're.Match' is not an acceptable base type")
|
||||
with self.assertRaisesRegex(
|
||||
TypeError,
|
||||
r"type 're\.Pattern' is not an acceptable base type",
|
||||
):
|
||||
class A(typing.Pattern):
|
||||
pass
|
||||
|
||||
|
||||
class AnnotatedTests(BaseTestCase):
|
||||
@ -7037,6 +7067,14 @@ class TypeGuardTests(BaseTestCase):
|
||||
with self.assertRaisesRegex(TypeError, CANNOT_SUBCLASS_TYPE):
|
||||
class C(type(TypeGuard[int])):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.TypeGuard'):
|
||||
class C(TypeGuard):
|
||||
pass
|
||||
with self.assertRaisesRegex(TypeError,
|
||||
r'Cannot subclass typing\.TypeGuard\[int\]'):
|
||||
class C(TypeGuard[int]):
|
||||
pass
|
||||
|
||||
def test_cannot_init(self):
|
||||
with self.assertRaises(TypeError):
|
||||
|
Loading…
Reference in New Issue
Block a user