Commit 171b9a35 authored by Roy Williams's avatar Roy Williams Committed by Serhiy Storchaka

bpo-30605: Fix compiling binary regexs with BytesWarnings enabled. (#2016)

Running our unit tests with `-bb` enabled triggered this failure.
parent 7445381c
...@@ -765,7 +765,7 @@ def _parse(source, state, verbose, nested, first=False): ...@@ -765,7 +765,7 @@ def _parse(source, state, verbose, nested, first=False):
if not first or subpattern: if not first or subpattern:
import warnings import warnings
warnings.warn( warnings.warn(
'Flags not at the start of the expression %s%s' % ( 'Flags not at the start of the expression %r%s' % (
source.string[:20], # truncate long regexes source.string[:20], # truncate long regexes
' (truncated)' if len(source.string) > 20 else '', ' (truncated)' if len(source.string) > 20 else '',
), ),
......
...@@ -1368,7 +1368,7 @@ class ReTests(unittest.TestCase): ...@@ -1368,7 +1368,7 @@ class ReTests(unittest.TestCase):
self.assertTrue(re.match(p, lower_char)) self.assertTrue(re.match(p, lower_char))
self.assertEqual( self.assertEqual(
str(warns.warnings[0].message), str(warns.warnings[0].message),
'Flags not at the start of the expression %s' % p 'Flags not at the start of the expression %r' % p
) )
self.assertEqual(warns.warnings[0].filename, __file__) self.assertEqual(warns.warnings[0].filename, __file__)
...@@ -1377,10 +1377,22 @@ class ReTests(unittest.TestCase): ...@@ -1377,10 +1377,22 @@ class ReTests(unittest.TestCase):
self.assertTrue(re.match(p, lower_char)) self.assertTrue(re.match(p, lower_char))
self.assertEqual( self.assertEqual(
str(warns.warnings[0].message), str(warns.warnings[0].message),
'Flags not at the start of the expression %s (truncated)' % p[:20] 'Flags not at the start of the expression %r (truncated)' % p[:20]
) )
self.assertEqual(warns.warnings[0].filename, __file__) self.assertEqual(warns.warnings[0].filename, __file__)
# bpo-30605: Compiling a bytes instance regex was throwing a BytesWarning
with warnings.catch_warnings():
warnings.simplefilter('error', BytesWarning)
p = b'A(?i)'
with self.assertWarns(DeprecationWarning) as warns:
self.assertTrue(re.match(p, b'a'))
self.assertEqual(
str(warns.warnings[0].message),
'Flags not at the start of the expression %r' % p
)
self.assertEqual(warns.warnings[0].filename, __file__)
with self.assertWarns(DeprecationWarning): with self.assertWarns(DeprecationWarning):
self.assertTrue(re.match('(?s).(?i)' + upper_char, '\n' + lower_char)) self.assertTrue(re.match('(?s).(?i)' + upper_char, '\n' + lower_char))
with self.assertWarns(DeprecationWarning): with self.assertWarns(DeprecationWarning):
......
...@@ -1685,6 +1685,7 @@ Jakub Wilk ...@@ -1685,6 +1685,7 @@ Jakub Wilk
Gerald S. Williams Gerald S. Williams
Jason Williams Jason Williams
John Williams John Williams
Roy Williams
Sue Williams Sue Williams
Carol Willing Carol Willing
Steven Willis Steven Willis
......
...@@ -350,6 +350,9 @@ Extension Modules ...@@ -350,6 +350,9 @@ Extension Modules
Library Library
------- -------
- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
bytes instance with misplaced inline modifier. Patch by Roy Williams.
- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
implementation. Patch by Michaël Sghaïer. implementation. Patch by Michaël Sghaïer.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment