Re: [Python-Dev] linecache problem

2005-09-30 Thread Oleg Broytmann
On Fri, Sep 30, 2005 at 09:17:39AM +0200, Thomas Heller wrote:
 On several occasions I have seen tracebacks in my code pointing to PIL's
 __init__.py file. That is strange, because I have installed PIL but it
 is used nowhere.
[skip]
 The bug is present in 2.3, 2.4, and current CVS.

   I have seen such tracebacks in all versions of Python AFAIR.

Oleg.
-- 
 Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED]
   Programmers don't die, they just GOSUB without RETURN.
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] linecache problem

2005-09-30 Thread Thomas Heller
Oleg Broytmann [EMAIL PROTECTED] writes:

 On Fri, Sep 30, 2005 at 09:17:39AM +0200, Thomas Heller wrote:
 On several occasions I have seen tracebacks in my code pointing to PIL's
 __init__.py file. That is strange, because I have installed PIL but it
 is used nowhere.
 [skip]
 The bug is present in 2.3, 2.4, and current CVS.

I have seen such tracebacks in all versions of Python AFAIR.

I think it's a severe bug that needs to be fixed.
Tracebacks showing the wrong sourcelines leave the impression 'the
Python installation is totally broken'.

Thomas

___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] linecache problem

2005-09-30 Thread Guido van Rossum
On 9/30/05, Thomas Heller [EMAIL PROTECTED] wrote:
 On several occasions I have seen tracebacks in my code pointing to PIL's
 __init__.py file. That is strange, because I have installed PIL but it
 is used nowhere.

 Finally I traced it down to a problem in the linecache code, which tries
 to be smart in up updatecache function.  When os.stat() on the filename
 fails with os.error, it walks along sys.path and returns the first file
 with a matching basename. This *may* make sense for toplevel modules,
 but never for modules in packages.

 So, if the traceback's stack contains an entry for a non-existing file
 (for example because the .py file for a .pyc file is no longer present),
 linecache returns absolute garbage.

 Example, on my system (the \a\b\c\__init__.py file doesn't exist):

 C:\python -c import linecache; print 
 linecache.getlines(r'\a\b\c\__init__.py')
 ['#\n', '# The Python Imaging Library.\n',
 '# $Id: //modules/pil/PIL/__init__.py#2 $\n', '#\n',
 '# package placeholder\n', '#\n', '# Copyright (c) 1999 by Secret Labs AB.\n',
 '#\n', '# See the README file for information on usage and redistribution.\n',
 '#\n', '\n', '# ;-)\n']
 C:\

 The bug is present in 2.3, 2.4, and current CVS.

Probably my fault (I wrote linecache, 13 years ago (before Python had
packages!).

But looking at the code I don't understand why this is; there's no
code to descend into subdirectories of directories found on sys.path.

I wonder if the problem isn't on PIL's end, which puts the PIL
directory on sys.path?

Anyway, don't hesitate to suggest a patch on sourceforge -- python-dev
really isn't the forum for further discussion of this issue.

--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] linecache problem

2005-09-30 Thread Thomas Heller
Guido van Rossum [EMAIL PROTECTED] writes:

 On 9/30/05, Thomas Heller [EMAIL PROTECTED] wrote:
 On several occasions I have seen tracebacks in my code pointing to PIL's
 __init__.py file. That is strange, because I have installed PIL but it
 is used nowhere.

 Finally I traced it down to a problem in the linecache code, which tries
 to be smart in up updatecache function.  When os.stat() on the filename
 fails with os.error, it walks along sys.path and returns the first file
 with a matching basename. This *may* make sense for toplevel modules,
 but never for modules in packages.

 The bug is present in 2.3, 2.4, and current CVS.

 Probably my fault (I wrote linecache, 13 years ago (before Python had
 packages!).

 But looking at the code I don't understand why this is; there's no
 code to descend into subdirectories of directories found on sys.path.

 I wonder if the problem isn't on PIL's end, which puts the PIL
 directory on sys.path?

It seems PIL cannot decide if it wants to be a package or not, but
better would be to ask the author.  /F, ?

It installs a PIL.pth file in lib/site-packages, which contains 'PIL'
only - that's where the sys.path entry comes from.  OTOH, the
lib/site-packages/PIL directory contains an __init__.py file.  PIL.pth
is the only .pth file that I have where the directory contains an
__init__.py file.

 Anyway, don't hesitate to suggest a patch on sourceforge -- python-dev
 really isn't the forum for further discussion of this issue.

https://sourceforge.net/tracker/index.php?func=detailaid=1309567group_id=5470atid=105470

Thomas

___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com