PyWart: Exception error paths far too verbose

Steven D'Aprano steve+comp.lang.python at pearwood.info
Wed Jan 16 09:45:47 EST 2013


On Tue, 15 Jan 2013 21:59:42 -0800, Rick Johnson wrote:

> Python needs to trim the path to the source file from which the
> exception was caught and only display the relative path starting from
> your personal library folder.

What personal library folder?


> For example. Say your personal library exists in:
> 
>   C:\users\user\documents\python\lib


I have Python scripts in my home directory:

/home/steve/

and in a python subdirectory:

/home/steve/python

and in site packages:

/usr/lib/python2.4/site-packages/
/usr/local/lib/python2.5/site-packages/
/usr/local/lib/python2.6/site-packages/
/usr/local/lib/python2.7/site-packages/
/usr/local/lib/python3.2/site-packages/
/usr/local/lib/python3.3/site-packages/

and to my shame on my Desktop, the bane of my life (can't live with it, 
can't live without it):

/home/steve/Desktop

and in my scripts directory:

/home/steve/scripts


So, which of those directories is my personal library?


> Since all directories *BELOW* the directory that holds your personal
> Python library are /superfluous/ when posting exceptions to stderr,

I think you mean "above". The root is at the top of the directory tree, 
not the bottom.

/a/b/c

c is below b, which is below a.



> trimming this bloat can really help to make exception messages easier to
> read.
> 
> Traceback (most recent call last):
>   File "...\sound\effects\reverb.py", line XXX, in YYY


There is a difference between "less words to read" and "more helpful". 
Professional programmers do not have the luxury of only working in their 
comfortable, personal computer. Often they are called in to fix a problem 
with other people's programs: customers and clients. It would be a real 
PITA to be working on an unfamiliar program on an unfamiliar system and 
be faced with a error message like that.

*Especially* if you then search for a file reverb.py and get results like:

C:\Documents\python\sound\effects\reverb.py
C:\users\george\My Documents\sound\effects\reverb.py
C:\users\susan\programming\python\lib\sound\effects\reverb.py
E:\Temp\sound\effects\reverb.py
F:\Development\python\lib\music\sound\effects\reverb.py
G:\app-dev\sound\effects\reverb.py


Printing the full path is harmless when you already know which directory 
the file is, because you can skim over the path and just pay attention to 
the file name. If you don't know which directory the file is in, printing 
the full path is essential.

On the other hand, abbreviating the path gains you practically nothing 
when you know where the file is, and costs you a lot when you don't.


-- 
Steven



More information about the Python-list mailing list