Add a new API:
authorGuido van Rossum <guido@python.org>
Wed, 28 Feb 2001 21:43:40 +0000 (21:43 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 28 Feb 2001 21:43:40 +0000 (21:43 +0000)
    warn_explicit(message, category, filename, lineno, module, registry)

The regular warn() call calculates a bunch of values and calls
warn_explicit() with these.

This will be used to issue better syntax warnings.

Lib/warnings.py

index 9763dc67af8d6753e223ae5040acd89b5e5583b4..9de64bb95d4e658e738d68235a4464e56a4553ad 100644 (file)
@@ -34,6 +34,16 @@ def warn(message, category=None, stacklevel=1):
             filename = module
     # Quick test for common case
     registry = globals.setdefault("__warningregistry__", {})
+    warn_explicit(message, category, filename, lineno, module, registry)
+
+def warn_explicit(message, category, filename, lineno,
+                  module=None, registry=None):
+    if module is None:
+        module = filename
+        if module[-3:].lower() == ".py":
+            module = module[:-3] # XXX What about leading pathname?
+    if registry is None:
+        registry = {}
     key = (message, category, lineno)
     if registry.get(key):
         return