Proposal: require 7-bit source str's

"Martin v. Löwis" martin at
Fri Aug 6 11:47:15 CEST 2004

Hallvard B Furuseth wrote:
>>The coding declaration was only acceptable because
>>- a statement would have to go before the doc string, in
>>   which case it would not have been a docstring anymore, and
> Hmm...

You misunderstood. I was talking about the module docstring

"Written by Martin v. Löwis"
directive encoding "utf-8"

Here, the declaration comes after the first non-ASCII character,
which does not work.

directive encoding "utf-8"
"Written by Martin v. Löwis"

Here, the string is not a docstring anymore, because it is
not the first expression in the module.

>   >>> help(bar)
>   Traceback (most recent call last):
>     ...
>   UnicodeEncodeError: 'ascii' codec can't encode character '\uf8'
>   in position 59: ordinal not in range(128)

That's a bug in the help function.

> Even if the doc string is written in English, it may still need to
> use non-English names.

Certainly. This is why the encoding declaration can't be a statement.

> Still, how about 'directive str7bit', 'directive -W::str7bitWarning' or
> something?

See PEP 244. I would have liked a directive statement, but the PEP was
rejected (in favour of __future__ imports, at that time).

A future import might work, except that this is a commitment that
the future comes some day, which, for str7bit, would not be the case:
there will *always* be a possibility to put non-ASCII bytes into 8-bit
strings (of course, requiring that people use escape sequences for
them might be acceptable).

In any case, you probably have to write a PEP for this.


More information about the Python-list mailing list