New submission from Steven D'Aprano <steve+pyt...@pearwood.info>: 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 <rep...@bugs.python.org> <https://bugs.python.org/issue33705> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com