Add a new API:
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.
This commit is contained in:
parent
d6a1d79d16
commit
9e26318975
|
@ -34,6 +34,16 @@ def warn(message, category=None, stacklevel=1):
|
||||||
filename = module
|
filename = module
|
||||||
# Quick test for common case
|
# Quick test for common case
|
||||||
registry = globals.setdefault("__warningregistry__", {})
|
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)
|
key = (message, category, lineno)
|
||||||
if registry.get(key):
|
if registry.get(key):
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue