File tree 2 files changed +26
-0
lines changed
2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -698,6 +698,18 @@ def test_match_args(self):
698
698
Point = namedtuple ('Point' , 'x y' )
699
699
self .assertEqual (Point .__match_args__ , ('x' , 'y' ))
700
700
701
+ def test_non_generic_subscript (self ):
702
+ # For backward compatibility, subscription works
703
+ # on arbitrary named tuple types.
704
+ Group = collections .namedtuple ('Group' , 'key group' )
705
+ A = Group [int , list [int ]]
706
+ self .assertEqual (A .__origin__ , Group )
707
+ self .assertEqual (A .__parameters__ , ())
708
+ self .assertEqual (A .__args__ , (int , list [int ]))
709
+ a = A (1 , [2 ])
710
+ self .assertIs (type (a ), Group )
711
+ self .assertEqual (a , (1 , [2 ]))
712
+
701
713
702
714
################################################################################
703
715
### Abstract Base Classes
Original file line number Diff line number Diff line change @@ -5736,6 +5736,20 @@ class Y(Generic[T], NamedTuple):
5736
5736
with self .assertRaises (TypeError ):
5737
5737
G [int , str ]
5738
5738
5739
+ def test_non_generic_subscript (self ):
5740
+ # For backward compatibility, subscription works
5741
+ # on arbitrary NamedTuple types.
5742
+ class Group (NamedTuple ):
5743
+ key : T
5744
+ group : list [T ]
5745
+ A = Group [int ]
5746
+ self .assertEqual (A .__origin__ , Group )
5747
+ self .assertEqual (A .__parameters__ , ())
5748
+ self .assertEqual (A .__args__ , (int ,))
5749
+ a = A (1 , [2 ])
5750
+ self .assertIs (type (a ), Group )
5751
+ self .assertEqual (a , (1 , [2 ]))
5752
+
5739
5753
def test_namedtuple_keyword_usage (self ):
5740
5754
LocalEmployee = NamedTuple ("LocalEmployee" , name = str , age = int )
5741
5755
nick = LocalEmployee ('Nick' , 25 )
You can’t perform that action at this time.
0 commit comments