<div dir="ltr"><div>I put the actual space characters here so you can see them</div><div>in a non-proportional font (which I assume most Python programmer use).<br></div><div><div><div><br><a href="https://gist.github.com/stephanh42/7c1c122154fd3f2cccc6d864233a40d8">https://gist.github.com/stephanh42/7c1c122154fd3f2cccc6d864233a40d8</a></div><div><br></div><div>The control characters aren't rendered at all (Vim renders them as ^\ ^] ^^ ^_,</div><div>respectively). Most of the other spaces are rendered exactly like the normal space.</div><div><br></div><div>The only ones which render differently are</div><div>U+1680 | | OGHAM SPACE MARK<br>U+3000 | | IDEOGRAPHIC SPACE</div><div><br></div><div>I understand Ogham has recently (since 6th century CE) seen a decline in popularity.<br></div><div><br></div><div>However, I think Python should totally adopt U+3000 as a new whitespace character</div><div>and start promoting it as the One True Way to indent code,</div><div>so as to finally end the age-old spaces vs tabs conflict.</div><div><br></div><div>[That was supposed to be a joke.]<br></div><div><br></div><div>Stephan<br></div><div><br></div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-11-17 16:38 GMT+01:00 Victor Stinner <span dir="ltr"><<a href="mailto:victor.stinner@gmail.com" target="_blank">victor.stinner@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I don't think that we need more than space (U+0020) and Unix newline<br>
(U+000A) ;-)<br>
<span class="HOEnZb"><font color="#888888"><br>
Victor<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
2017-11-16 11:23 GMT+01:00 Serhiy Storchaka <<a href="mailto:storchaka@gmail.com">storchaka@gmail.com</a>>:<br>
> Currently the re module ignores only 6 ASCII whitespaces in the re.VERBOSE<br>
> mode:<br>
><br>
>      U+0009 CHARACTER TABULATION<br>
>      U+000A LINE FEED<br>
>      U+000B LINE TABULATION<br>
>      U+000C FORM FEED<br>
>      U+000D CARRIAGE RETURN<br>
>      U+0020 SPACE<br>
><br>
> Perl ignores characters that Unicode calls "Pattern White Space" in the /x<br>
> mode. It ignores additional 5 non-ASCII characters.<br>
><br>
>      U+0085 NEXT LINE<br>
>      U+200E LEFT-TO-RIGHT MARK<br>
>      U+200F RIGHT-TO-LEFT MARK<br>
>      U+2028 LINE SEPARATOR<br>
>      U+2029 PARAGRAPH SEPARATOR<br>
><br>
> The regex module just ignores characters for which str.isspace() returns<br>
> True. It ignores additional 20 non-ASCII whitespace characters, including<br>
> characters U+001C..001F whose classification as whitespaces is questionable,<br>
> but doesn't ignore LEFT-TO-RIGHT MARK and RIGHT-TO-LEFT MARK.<br>
><br>
>      U+001C [FILE SEPARATOR]<br>
>      U+001D [GROUP SEPARATOR]<br>
>      U+001E [RECORD SEPARATOR]<br>
>      U+001F [UNIT SEPARATOR]<br>
>      U+00A0 NO-BREAK SPACE<br>
>      U+1680 OGHAM SPACE MARK<br>
>      U+2000 EN QUAD<br>
>      U+2001 EM QUAD<br>
>      U+2002 EN SPACE<br>
>      U+2003 EM SPACE<br>
>      U+2004 THREE-PER-EM SPACE<br>
>      U+2005 FOUR-PER-EM SPACE<br>
>      U+2006 SIX-PER-EM SPACE<br>
>      U+2007 FIGURE SPACE<br>
>      U+2008 PUNCTUATION SPACE<br>
>      U+2009 THIN SPACE<br>
>      U+200A HAIR SPACE<br>
>      U+202F NARROW NO-BREAK SPACE<br>
>      U+205F MEDIUM MATHEMATICAL SPACE<br>
>      U+3000 IDEOGRAPHIC SPACE<br>
><br>
> Is it worth to extend the set of ignored whitespaces to "Pattern<br>
> Whitespaces"? Would it add any benefit? Or add confusion? Should this depend<br>
> on the re.ASCII mode? Should the byte b'\x85' be ignorable in verbose bytes<br>
> patterns?<br>
><br>
> And there is a similar question about the Python parser. If Python uses<br>
> Unicode definition for identifier, shouldn't it accept non-ASCII "Pattern<br>
> Whitespaces" as whitespaces? There will be technical problems with<br>
> supporting this, but are there any benefits?<br>
><br>
><br>
> <a href="https://perldoc.perl.org/perlre.html" rel="noreferrer" target="_blank">https://perldoc.perl.org/<wbr>perlre.html</a><br>
> <a href="https://www.unicode.org/reports/tr31/tr31-4.html#Pattern_Syntax" rel="noreferrer" target="_blank">https://www.unicode.org/<wbr>reports/tr31/tr31-4.html#<wbr>Pattern_Syntax</a><br>
> <a href="https://unicode.org/L2/L2005/05012r-pattern.html" rel="noreferrer" target="_blank">https://unicode.org/L2/L2005/<wbr>05012r-pattern.html</a><br>
><br>
> ______________________________<wbr>_________________<br>
> Python-ideas mailing list<br>
> <a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
> Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br>
</div></div></blockquote></div><br></div>