PyWart: NameError trackbacks are superfluous

Rick Johnson rantingrickjohnson at gmail.com
Sat Mar 16 14:27:47 EDT 2013


Sometimes many levels of trace messages can be helpful when detecting bugs, however, in the case of NameErrors,  these "nuggets" ejected from deep within the bowls of the Python interpreter are nothing more than steaming piles of incomprehensible crap!

We don't need multiple layers of traces for NameErrors. Python does not have *real* global variables; and thank Guido for that! All we need to know is which module the error occurred in AND which line of that module contains the offensive lookup of a name that does not exist.

============================================================
 Here is a fine example
============================================================

------------------------------
 Contents of mod1.py
------------------------------
print symbolNonExistant

------------------------------
 Contents of mod2.py
------------------------------
import mod1

------------------------------
 Contents of mod3.py
------------------------------
import mod2

============================================================
 Results of executing mod3.py
============================================================
Traceback (most recent call last):
  File "C:/a/b/c/mod3.py", line 2, in <module>
    import mod2
  File "C:/a/b/c/mod2.py", line 1, in <module>
    import mod1
  File "C:/a/b/c/mod1.py", line 2, in <module>
    print symbolNonExistant
NameError: name 'symbolNonExistant' is not defined

Why did i need to see all that junk when all i really need to see was this:

Traceback (most recent call last):
  File "C:/a/b/c/mod1.py", line 2, in <module>
    print symbolNonExistant
NameError: name 'symbolNonExistant' is not defined

Or event better:

NameError: name 'symbolNonExistant' is not defined
  File "C:/a/b/c/mod1.py", line 2, in <module>
    print symbolNonExistant



More information about the Python-list mailing list