1414
1515T = TypeVar ("T" )
1616T2 = TypeVar ("T2" )
17+ T3 = TypeVar ("T3" , bound = int )
1718
1819
1920def test_deep_copy ():
@@ -31,9 +32,10 @@ def test_deep_copy():
3132
3233
3334@define
34- class TClass (Generic [T , T2 ]):
35+ class TClass (Generic [T , T2 , T3 ]):
3536 a : T
3637 b : T2
38+ c : T3 = 0
3739
3840
3941@define
@@ -44,15 +46,15 @@ class GenericCols(Generic[T]):
4446
4547
4648@pytest .mark .parametrize (
47- ("t" , "t2" , "result" ),
49+ ("t" , "t2" , "t3" , " result" ),
4850 (
49- (int , str , TClass (1 , "a" )),
50- (str , str , TClass ("1" , "a" )),
51- (List [int ], str , TClass ([1 , 2 , 3 ], "a" )),
51+ (int , str , int , TClass (1 , "a" )),
52+ (str , str , int , TClass ("1" , "a" )),
53+ (List [int ], str , int , TClass ([1 , 2 , 3 ], "a" )),
5254 ),
5355)
54- def test_able_to_structure_generics (converter : BaseConverter , t , t2 , result ):
55- res = converter .structure (asdict (result ), TClass [t , t2 ])
56+ def test_able_to_structure_generics (converter : BaseConverter , t , t2 , t3 , result ):
57+ res = converter .structure (asdict (result ), TClass [t , t2 , t3 ])
5658
5759 assert res == result
5860
@@ -103,20 +105,20 @@ class GenericCols(Generic[T]):
103105
104106
105107@pytest .mark .parametrize (
106- ("t" , "t2" , "result" ),
108+ ("t" , "t2" , "t3" , " result" ),
107109 (
108- (TClass [int , int ], str , TClass (TClass (1 , 2 ), "a" )),
109- (List [TClass [int , int ]], str , TClass ([TClass (1 , 2 )], "a" )),
110+ (TClass [int , int , int ], str , int , TClass (TClass (1 , 2 ), "a" )),
111+ (List [TClass [int , int , int ]], str , int , TClass ([TClass (1 , 2 )], "a" )),
110112 ),
111113)
112- def test_structure_nested_generics (converter : BaseConverter , t , t2 , result ):
113- res = converter .structure (asdict (result ), TClass [t , t2 ])
114+ def test_structure_nested_generics (converter : BaseConverter , t , t2 , t3 , result ):
115+ res = converter .structure (asdict (result ), TClass [t , t2 , t3 ])
114116
115117 assert res == result
116118
117119
118120def test_able_to_structure_deeply_nested_generics_gen (converter ):
119- cl = TClass [TClass [TClass [int , int ], int ] , int ]
121+ cl = TClass [TClass [TClass [int , int , int ], int , int ], int , int ]
120122 result = TClass (TClass (TClass (1 , 2 ), 3 ), 4 )
121123
122124 res = converter .structure (asdict (result ), cl )
@@ -130,7 +132,7 @@ class TClass2(Generic[T]):
130132 c : T
131133
132134 data = TClass2 (c = "string" )
133- res = converter .structure (asdict (data ), Union [TClass [int , int ], TClass2 [str ]])
135+ res = converter .structure (asdict (data ), Union [TClass [int , int , int ], TClass2 [str ]])
134136 assert res == data
135137
136138
@@ -141,7 +143,7 @@ class TClass2(Generic[T]):
141143
142144 data = [TClass2 (c = "string" ), TClass (1 , 2 )]
143145 res = converter .structure (
144- [asdict (x ) for x in data ], List [Union [TClass [int , int ], TClass2 [str ]]]
146+ [asdict (x ) for x in data ], List [Union [TClass [int , int , int ], TClass2 [str ]]]
145147 )
146148 assert res == data
147149
@@ -153,7 +155,7 @@ class TClass2(Generic[T]):
153155
154156 data = deque ((TClass2 (c = "string" ), TClass (1 , 2 )))
155157 res = converter .structure (
156- [asdict (x ) for x in data ], Deque [Union [TClass [int , int ], TClass2 [str ]]]
158+ [asdict (x ) for x in data ], Deque [Union [TClass [int , int , int ], TClass2 [str ]]]
157159 )
158160 assert res == data
159161
0 commit comments