@@ -47,7 +47,7 @@ def recurse(actual, expect):
47
47
recurse (actual , expect )
48
48
49
49
def checkPatternError (self , pattern , errmsg , pos = None ):
50
- with self .assertRaises (re .error ) as cm :
50
+ with self .assertRaises (re .PatternError ) as cm :
51
51
re .compile (pattern )
52
52
with self .subTest (pattern = pattern ):
53
53
err = cm .exception
@@ -56,14 +56,17 @@ def checkPatternError(self, pattern, errmsg, pos=None):
56
56
self .assertEqual (err .pos , pos )
57
57
58
58
def checkTemplateError (self , pattern , repl , string , errmsg , pos = None ):
59
- with self .assertRaises (re .error ) as cm :
59
+ with self .assertRaises (re .PatternError ) as cm :
60
60
re .sub (pattern , repl , string )
61
61
with self .subTest (pattern = pattern , repl = repl ):
62
62
err = cm .exception
63
63
self .assertEqual (err .msg , errmsg )
64
64
if pos is not None :
65
65
self .assertEqual (err .pos , pos )
66
66
67
+ def test_error_is_PatternError_alias (self ):
68
+ assert re .error is re .PatternError
69
+
67
70
def test_keep_buffer (self ):
68
71
# See bug 14212
69
72
b = bytearray (b'x' )
@@ -154,7 +157,7 @@ def test_basic_re_sub(self):
154
157
(chr (9 )+ chr (10 )+ chr (11 )+ chr (13 )+ chr (12 )+ chr (7 )+ chr (8 )))
155
158
for c in 'cdehijklmopqsuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' :
156
159
with self .subTest (c ):
157
- with self .assertRaises (re .error ):
160
+ with self .assertRaises (re .PatternError ):
158
161
self .assertEqual (re .sub ('a' , '\\ ' + c , 'a' ), '\\ ' + c )
159
162
160
163
self .assertEqual (re .sub (r'^\s*' , 'X' , 'test' ), 'Xtest' )
@@ -836,10 +839,10 @@ def test_other_escapes(self):
836
839
re .purge () # for warnings
837
840
for c in 'ceghijklmopqyzCEFGHIJKLMNOPQRTVXY' :
838
841
with self .subTest (c ):
839
- self .assertRaises (re .error , re .compile , '\\ %c' % c )
842
+ self .assertRaises (re .PatternError , re .compile , '\\ %c' % c )
840
843
for c in 'ceghijklmopqyzABCEFGHIJKLMNOPQRTVXYZ' :
841
844
with self .subTest (c ):
842
- self .assertRaises (re .error , re .compile , '[\\ %c]' % c )
845
+ self .assertRaises (re .PatternError , re .compile , '[\\ %c]' % c )
843
846
844
847
def test_named_unicode_escapes (self ):
845
848
# test individual Unicode named escapes
@@ -970,14 +973,14 @@ def test_lookbehind(self):
970
973
self .assertIsNone (re .match (r'(?:(a)|(x))b(?<=(?(1)c|x))c' , 'abc' ))
971
974
self .assertTrue (re .match (r'(?:(a)|(x))b(?<=(?(1)b|x))c' , 'abc' ))
972
975
# Group used before defined.
973
- self .assertRaises (re .error , re .compile , r'(a)b(?<=(?(2)b|x))(c)' )
976
+ self .assertRaises (re .PatternError , re .compile , r'(a)b(?<=(?(2)b|x))(c)' )
974
977
self .assertIsNone (re .match (r'(a)b(?<=(?(1)c|x))(c)' , 'abc' ))
975
978
self .assertTrue (re .match (r'(a)b(?<=(?(1)b|x))(c)' , 'abc' ))
976
979
# Group defined in the same lookbehind pattern
977
- self .assertRaises (re .error , re .compile , r'(a)b(?<=(.)\2)(c)' )
978
- self .assertRaises (re .error , re .compile , r'(a)b(?<=(?P<a>.)(?P=a))(c)' )
979
- self .assertRaises (re .error , re .compile , r'(a)b(?<=(a)(?(2)b|x))(c)' )
980
- self .assertRaises (re .error , re .compile , r'(a)b(?<=(.)(?<=\2))(c)' )
980
+ self .assertRaises (re .PatternError , re .compile , r'(a)b(?<=(.)\2)(c)' )
981
+ self .assertRaises (re .PatternError , re .compile , r'(a)b(?<=(?P<a>.)(?P=a))(c)' )
982
+ self .assertRaises (re .PatternError , re .compile , r'(a)b(?<=(a)(?(2)b|x))(c)' )
983
+ self .assertRaises (re .PatternError , re .compile , r'(a)b(?<=(.)(?<=\2))(c)' )
981
984
982
985
def test_ignore_case (self ):
983
986
self .assertEqual (re .match ("abc" , "ABC" , re .I ).group (0 ), "ABC" )
@@ -1318,8 +1321,8 @@ def test_sre_byte_literals(self):
1318
1321
self .assertTrue (re .match ((r"\x%02x" % i ).encode (), bytes ([i ])))
1319
1322
self .assertTrue (re .match ((r"\x%02x0" % i ).encode (), bytes ([i ])+ b"0" ))
1320
1323
self .assertTrue (re .match ((r"\x%02xz" % i ).encode (), bytes ([i ])+ b"z" ))
1321
- self .assertRaises (re .error , re .compile , br"\u1234" )
1322
- self .assertRaises (re .error , re .compile , br"\U00012345" )
1324
+ self .assertRaises (re .PatternError , re .compile , br"\u1234" )
1325
+ self .assertRaises (re .PatternError , re .compile , br"\U00012345" )
1323
1326
self .assertTrue (re .match (br"\0" , b"\000 " ))
1324
1327
self .assertTrue (re .match (br"\08" , b"\000 8" ))
1325
1328
self .assertTrue (re .match (br"\01" , b"\001 " ))
@@ -1341,8 +1344,8 @@ def test_sre_byte_class_literals(self):
1341
1344
self .assertTrue (re .match ((r"[\x%02x]" % i ).encode (), bytes ([i ])))
1342
1345
self .assertTrue (re .match ((r"[\x%02x0]" % i ).encode (), bytes ([i ])))
1343
1346
self .assertTrue (re .match ((r"[\x%02xz]" % i ).encode (), bytes ([i ])))
1344
- self .assertRaises (re .error , re .compile , br"[\u1234]" )
1345
- self .assertRaises (re .error , re .compile , br"[\U00012345]" )
1347
+ self .assertRaises (re .PatternError , re .compile , br"[\u1234]" )
1348
+ self .assertRaises (re .PatternError , re .compile , br"[\U00012345]" )
1346
1349
self .checkPatternError (br"[\567]" ,
1347
1350
r'octal escape value \567 outside of '
1348
1351
r'range 0-0o377' , 1 )
@@ -1675,11 +1678,11 @@ def test_ascii_and_unicode_flag(self):
1675
1678
self .assertIsNone (pat .match (b'\xe0 ' ))
1676
1679
# Incompatibilities
1677
1680
self .assertRaises (ValueError , re .compile , br'\w' , re .UNICODE )
1678
- self .assertRaises (re .error , re .compile , br'(?u)\w' )
1681
+ self .assertRaises (re .PatternError , re .compile , br'(?u)\w' )
1679
1682
self .assertRaises (ValueError , re .compile , r'\w' , re .UNICODE | re .ASCII )
1680
1683
self .assertRaises (ValueError , re .compile , r'(?u)\w' , re .ASCII )
1681
1684
self .assertRaises (ValueError , re .compile , r'(?a)\w' , re .UNICODE )
1682
- self .assertRaises (re .error , re .compile , r'(?au)\w' )
1685
+ self .assertRaises (re .PatternError , re .compile , r'(?au)\w' )
1683
1686
1684
1687
def test_locale_flag (self ):
1685
1688
enc = locale .getpreferredencoding ()
@@ -1720,11 +1723,11 @@ def test_locale_flag(self):
1720
1723
self .assertIsNone (pat .match (bletter ))
1721
1724
# Incompatibilities
1722
1725
self .assertRaises (ValueError , re .compile , '' , re .LOCALE )
1723
- self .assertRaises (re .error , re .compile , '(?L)' )
1726
+ self .assertRaises (re .PatternError , re .compile , '(?L)' )
1724
1727
self .assertRaises (ValueError , re .compile , b'' , re .LOCALE | re .ASCII )
1725
1728
self .assertRaises (ValueError , re .compile , b'(?L)' , re .ASCII )
1726
1729
self .assertRaises (ValueError , re .compile , b'(?a)' , re .LOCALE )
1727
- self .assertRaises (re .error , re .compile , b'(?aL)' )
1730
+ self .assertRaises (re .PatternError , re .compile , b'(?aL)' )
1728
1731
1729
1732
def test_scoped_flags (self ):
1730
1733
self .assertTrue (re .match (r'(?i:a)b' , 'Ab' ))
@@ -2060,7 +2063,7 @@ def test_locale_compiled(self):
2060
2063
self .assertIsNone (p4 .match (b'\xc5 \xc5 ' ))
2061
2064
2062
2065
def test_error (self ):
2063
- with self .assertRaises (re .error ) as cm :
2066
+ with self .assertRaises (re .PatternError ) as cm :
2064
2067
re .compile ('(\u20ac ))' )
2065
2068
err = cm .exception
2066
2069
self .assertIsInstance (err .pattern , str )
@@ -2072,14 +2075,14 @@ def test_error(self):
2072
2075
self .assertIn (' at position 3' , str (err ))
2073
2076
self .assertNotIn (' at position 3' , err .msg )
2074
2077
# Bytes pattern
2075
- with self .assertRaises (re .error ) as cm :
2078
+ with self .assertRaises (re .PatternError ) as cm :
2076
2079
re .compile (b'(\xa4 ))' )
2077
2080
err = cm .exception
2078
2081
self .assertIsInstance (err .pattern , bytes )
2079
2082
self .assertEqual (err .pattern , b'(\xa4 ))' )
2080
2083
self .assertEqual (err .pos , 3 )
2081
2084
# Multiline pattern
2082
- with self .assertRaises (re .error ) as cm :
2085
+ with self .assertRaises (re .PatternError ) as cm :
2083
2086
re .compile ("""
2084
2087
(
2085
2088
abc
@@ -2820,7 +2823,7 @@ def test_re_tests(self):
2820
2823
2821
2824
with self .subTest (pattern = pattern , string = s ):
2822
2825
if outcome == SYNTAX_ERROR : # Expected a syntax error
2823
- with self .assertRaises (re .error ):
2826
+ with self .assertRaises (re .PatternError ):
2824
2827
re .compile (pattern )
2825
2828
continue
2826
2829
0 commit comments