@@ -218,24 +218,24 @@ class TranslateTestCase(unittest.TestCase):
218218
219219 def test_translate (self ):
220220 import re
221- self .assertEqual (translate ('*' ), r'(?s:.*)\Z ' )
222- self .assertEqual (translate ('?' ), r'(?s:.)\Z ' )
223- self .assertEqual (translate ('a?b*' ), r'(?s:a.b.*)\Z ' )
224- self .assertEqual (translate ('[abc]' ), r'(?s:[abc])\Z ' )
225- self .assertEqual (translate ('[]]' ), r'(?s:[]])\Z ' )
226- self .assertEqual (translate ('[!x]' ), r'(?s:[^x])\Z ' )
227- self .assertEqual (translate ('[^x]' ), r'(?s:[\^x])\Z ' )
228- self .assertEqual (translate ('[x' ), r'(?s:\[x)\Z ' )
221+ self .assertEqual (translate ('*' ), r'(?s:.*)\z ' )
222+ self .assertEqual (translate ('?' ), r'(?s:.)\z ' )
223+ self .assertEqual (translate ('a?b*' ), r'(?s:a.b.*)\z ' )
224+ self .assertEqual (translate ('[abc]' ), r'(?s:[abc])\z ' )
225+ self .assertEqual (translate ('[]]' ), r'(?s:[]])\z ' )
226+ self .assertEqual (translate ('[!x]' ), r'(?s:[^x])\z ' )
227+ self .assertEqual (translate ('[^x]' ), r'(?s:[\^x])\z ' )
228+ self .assertEqual (translate ('[x' ), r'(?s:\[x)\z ' )
229229 # from the docs
230- self .assertEqual (translate ('*.txt' ), r'(?s:.*\.txt)\Z ' )
230+ self .assertEqual (translate ('*.txt' ), r'(?s:.*\.txt)\z ' )
231231 # squash consecutive stars
232- self .assertEqual (translate ('*********' ), r'(?s:.*)\Z ' )
233- self .assertEqual (translate ('A*********' ), r'(?s:A.*)\Z ' )
234- self .assertEqual (translate ('*********A' ), r'(?s:.*A)\Z ' )
235- self .assertEqual (translate ('A*********?[?]?' ), r'(?s:A.*.[?].)\Z ' )
232+ self .assertEqual (translate ('*********' ), r'(?s:.*)\z ' )
233+ self .assertEqual (translate ('A*********' ), r'(?s:A.*)\z ' )
234+ self .assertEqual (translate ('*********A' ), r'(?s:.*A)\z ' )
235+ self .assertEqual (translate ('A*********?[?]?' ), r'(?s:A.*.[?].)\z ' )
236236 # fancy translation to prevent exponential-time match failure
237237 t = translate ('**a*a****a' )
238- self .assertEqual (t , r'(?s:(?>.*?a)(?>.*?a).*a)\Z ' )
238+ self .assertEqual (t , r'(?s:(?>.*?a)(?>.*?a).*a)\z ' )
239239 # and try pasting multiple translate results - it's an undocumented
240240 # feature that this works
241241 r1 = translate ('**a**a**a*' )
@@ -249,56 +249,56 @@ def test_translate(self):
249249
250250 def test_translate_wildcards (self ):
251251 for pattern , expect in [
252- ('ab*' , r'(?s:ab.*)\Z ' ),
253- ('ab*cd' , r'(?s:ab.*cd)\Z ' ),
254- ('ab*cd*' , r'(?s:ab(?>.*?cd).*)\Z ' ),
255- ('ab*cd*12' , r'(?s:ab(?>.*?cd).*12)\Z ' ),
256- ('ab*cd*12*' , r'(?s:ab(?>.*?cd)(?>.*?12).*)\Z ' ),
257- ('ab*cd*12*34' , r'(?s:ab(?>.*?cd)(?>.*?12).*34)\Z ' ),
258- ('ab*cd*12*34*' , r'(?s:ab(?>.*?cd)(?>.*?12)(?>.*?34).*)\Z ' ),
252+ ('ab*' , r'(?s:ab.*)\z ' ),
253+ ('ab*cd' , r'(?s:ab.*cd)\z ' ),
254+ ('ab*cd*' , r'(?s:ab(?>.*?cd).*)\z ' ),
255+ ('ab*cd*12' , r'(?s:ab(?>.*?cd).*12)\z ' ),
256+ ('ab*cd*12*' , r'(?s:ab(?>.*?cd)(?>.*?12).*)\z ' ),
257+ ('ab*cd*12*34' , r'(?s:ab(?>.*?cd)(?>.*?12).*34)\z ' ),
258+ ('ab*cd*12*34*' , r'(?s:ab(?>.*?cd)(?>.*?12)(?>.*?34).*)\z ' ),
259259 ]:
260260 with self .subTest (pattern ):
261261 translated = translate (pattern )
262262 self .assertEqual (translated , expect , pattern )
263263
264264 for pattern , expect in [
265- ('*ab' , r'(?s:.*ab)\Z ' ),
266- ('*ab*' , r'(?s:(?>.*?ab).*)\Z ' ),
267- ('*ab*cd' , r'(?s:(?>.*?ab).*cd)\Z ' ),
268- ('*ab*cd*' , r'(?s:(?>.*?ab)(?>.*?cd).*)\Z ' ),
269- ('*ab*cd*12' , r'(?s:(?>.*?ab)(?>.*?cd).*12)\Z ' ),
270- ('*ab*cd*12*' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12).*)\Z ' ),
271- ('*ab*cd*12*34' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12).*34)\Z ' ),
272- ('*ab*cd*12*34*' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12)(?>.*?34).*)\Z ' ),
265+ ('*ab' , r'(?s:.*ab)\z ' ),
266+ ('*ab*' , r'(?s:(?>.*?ab).*)\z ' ),
267+ ('*ab*cd' , r'(?s:(?>.*?ab).*cd)\z ' ),
268+ ('*ab*cd*' , r'(?s:(?>.*?ab)(?>.*?cd).*)\z ' ),
269+ ('*ab*cd*12' , r'(?s:(?>.*?ab)(?>.*?cd).*12)\z ' ),
270+ ('*ab*cd*12*' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12).*)\z ' ),
271+ ('*ab*cd*12*34' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12).*34)\z ' ),
272+ ('*ab*cd*12*34*' , r'(?s:(?>.*?ab)(?>.*?cd)(?>.*?12)(?>.*?34).*)\z ' ),
273273 ]:
274274 with self .subTest (pattern ):
275275 translated = translate (pattern )
276276 self .assertEqual (translated , expect , pattern )
277277
278278 def test_translate_expressions (self ):
279279 for pattern , expect in [
280- ('[' , r'(?s:\[)\Z ' ),
281- ('[!' , r'(?s:\[!)\Z ' ),
282- ('[]' , r'(?s:\[\])\Z ' ),
283- ('[abc' , r'(?s:\[abc)\Z ' ),
284- ('[!abc' , r'(?s:\[!abc)\Z ' ),
285- ('[abc]' , r'(?s:[abc])\Z ' ),
286- ('[!abc]' , r'(?s:[^abc])\Z ' ),
287- ('[!abc][!def]' , r'(?s:[^abc][^def])\Z ' ),
280+ ('[' , r'(?s:\[)\z ' ),
281+ ('[!' , r'(?s:\[!)\z ' ),
282+ ('[]' , r'(?s:\[\])\z ' ),
283+ ('[abc' , r'(?s:\[abc)\z ' ),
284+ ('[!abc' , r'(?s:\[!abc)\z ' ),
285+ ('[abc]' , r'(?s:[abc])\z ' ),
286+ ('[!abc]' , r'(?s:[^abc])\z ' ),
287+ ('[!abc][!def]' , r'(?s:[^abc][^def])\z ' ),
288288 # with [[
289- ('[[' , r'(?s:\[\[)\Z ' ),
290- ('[[a' , r'(?s:\[\[a)\Z ' ),
291- ('[[]' , r'(?s:[\[])\Z ' ),
292- ('[[]a' , r'(?s:[\[]a)\Z ' ),
293- ('[[]]' , r'(?s:[\[]\])\Z ' ),
294- ('[[]a]' , r'(?s:[\[]a\])\Z ' ),
295- ('[[a]' , r'(?s:[\[a])\Z ' ),
296- ('[[a]]' , r'(?s:[\[a]\])\Z ' ),
297- ('[[a]b' , r'(?s:[\[a]b)\Z ' ),
289+ ('[[' , r'(?s:\[\[)\z ' ),
290+ ('[[a' , r'(?s:\[\[a)\z ' ),
291+ ('[[]' , r'(?s:[\[])\z ' ),
292+ ('[[]a' , r'(?s:[\[]a)\z ' ),
293+ ('[[]]' , r'(?s:[\[]\])\z ' ),
294+ ('[[]a]' , r'(?s:[\[]a\])\z ' ),
295+ ('[[a]' , r'(?s:[\[a])\z ' ),
296+ ('[[a]]' , r'(?s:[\[a]\])\z ' ),
297+ ('[[a]b' , r'(?s:[\[a]b)\z ' ),
298298 # backslashes
299- ('[\\ ' , r'(?s:\[\\)\Z ' ),
300- (r'[\]' , r'(?s:[\\])\Z ' ),
301- (r'[\\]' , r'(?s:[\\\\])\Z ' ),
299+ ('[\\ ' , r'(?s:\[\\)\z ' ),
300+ (r'[\]' , r'(?s:[\\])\z ' ),
301+ (r'[\\]' , r'(?s:[\\\\])\z ' ),
302302 ]:
303303 with self .subTest (pattern ):
304304 translated = translate (pattern )
0 commit comments