compiler module bug?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sun Oct 21 14:05:45 EDT 2007


En Sun, 21 Oct 2007 14:33:00 -0300, Brian Blais <bblais at bryant.edu>  
escribió:

> On Oct 21, 2007, at Oct 21:1:15 PM, Gabriel Genellina wrote:

>> The comment itself is not a problem; but the last line in the
>> source must
>> end in a newline.
>
> then, even if it is known problem, the docs are wrong.  the two
> (parseFile(path) and parse(open(path).read())) are *not* the same:
> one can handle a file which doesn't end in a newline, another one
> can't handle the same file.

Feel free to submit a bug report to http://bugs.python.org

> Can one hack it like:
>
>      filestr=open(filename).read()
>      filestr+="\n"

The parseFile function does exactly that, along with this comment:

     # XXX The parser API tolerates files without a trailing newline,
     # but not strings without a trailing newline.  Always add an extra
     # newline to the file contents, since we're going through the string
     # version of the API.

The compile function in py_compile.py that I've menctioned earlier does  
the same but only when needed:

     f = open(file, 'U')
     codestring = f.read()
     f.close()
     if codestring and codestring[-1] != '\n':
         codestring = codestring + '\n'

-- 
Gabriel Genellina




More information about the Python-list mailing list