[Python-Dev] What does a double coding cookie mean? (original) (raw)
Glenn Linderman v+python at g.nevcal.com
Wed Mar 16 02:34:44 EDT 2016
- Previous message (by thread): [Python-Dev] What does a double coding cookie mean?
- Next message (by thread): [Python-Dev] What does a double coding cookie mean?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 3/15/2016 11:07 PM, Chris Angelico wrote:
On Wed, Mar 16, 2016 at 5:03 PM, Serhiy Storchaka <storchaka at gmail.com> wrote:
On 15.03.16 22:30, Guido van Rossum wrote:
I came across a file that had two different coding cookies -- one on the first line and one on the second. CPython uses the first, but mypy happens to use the second. I couldn't find anything in the spec or docs ruling out the second interpretation. Does anyone have a suggestion (apart from following CPython)?
Reference: https://github.com/python/mypy/issues/1281 There is similar question. If a file has two different coding cookies on the same line, what should win? Currently the last cookie wins, in CPython parser, in the tokenize module, in IDLE, and in number of other code. I think this is a bug. Why would you ever have two coding cookies in a file? Surely this should be either an error, or ill-defined (ie parsers are allowed to pick whichever they like, including raising)? ChrisA
From the PEP 263:
To define a source code encoding, a magic comment must be placed into the source files either as first or second line in the file, such as:
So clearly there is only one magic comment. "either" the first or second line, not both. Both, therefore, should be an error.
From the PEP 263:
More precisely, the first or second line must match the regular expression "coding[:=]\s*([-\w.]+)". The first group of this expression is then interpreted as encoding name. If the encoding is unknown to Python, an error is raised during compilation. There must not be any Python statement on the line that contains the encoding declaration.
Clearly the regular expression would only match the first of multiple cookies on the same line, so the first one should always win... but there should only be one, from the first PEP quote "a magic comment".
Glenn -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20160315/dee29ef5/attachment-0001.html>
- Previous message (by thread): [Python-Dev] What does a double coding cookie mean?
- Next message (by thread): [Python-Dev] What does a double coding cookie mean?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]