From 11a896652ee98aa44e59ed25237f9efb56635dcf Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Fri, 8 Jun 2018 21:28:37 +0200 Subject: bpo-33375: Get filename for warnings from frame.f_code.co_filename (GH-6622) More consistent with how other parts of Python find the filename (e.g. tracebacks and pdb). --- Lib/warnings.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'Lib/warnings.py') diff --git a/Lib/warnings.py b/Lib/warnings.py index 81f9864778..6830b602de 100644 --- a/Lib/warnings.py +++ b/Lib/warnings.py @@ -303,28 +303,16 @@ def warn(message, category=None, stacklevel=1, source=None): raise ValueError except ValueError: globals = sys.__dict__ + filename = "sys" lineno = 1 else: globals = frame.f_globals + filename = frame.f_code.co_filename lineno = frame.f_lineno if '__name__' in globals: module = globals['__name__'] else: module = "" - filename = globals.get('__file__') - if filename: - fnl = filename.lower() - if fnl.endswith(".pyc"): - filename = filename[:-1] - else: - if module == "__main__": - try: - filename = sys.argv[0] - except AttributeError: - # embedded interpreters don't have sys.argv, see bug #839151 - filename = '__main__' - if not filename: - filename = module registry = globals.setdefault("__warningregistry__", {}) warn_explicit(message, category, filename, lineno, module, registry, globals, source) -- cgit v1.2.1