mirror of
https://github.com/python/cpython.git
synced 2025-11-01 06:01:29 +00:00
gh-134716: Support regular expressions in -W and PYTHONWARNINGS (GH-138149)
This commit is contained in:
parent
530ddd3e06
commit
cf9ef73121
6 changed files with 83 additions and 8 deletions
|
|
@ -369,9 +369,15 @@ def _setoption(arg):
|
|||
if message or module:
|
||||
import re
|
||||
if message:
|
||||
message = re.escape(message)
|
||||
if len(message) >= 2 and message[0] == message[-1] == '/':
|
||||
message = message[1:-1]
|
||||
else:
|
||||
message = re.escape(message)
|
||||
if module:
|
||||
module = re.escape(module) + r'\z'
|
||||
if len(module) >= 2 and module[0] == module[-1] == '/':
|
||||
module = module[1:-1]
|
||||
else:
|
||||
module = re.escape(module) + r'\z'
|
||||
if lineno:
|
||||
try:
|
||||
lineno = int(lineno)
|
||||
|
|
@ -381,7 +387,23 @@ def _setoption(arg):
|
|||
raise _wm._OptionError("invalid lineno %r" % (lineno,)) from None
|
||||
else:
|
||||
lineno = 0
|
||||
_wm.filterwarnings(action, message, category, module, lineno)
|
||||
try:
|
||||
_wm.filterwarnings(action, message, category, module, lineno)
|
||||
except re.PatternError if message or module else ():
|
||||
if message:
|
||||
try:
|
||||
re.compile(message)
|
||||
except re.PatternError:
|
||||
raise _wm._OptionError(f"invalid regular expression for "
|
||||
f"message: {message!r}") from None
|
||||
if module:
|
||||
try:
|
||||
re.compile(module)
|
||||
except re.PatternError:
|
||||
raise _wm._OptionError(f"invalid regular expression for "
|
||||
f"module: {module!r}") from None
|
||||
# Should never happen.
|
||||
raise
|
||||
|
||||
|
||||
# Helper for _setoption()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue