New submission from Steven D'Aprano <[email protected]>:
There is a loophole in the Unicode normalisation which allows the creation of
names matching keywords.
class Spam:
locals()['if'] = 1
Spam.π’π # U+1D422 U+1D41F
# returns 1
Those two characters are 'MATHEMATICAL BOLD SMALL I' and 'MATHEMATICAL BOLD
SMALL F'. They ought to be normalised to "if", which is a keyword.
Of course Spam.if is a syntax error, and I believe Spam.π’π ought to be as well.
Another example:
py> globals()['for'] = 2
py> πor
2
I also asked about this here:
https://mail.python.org/pipermail/python-dev/2018-May/153619.html
----------
components: Interpreter Core, Unicode
messages: 318250
nosy: ezio.melotti, steven.daprano, vstinner
priority: normal
severity: normal
status: open
title: Unicode is normalised after keywords are checked for
type: behavior
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue33705>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com