This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author serhiy.storchaka
Recipients benjamin.peterson, brett.cannon, georg.brandl, ncoghlan, rhettinger, serhiy.storchaka, yselivanov
Date 2016-01-01.12:23:49
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1451651029.64.0.0931504424344.issue25981@psf.upfronthosting.co.za>
In-reply-to
Content
Interesting, short string literals usually are interned, but they are not interned in tuple literal.

>>> namespace = {}
>>> exec('a = ["abc123"]\ndef abc123(): pass', namespace)
>>> namespace['abc123'].__name__ is namespace['a'][0]
True
>>> exec('a = ("abc123",)\ndef abc123(): pass', namespace)
>>> namespace['abc123'].__name__ is namespace['a'][0]
False
>>> namespace['abc123'].__name__ == namespace['a'][0]
True

I think it would be better to change the compiler to always intern short string literals. And patching namedtuple will be not needed.
History
Date User Action Args
2016-01-01 12:23:49serhiy.storchakasetrecipients: + serhiy.storchaka, brett.cannon, georg.brandl, rhettinger, ncoghlan, benjamin.peterson, yselivanov
2016-01-01 12:23:49serhiy.storchakasetmessageid: <1451651029.64.0.0931504424344.issue25981@psf.upfronthosting.co.za>
2016-01-01 12:23:49serhiy.storchakalinkissue25981 messages
2016-01-01 12:23:49serhiy.storchakacreate