[Python-checkins] r62722 - python/trunk/Lib/warnings.py
brett.cannon
python-checkins at python.org
Mon May 5 18:57:38 CEST 2008
Author: brett.cannon
Date: Mon May 5 18:57:38 2008
New Revision: 62722
Log:
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.
Modified:
python/trunk/Lib/warnings.py
Modified: python/trunk/Lib/warnings.py
==============================================================================
--- python/trunk/Lib/warnings.py (original)
+++ python/trunk/Lib/warnings.py Mon May 5 18:57:38 2008
@@ -3,7 +3,6 @@
# Note: function level imports should *not* be used
# in this module as it may cause import lock deadlock.
# See bug 683658.
-import inspect
import linecache
import sys
import types
@@ -262,16 +261,24 @@
raise RuntimeError(
"Unrecognized action (%r) in warnings.filters:\n %s" %
(action, item))
- # Print message and context
- if inspect.isfunction(showwarning):
- arg_spec = inspect.getargspec(showwarning)
- if 'line' not in arg_spec.args:
+ # Warn if showwarning() does not support the 'line' argument.
+ # Don't use 'inspect' as it relies on an extension module, which break the
+ # build thanks to 'warnings' being imported by setup.py.
+ 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() "
"must support the 'line' argument")
if message == showwarning_msg:
_show_warning(message, category, filename, lineno)
else:
warn(showwarning_msg, DeprecationWarning)
+ # Print message and context
showwarning(message, category, filename, lineno)
More information about the Python-checkins
mailing list