@@ -6474,7 +6474,7 @@ def __len__(self):
64746474 return 0
64756475
64766476 self .assertEqual (len (MMC ()), 0 )
6477- assert callable (MMC .update )
6477+ self . assertTrue ( callable (MMC .update ) )
64786478 self .assertIsInstance (MMC (), typing .Mapping )
64796479
64806480 class MMB (typing .MutableMapping [KT , VT ]):
@@ -6669,8 +6669,8 @@ def foo(a: A) -> Optional[BaseException]:
66696669 else :
66706670 return a ()
66716671
6672- assert isinstance (foo (KeyboardInterrupt ), KeyboardInterrupt )
6673- assert foo (None ) is None
6672+ self . assertIsInstance (foo (KeyboardInterrupt ), KeyboardInterrupt )
6673+ self . assertIsNone ( foo (None ))
66746674
66756675
66766676class TestModules (TestCase ):
@@ -7017,6 +7017,10 @@ def test_basics_functional_syntax(self):
70177017 self .assertEqual (Emp .__bases__ , (dict ,))
70187018 self .assertEqual (Emp .__annotations__ , {'name' : str , 'id' : int })
70197019 self .assertEqual (Emp .__total__ , True )
7020+ self .assertEqual (Emp .__required_keys__ , {'name' , 'id' })
7021+ self .assertIsInstance (Emp .__required_keys__ , frozenset )
7022+ self .assertEqual (Emp .__optional_keys__ , set ())
7023+ self .assertIsInstance (Emp .__optional_keys__ , frozenset )
70207024
70217025 def test_typeddict_create_errors (self ):
70227026 with self .assertRaises (TypeError ):
@@ -7092,7 +7096,9 @@ def test_total(self):
70927096 self .assertEqual (D (x = 1 ), {'x' : 1 })
70937097 self .assertEqual (D .__total__ , False )
70947098 self .assertEqual (D .__required_keys__ , frozenset ())
7099+ self .assertIsInstance (D .__required_keys__ , frozenset )
70957100 self .assertEqual (D .__optional_keys__ , {'x' })
7101+ self .assertIsInstance (D .__optional_keys__ , frozenset )
70967102
70977103 self .assertEqual (Options (), {})
70987104 self .assertEqual (Options (log_level = 2 ), {'log_level' : 2 })
@@ -7104,8 +7110,10 @@ def test_optional_keys(self):
71047110 class Point2Dor3D (Point2D , total = False ):
71057111 z : int
71067112
7107- assert Point2Dor3D .__required_keys__ == frozenset (['x' , 'y' ])
7108- assert Point2Dor3D .__optional_keys__ == frozenset (['z' ])
7113+ self .assertEqual (Point2Dor3D .__required_keys__ , frozenset (['x' , 'y' ]))
7114+ self .assertIsInstance (Point2Dor3D .__required_keys__ , frozenset )
7115+ self .assertEqual (Point2Dor3D .__optional_keys__ , frozenset (['z' ]))
7116+ self .assertIsInstance (Point2Dor3D .__optional_keys__ , frozenset )
71097117
71107118 def test_keys_inheritance (self ):
71117119 class BaseAnimal (TypedDict ):
@@ -7118,26 +7126,26 @@ class Animal(BaseAnimal, total=False):
71187126 class Cat (Animal ):
71197127 fur_color : str
71207128
7121- assert BaseAnimal .__required_keys__ == frozenset (['name' ])
7122- assert BaseAnimal .__optional_keys__ == frozenset ([])
7123- assert BaseAnimal .__annotations__ == {'name' : str }
7129+ self . assertEqual ( BaseAnimal .__required_keys__ , frozenset (['name' ]) )
7130+ self . assertEqual ( BaseAnimal .__optional_keys__ , frozenset ([]) )
7131+ self . assertEqual ( BaseAnimal .__annotations__ , {'name' : str })
71247132
7125- assert Animal .__required_keys__ == frozenset (['name' ])
7126- assert Animal .__optional_keys__ == frozenset (['tail' , 'voice' ])
7127- assert Animal .__annotations__ == {
7133+ self . assertEqual ( Animal .__required_keys__ , frozenset (['name' ]) )
7134+ self . assertEqual ( Animal .__optional_keys__ , frozenset (['tail' , 'voice' ]) )
7135+ self . assertEqual ( Animal .__annotations__ , {
71287136 'name' : str ,
71297137 'tail' : bool ,
71307138 'voice' : str ,
7131- }
7139+ })
71327140
7133- assert Cat .__required_keys__ == frozenset (['name' , 'fur_color' ])
7134- assert Cat .__optional_keys__ == frozenset (['tail' , 'voice' ])
7135- assert Cat .__annotations__ == {
7141+ self . assertEqual ( Cat .__required_keys__ , frozenset (['name' , 'fur_color' ]) )
7142+ self . assertEqual ( Cat .__optional_keys__ , frozenset (['tail' , 'voice' ]) )
7143+ self . assertEqual ( Cat .__annotations__ , {
71367144 'fur_color' : str ,
71377145 'name' : str ,
71387146 'tail' : bool ,
71397147 'voice' : str ,
7140- }
7148+ })
71417149
71427150 def test_required_notrequired_keys (self ):
71437151 self .assertEqual (NontotalMovie .__required_keys__ ,
@@ -7367,11 +7375,11 @@ class C(B[int]):
73677375 self .assertEqual (C .__total__ , True )
73687376 self .assertEqual (C .__optional_keys__ , frozenset (['b' ]))
73697377 self .assertEqual (C .__required_keys__ , frozenset (['a' , 'c' ]))
7370- assert C .__annotations__ == {
7378+ self . assertEqual ( C .__annotations__ , {
73717379 'a' : T ,
73727380 'b' : KT ,
73737381 'c' : int ,
7374- }
7382+ })
73757383 with self .assertRaises (TypeError ):
73767384 C [str ]
73777385
@@ -7386,11 +7394,11 @@ class Point3D(Point2DGeneric[T], Generic[T, KT]):
73867394 self .assertEqual (Point3D .__total__ , True )
73877395 self .assertEqual (Point3D .__optional_keys__ , frozenset ())
73887396 self .assertEqual (Point3D .__required_keys__ , frozenset (['a' , 'b' , 'c' ]))
7389- assert Point3D .__annotations__ == {
7397+ self . assertEqual ( Point3D .__annotations__ , {
73907398 'a' : T ,
73917399 'b' : T ,
73927400 'c' : KT ,
7393- }
7401+ })
73947402 self .assertEqual (Point3D [int , str ].__origin__ , Point3D )
73957403
73967404 with self .assertRaises (TypeError ):
@@ -7417,11 +7425,11 @@ class WithImplicitAny(B):
74177425 self .assertEqual (WithImplicitAny .__total__ , True )
74187426 self .assertEqual (WithImplicitAny .__optional_keys__ , frozenset (['b' ]))
74197427 self .assertEqual (WithImplicitAny .__required_keys__ , frozenset (['a' , 'c' ]))
7420- assert WithImplicitAny .__annotations__ == {
7428+ self . assertEqual ( WithImplicitAny .__annotations__ , {
74217429 'a' : T ,
74227430 'b' : KT ,
74237431 'c' : int ,
7424- }
7432+ })
74257433 with self .assertRaises (TypeError ):
74267434 WithImplicitAny [str ]
74277435
0 commit comments