Issue 33705: Unicode is normalised after keywords are checked for (original) (raw)
Issue33705
Created on 2018-05-31 04:53 by steven.daprano, last changed 2022-04-11 14:59 by admin.
Messages (2) | ||
---|---|---|
msg318250 - (view) | Author: Steven D'Aprano (steven.daprano) * ![]() |
Date: 2018-05-31 04:53 |
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 | ||
msg318251 - (view) | Author: Steven D'Aprano (steven.daprano) * ![]() |
Date: 2018-05-31 04:54 |
Possibly the correct term is canonicalisation rather than normalisation, although I think the two are interchangeable. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:59:01 | admin | set | github: 77886 |
2018-05-31 04:54:23 | steven.daprano | set | messages: + |
2018-05-31 04:53:08 | steven.daprano | create |