mirror of
https://github.com/python/cpython.git
synced 2025-09-23 17:03:23 +00:00
- Added keyword argument 'append' to filterwarnings(); if true, this
appends to list of filters instead of inserting at the front. This is useful to add a filter with a lower priority than -W options. - Cosmetic improvements to a docstring and an error message.
This commit is contained in:
parent
8373218e28
commit
9464a7de60
1 changed files with 10 additions and 5 deletions
|
@ -85,7 +85,7 @@ def showwarning(message, category, filename, lineno, file=None):
|
||||||
file.write(formatwarning(message, category, filename, lineno))
|
file.write(formatwarning(message, category, filename, lineno))
|
||||||
|
|
||||||
def formatwarning(message, category, filename, lineno):
|
def formatwarning(message, category, filename, lineno):
|
||||||
"""Hook to format a warning the standard way."""
|
"""Function to format a warning the standard way."""
|
||||||
import linecache
|
import linecache
|
||||||
s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
|
s = "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
|
||||||
line = linecache.getline(filename, lineno).strip()
|
line = linecache.getline(filename, lineno).strip()
|
||||||
|
@ -93,7 +93,8 @@ def formatwarning(message, category, filename, lineno):
|
||||||
s = s + " " + line + "\n"
|
s = s + " " + line + "\n"
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def filterwarnings(action, message="", category=Warning, module="", lineno=0):
|
def filterwarnings(action, message="", category=Warning, module="", lineno=0,
|
||||||
|
append=0):
|
||||||
"""Insert an entry into the list of warnings filters (at the front).
|
"""Insert an entry into the list of warnings filters (at the front).
|
||||||
|
|
||||||
Use assertions to check that all arguments have the right type."""
|
Use assertions to check that all arguments have the right type."""
|
||||||
|
@ -105,8 +106,12 @@ def filterwarnings(action, message="", category=Warning, module="", lineno=0):
|
||||||
assert type(module) is types.StringType, "module must be a string"
|
assert type(module) is types.StringType, "module must be a string"
|
||||||
assert type(lineno) is types.IntType and lineno >= 0, \
|
assert type(lineno) is types.IntType and lineno >= 0, \
|
||||||
"lineno must be an int >= 0"
|
"lineno must be an int >= 0"
|
||||||
filters.insert(0, (action, re.compile(message, re.I), category,
|
item = (action, re.compile(message, re.I), category,
|
||||||
re.compile(module), lineno))
|
re.compile(module), lineno)
|
||||||
|
if append:
|
||||||
|
filters.append(item)
|
||||||
|
else:
|
||||||
|
filters.insert(0, item)
|
||||||
|
|
||||||
def resetwarnings():
|
def resetwarnings():
|
||||||
"""Reset the list of warnings filters to its default state."""
|
"""Reset the list of warnings filters to its default state."""
|
||||||
|
@ -128,7 +133,7 @@ def _processoptions(args):
|
||||||
def _setoption(arg):
|
def _setoption(arg):
|
||||||
parts = arg.split(':')
|
parts = arg.split(':')
|
||||||
if len(parts) > 5:
|
if len(parts) > 5:
|
||||||
raise _OptionError("unparsable -W option %s" % `arg`)
|
raise _OptionError("too many fields (max 5): %s" % `arg`)
|
||||||
while len(parts) < 5:
|
while len(parts) < 5:
|
||||||
parts.append('')
|
parts.append('')
|
||||||
action, message, category, module, lineno = [s.strip()
|
action, message, category, module, lineno = [s.strip()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue