@@ -564,51 +564,55 @@ def __index__(self):
564564 self .assertEqual (m .group (2 , 1 ), ('b' , 'a' ))
565565 self .assertEqual (m .group (Index (2 ), Index (1 )), ('b' , 'a' ))
566566
567+ def do_test_match_getitem (self , match_fn ):
568+ m = match_fn ('a' )
569+ self .assertEqual (m ['a1' ], 'a' )
570+ self .assertEqual (m ['b2' ], None )
571+ self .assertEqual (m ['c3' ], None )
572+ self .assertEqual ('a1={a1} b2={b2} c3={c3}' .format_map (m ), 'a1=a b2=None c3=None' )
573+ self .assertEqual (m [0 ], 'a' )
574+ self .assertEqual (m [1 ], 'a' )
575+ self .assertEqual (m [2 ], None )
576+ self .assertEqual (m [3 ], None )
577+ with self .assertRaisesRegex (IndexError , 'no such group' ):
578+ m ['X' ]
579+ with self .assertRaisesRegex (IndexError , 'no such group' ):
580+ m [- 1 ]
581+ with self .assertRaisesRegex (IndexError , 'no such group' ):
582+ m [4 ]
583+ with self .assertRaisesRegex (IndexError , 'no such group' ):
584+ m [0 , 1 ]
585+ with self .assertRaisesRegex (IndexError , 'no such group' ):
586+ m [(0 ,)]
587+ with self .assertRaisesRegex (IndexError , 'no such group' ):
588+ m [(0 , 1 )]
589+ with self .assertRaisesRegex (IndexError , 'no such group' ):
590+ 'a1={a2}' .format_map (m )
591+
592+ m = match_fn ('ac' )
593+ self .assertEqual (m ['a1' ], 'a' )
594+ self .assertEqual (m ['b2' ], None )
595+ self .assertEqual (m ['c3' ], 'c' )
596+ self .assertEqual ('a1={a1} b2={b2} c3={c3}' .format_map (m ), 'a1=a b2=None c3=c' )
597+ self .assertEqual (m [0 ], 'ac' )
598+ self .assertEqual (m [1 ], 'a' )
599+ self .assertEqual (m [2 ], None )
600+ self .assertEqual (m [3 ], 'c' )
601+
602+ # Cannot assign.
603+ with self .assertRaises (TypeError ):
604+ m [0 ] = 1
605+
606+ # No len().
607+ self .assertRaises (TypeError , len , m )
608+
567609 def test_match_getitem (self ):
568610 pat = re .compile ('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?' )
611+ self .do_test_match_getitem (pat .match )
569612
570- for match_fn in pat .match , pat .prefixmatch :
571- with self .subTest (match_fn .__name__ ):
572- m = match_fn ('a' )
573- self .assertEqual (m ['a1' ], 'a' )
574- self .assertEqual (m ['b2' ], None )
575- self .assertEqual (m ['c3' ], None )
576- self .assertEqual ('a1={a1} b2={b2} c3={c3}' .format_map (m ), 'a1=a b2=None c3=None' )
577- self .assertEqual (m [0 ], 'a' )
578- self .assertEqual (m [1 ], 'a' )
579- self .assertEqual (m [2 ], None )
580- self .assertEqual (m [3 ], None )
581- with self .assertRaisesRegex (IndexError , 'no such group' ):
582- m ['X' ]
583- with self .assertRaisesRegex (IndexError , 'no such group' ):
584- m [- 1 ]
585- with self .assertRaisesRegex (IndexError , 'no such group' ):
586- m [4 ]
587- with self .assertRaisesRegex (IndexError , 'no such group' ):
588- m [0 , 1 ]
589- with self .assertRaisesRegex (IndexError , 'no such group' ):
590- m [(0 ,)]
591- with self .assertRaisesRegex (IndexError , 'no such group' ):
592- m [(0 , 1 )]
593- with self .assertRaisesRegex (IndexError , 'no such group' ):
594- 'a1={a2}' .format_map (m )
595-
596- m = match_fn ('ac' )
597- self .assertEqual (m ['a1' ], 'a' )
598- self .assertEqual (m ['b2' ], None )
599- self .assertEqual (m ['c3' ], 'c' )
600- self .assertEqual ('a1={a1} b2={b2} c3={c3}' .format_map (m ), 'a1=a b2=None c3=c' )
601- self .assertEqual (m [0 ], 'ac' )
602- self .assertEqual (m [1 ], 'a' )
603- self .assertEqual (m [2 ], None )
604- self .assertEqual (m [3 ], 'c' )
605-
606- # Cannot assign.
607- with self .assertRaises (TypeError ):
608- m [0 ] = 1
609-
610- # No len().
611- self .assertRaises (TypeError , len , m )
613+ def test_prefixmatch_getitem (self ):
614+ pat = re .compile ('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?' )
615+ self .do_test_match_getitem (pat .prefixmatch )
612616
613617 def test_re_fullmatch (self ):
614618 # Issue 16203: Proposal: add re.fullmatch() method.
0 commit comments