[Python-Dev] python3k : imp.find_module raises SyntaxError

Brett Cannon brett at python.org
Mon Nov 29 20:22:22 CET 2010


On Mon, Nov 29, 2010 at 03:53, Sylvain Thénault
<sylvain.thenault at logilab.fr> wrote:
> On 25 novembre 11:22, Ron Adam wrote:
>> On 11/25/2010 08:30 AM, Emile Anclin wrote:
>> >
>> >hello,
>> >
>> >working on Pylint, we have a lot of voluntary corrupted files to test
>> >Pylint behavior; for instance
>> >
>> >$ cat /home/emile/var/pylint/test/input/func_unknown_encoding.py
>> ># -*- coding: IBO-8859-1 -*-
>> >""" check correct unknown encoding declaration
>> >"""
>> >
>> >__revision__ = 'éééé'
>> >
>> >
>> >and we try to find that module :
>> >find_module('func_unknown_encoding', None). But python3 raises SyntaxError
>> >in that case ; it didn't raise SyntaxError on python2 nor does so on our
>> >func_nonascii_noencoding and func_wrong_encoding modules (with obvious
>> >names)
>> >
>> >Python 3.2a2 (r32a2:84522, Sep 14 2010, 15:22:36)
>> >[GCC 4.3.4] on linux2
>> >Type "help", "copyright", "credits" or "license" for more information.
>> >>>>from imp import find_module
>> >>>>find_module('func_unknown_encoding', None)
>> >Traceback (most recent call last):
>> >   File "<stdin>", line 1, in<module>
>> >SyntaxError: encoding problem: with BOM
>>
>> I don't think there is a clear reason by design.  Also try importing
>> the same modules directly and noting the differences in the errors
>> you get.
>
> IMO the point is that we can consider as a bug the fact that find_module
> tries to somewhat read the content of the file, no? Though it seems to only
> doing this for encoding detection or like since find_module doesn't choke on
> a module containing another kind of syntax error.
>
> So the question is, should we deal with this in pylint/astng, or can we expect
> this to be fixed at some point?

Considering these semantics changed between Python 2 and 3 w/o a
discernable benefit (I would consider it a negative as finding a
module should not be impacted by syntactic correctness; the full act
of importing should be the only thing that cares about that), I would
consider it a bug that should be filed.


More information about the Python-Dev mailing list