Commit 9c19bc62 authored by Brett Cannon's avatar Brett Cannon

Remove the use of 'inspect' from 'warnings' for detected deprecated use of the

showwarning API. Turns out 'inspect' uses 'operator' which is an extension
module. That's a problem when it has not been built yet by setup.py.
parent 8a232cc3
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
# Note: function level imports should *not* be used # Note: function level imports should *not* be used
# in this module as it may cause import lock deadlock. # in this module as it may cause import lock deadlock.
# See bug 683658. # See bug 683658.
import inspect
import linecache import linecache
import sys import sys
import types import types
...@@ -262,16 +261,24 @@ def warn_explicit(message, category, filename, lineno, ...@@ -262,16 +261,24 @@ def warn_explicit(message, category, filename, lineno,
raise RuntimeError( raise RuntimeError(
"Unrecognized action (%r) in warnings.filters:\n %s" % "Unrecognized action (%r) in warnings.filters:\n %s" %
(action, item)) (action, item))
# Print message and context # Warn if showwarning() does not support the 'line' argument.
if inspect.isfunction(showwarning): # Don't use 'inspect' as it relies on an extension module, which break the
arg_spec = inspect.getargspec(showwarning) # build thanks to 'warnings' being imported by setup.py.
if 'line' not in arg_spec.args: fxn_code = None
if hasattr(showwarning, 'func_code'):
fxn_code = showwarning.func_code
elif hasattr(showwarning, '__func__'):
fxn_code = showwarning.__func__.func_code
if fxn_code:
args = fxn_code.co_varnames[:fxn_code.co_argcount]
if 'line' not in args:
showwarning_msg = ("functions overriding warnings.showwarning() " showwarning_msg = ("functions overriding warnings.showwarning() "
"must support the 'line' argument") "must support the 'line' argument")
if message == showwarning_msg: if message == showwarning_msg:
_show_warning(message, category, filename, lineno) _show_warning(message, category, filename, lineno)
else: else:
warn(showwarning_msg, DeprecationWarning) warn(showwarning_msg, DeprecationWarning)
# Print message and context
showwarning(message, category, filename, lineno) showwarning(message, category, filename, lineno)
......
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