summaryrefslogtreecommitdiffstats
path: root/Lib/warnings.py
diff options
context:
space:
mode:
authorPhillip J. Eby <pje@telecommunity.com>2006-04-11 01:07:43 (GMT)
committerPhillip J. Eby <pje@telecommunity.com>2006-04-11 01:07:43 (GMT)
commit470321108019367e3bdd96309e89d79f04784d45 (patch)
tree67bb4c26a4a2e14eef1999eed390091620a850fa /Lib/warnings.py
parent7731dfdaad96c519d80823782ca4c81d09466e8d (diff)
downloadcpython-470321108019367e3bdd96309e89d79f04784d45.zip
cpython-470321108019367e3bdd96309e89d79f04784d45.tar.gz
cpython-470321108019367e3bdd96309e89d79f04784d45.tar.bz2
Updated the warnings, linecache, inspect, traceback, site, and doctest modules
to work correctly with modules imported from zipfiles or via other PEP 302 __loader__ objects. Tests and doc updates are included.
Diffstat (limited to 'Lib/warnings.py')
-rw-r--r--Lib/warnings.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/Lib/warnings.py b/Lib/warnings.py
index e622b9a..bc0b818 100644
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -58,10 +58,11 @@ def warn(message, category=None, stacklevel=1):
if not filename:
filename = module
registry = globals.setdefault("__warningregistry__", {})
- warn_explicit(message, category, filename, lineno, module, registry)
+ warn_explicit(message, category, filename, lineno, module, registry,
+ globals)
def warn_explicit(message, category, filename, lineno,
- module=None, registry=None):
+ module=None, registry=None, module_globals=None):
if module is None:
module = filename or "<unknown>"
if module[-3:].lower() == ".py":
@@ -92,6 +93,11 @@ def warn_explicit(message, category, filename, lineno,
if action == "ignore":
registry[key] = 1
return
+
+ # Prime the linecache for formatting, in case the
+ # "file" is actually in a zipfile or something.
+ linecache.getlines(filename, module_globals)
+
if action == "error":
raise message
# Other actions