[Python-Dev] What does a double coding cookie mean?

Glenn Linderman v+python at g.nevcal.com
Sat Mar 19 17:46:24 EDT 2016


On 3/19/2016 2:37 PM, Serhiy Storchaka wrote:
> On 19.03.16 19:36, Glenn Linderman wrote:
>> On 3/19/2016 8:19 AM, Serhiy Storchaka wrote:
>>> On 16.03.16 08:03, Serhiy Storchaka wrote:
>>> I just tested with Emacs, and it looks that when specify different
>>> codings on two different lines, the first coding wins, but when
>>> specify different codings on the same line, the last coding wins.
>>>
>>> Therefore current CPython behavior can be correct, and the regular
>>> expression in PEP 263 should be changed to use greedy repetition.
>>
>> Just because emacs works that way (and even though I'm an emacs user),
>> that doesn't mean CPython should act like emacs.
>
> Yes. But current CPython works that way. The behavior of Emacs is the 
> argument that maybe this is not a bug.

If CPython properly handles the following line as having only one proper 
coding declaration (utf-8), then I might reluctantly agree that the 
behavior of Emacs might be a relevant argument.  Otherwise, vehemently 
not relevant.

   # -*- coding: utf-8 -*- this file does not use coding: latin-1


>
>> (4) there is no benefit to specifying the coding twice on a line, it
>> only adds confusion, whether in CPython, emacs, or vim.
>> (4a) Here's an untested line that emacs would interpret as utf-8, and
>> CPython with the greedy regulare expression would interpret as latin-1,
>> because emacs looks only between the -*- pair, and CPython ignores that.
>>    # -*- coding: utf-8 -*- this file does not use coding: latin-1
>
> Since Emacs allows to specify the coding twice on a line, and this can 
> be ambiguous, and CPython already detects some ambiguous situations 
> (UTF-8 BOM and non-UTF-8 coding cookie), it may be worth to add a 
> check that the coding is specified only once on a line.

Diagnosing ambiguous conditions, even including my example above, might 
be useful... for a few files... is it worth the effort? What % of .py 
sources have coding specifications? What % of those have two?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160319/d3b5d74d/attachment-0001.html>


More information about the Python-Dev mailing list