New submission from STINNER Victor: I started to share some common identifiers in Python/pythonrun.c, extract:
/* Common identifiers */ _Py_Identifier _PyId_argv = _Py_static_string_init("argv"); _Py_Identifier _PyId_builtins = _Py_static_string_init("builtins"); ... Do you think it would be interesting to continue to share such identifier somewhere? Maybe in a new file? We might do the same for some common strings like empty string, single character (like "\n"), etc. See also issue #19514. Duplicated identifiers in the io module: _Py_IDENTIFIER(_dealloc_warn): Modules/_io/bufferedio.c:17 _Py_IDENTIFIER(_dealloc_warn): Modules/_io/textio.c:15 _Py_IDENTIFIER(__IOBase_closed): Modules/_io/iobase.c:183 _Py_IDENTIFIER(__IOBase_closed): Modules/_io/iobase.c:62 _Py_IDENTIFIER(read1): Modules/_io/bufferedio.c:24 _Py_IDENTIFIER(read1): Modules/_io/textio.c:25 _Py_IDENTIFIER(readable): Modules/_io/bufferedio.c:25 _Py_IDENTIFIER(readable): Modules/_io/textio.c:26 _Py_IDENTIFIER(readall): Modules/_io/fileio.c:590 _Py_IDENTIFIER(readall): Modules/_io/iobase.c:802 _Py_IDENTIFIER(seek): Modules/_io/iobase.c:101 _Py_IDENTIFIER(seek): Modules/_io/textio.c:29 _Py_IDENTIFIER(writable): Modules/_io/bufferedio.c:27 _Py_IDENTIFIER(writable): Modules/_io/textio.c:33 Duplicated identifiers in other files: _Py_IDENTIFIER(append): Modules/_elementtree.c:2373 _Py_IDENTIFIER(append): Modules/_pickle.c:5056 _Py_IDENTIFIER(__bases__): Objects/abstract.c:2417 _Py_IDENTIFIER(__bases__): Objects/typeobject.c:2813 _Py_IDENTIFIER(builtins): pythonrun.c _Py_IDENTIFIER(builtins): Python/sysmodule.c:169 _Py_IDENTIFIER(__bytes__): Objects/bytesobject.c:2458 _Py_IDENTIFIER(__bytes__): Objects/object.c:563 _Py_IDENTIFIER(__class__): Objects/abstract.c:2492 _Py_IDENTIFIER(__class__): Objects/typeobject.c:42 _Py_IDENTIFIER(__class__): Python/codecs.c:470 _Py_IDENTIFIER(__class__): Python/compile.c:553 _Py_IDENTIFIER(close): Modules/_io/bufferedio.c:16 _Py_IDENTIFIER(close): Modules/_io/fileio.c:129 _Py_IDENTIFIER(close): Modules/_io/textio.c:14 _Py_IDENTIFIER(close): Modules/mmapmodule.c:707 _Py_IDENTIFIER(close): Modules/ossaudiodev.c:540 _Py_IDENTIFIER(close): Modules/selectmodule.c:1513 _Py_IDENTIFIER(close): Objects/genobject.c:173 _Py_IDENTIFIER(close): Python/traceback.c:235 _Py_IDENTIFIER(__delitem__): Objects/typeobject.c:5132 _Py_IDENTIFIER(__delitem__): Objects/typeobject.c:5183 _Py_IDENTIFIER(__dict__): Modules/arraymodule.c:2040 _Py_IDENTIFIER(__dict__): Modules/_collectionsmodule.c:894 _Py_IDENTIFIER(__dict__): Modules/_pickle.c:5204 _Py_IDENTIFIER(__dict__): Objects/bytearrayobject.c:2704 _Py_IDENTIFIER(__dict__): Objects/moduleobject.c:479 _Py_IDENTIFIER(__dict__): Objects/setobject.c:1946 _Py_IDENTIFIER(__dict__): Objects/typeobject.c:43 _Py_IDENTIFIER(__dict__): Parser/asdl_c.py:702 _Py_IDENTIFIER(__dict__): Python/bltinmodule.c:1942 _Py_IDENTIFIER(__dict__): Python/ceval.c:4660 _Py_IDENTIFIER(__dict__): Python/Python-ast.c:544 _Py_IDENTIFIER(__doc__): Objects/descrobject.c:1443 _Py_IDENTIFIER(__doc__): Objects/typeobject.c:44 _Py_IDENTIFIER(enable): Modules/faulthandler.c:1050 _Py_IDENTIFIER(enable): Modules/_posixsubprocess.c:50 _Py_IDENTIFIER(encoding): Python/bltinmodule.c:1716 _Py_IDENTIFIER(encoding): Python/pythonrun.c:1359 _Py_IDENTIFIER(encoding): Python/sysmodule.c:107 _Py_IDENTIFIER(filename): Python/errors.c:932 _Py_IDENTIFIER(filename): Python/pythonrun.c:1634 _Py_IDENTIFIER(fileno): Modules/faulthandler.c:133 _Py_IDENTIFIER(fileno): Modules/_io/_iomodule.c:238 _Py_IDENTIFIER(fileno): Modules/_io/textio.c:17 _Py_IDENTIFIER(fileno): Objects/fileobject.c:200 _Py_IDENTIFIER(fileno): Python/bltinmodule.c:35 _Py_IDENTIFIER(flush): Modules/faulthandler.c:134 _Py_IDENTIFIER(flush): Modules/_io/bufferedio.c:18 _Py_IDENTIFIER(flush): Modules/_io/textio.c:18 _Py_IDENTIFIER(flush): Python/bltinmodule.c:1550 _Py_IDENTIFIER(flush): Python/bltinmodule.c:36 _Py_IDENTIFIER(flush): Python/pythonrun.c:2120 _Py_IDENTIFIER(flush): Python/pythonrun.c:519 _Py_IDENTIFIER(__getinitargs__): Modules/_datetimemodule.c:3075 _Py_IDENTIFIER(__getinitargs__): Modules/_pickle.c:4501 _Py_IDENTIFIER(TextIOWrapper): Python/pythonrun.c:1005 _Py_IDENTIFIER(TextIOWrapper): Python/traceback.c:237 _Py_IDENTIFIER(__getstate__): Modules/_datetimemodule.c:3076 _Py_IDENTIFIER(__getstate__): Objects/typeobject.c:3448 _Py_IDENTIFIER(__import__): Python/ceval.c:2428 _Py_IDENTIFIER(__import__): Python/import.c:1230 _Py_IDENTIFIER(__module__): Objects/typeobject.c:48 _Py_IDENTIFIER(__module__): Python/errors.c:840 _Py_IDENTIFIER(__module__): Python/pythonrun.c:1916 _Py_IDENTIFIER(__name__): Objects/classobject.c:17 _Py_IDENTIFIER(__name__): Objects/typeobject.c:49 _Py_IDENTIFIER(__name__): Objects/weakrefobject.c:159 _Py_IDENTIFIER(__name__): Python/_warnings.c:260 _Py_IDENTIFIER(__name__): Python/codecs.c:471 _Py_IDENTIFIER(__name__): Python/import.c:1234 _Py_IDENTIFIER(__new__): Modules/_ctypes/callproc.c:1643 _Py_IDENTIFIER(__new__): Modules/_pickle.c:4511 _Py_IDENTIFIER(__new__): Objects/typeobject.c:50 _Py_IDENTIFIER(__new__): Objects/typeobject.c:5637 _Py_IDENTIFIER(__qualname__): Objects/descrobject.c:367 _Py_IDENTIFIER(__qualname__): Objects/methodobject.c:191 _Py_IDENTIFIER(__qualname__): Objects/typeobject.c:2032 _Py_IDENTIFIER(__setitem__): Modules/_collectionsmodule.c:1767 _Py_IDENTIFIER(__setitem__): Objects/typeobject.c:5133 _Py_IDENTIFIER(__setitem__): Objects/typeobject.c:5184 _Py_IDENTIFIER(__setstate__): Modules/_ctypes/callproc.c:1644 _Py_IDENTIFIER(__setstate__): Modules/_pickle.c:5147 _Py_IDENTIFIER(__trunc__): Modules/mathmodule.c:1464 _Py_IDENTIFIER(__trunc__): Objects/abstract.c:1273 _Py_IDENTIFIER(get): Modules/_collectionsmodule.c:1766 _Py_IDENTIFIER(get): Objects/descrobject.c:793 _Py_IDENTIFIER(isatty): Modules/_io/_iomodule.c:237 _Py_IDENTIFIER(isatty): Modules/_io/bufferedio.c:19 _Py_IDENTIFIER(isatty): Modules/_io/textio.c:20 _Py_IDENTIFIER(isatty): Python/pythonrun.c:1004 _Py_IDENTIFIER(items): Modules/_collectionsmodule.c:1566 _Py_IDENTIFIER(items): Modules/_pickle.c:2569 _Py_IDENTIFIER(items): Objects/abstract.c:2039 _Py_IDENTIFIER(items): Objects/descrobject.c:817 _Py_IDENTIFIER(items): Objects/typeobject.c:3537 _Py_IDENTIFIER(items): Python/Python-ast.c:108 _Py_IDENTIFIER(keys): Objects/abstract.c:2022 _Py_IDENTIFIER(keys): Objects/descrobject.c:803 _Py_IDENTIFIER(keys): Objects/dictobject.c:1792 _Py_IDENTIFIER(keys): Python/Python-ast.c:201 _Py_IDENTIFIER(lineno): Python/Python-ast.c:29 _Py_IDENTIFIER(lineno): Python/errors.c:933 _Py_IDENTIFIER(lineno): Python/pythonrun.c:1635 _Py_IDENTIFIER(mode): Modules/_io/_iomodule.c:239 _Py_IDENTIFIER(mode): Modules/_io/bufferedio.c:20 _Py_IDENTIFIER(mode): Modules/_io/textio.c:21 _Py_IDENTIFIER(mode): Python/pythonrun.c:1007 _Py_IDENTIFIER(msg): Python/Python-ast.c:130 _Py_IDENTIFIER(msg): Python/errors.c:934 _Py_IDENTIFIER(msg): Python/pythonrun.c:1633 _Py_IDENTIFIER(name): Modules/_io/bufferedio.c:21 _Py_IDENTIFIER(name): Modules/_io/fileio.c:62 _Py_IDENTIFIER(name): Modules/_io/textio.c:22 _Py_IDENTIFIER(name): Python/Python-ast.c:37 _Py_IDENTIFIER(name): Python/pythonrun.c:1006 _Py_IDENTIFIER(name): Python/pythonrun.c:222 _Py_IDENTIFIER(offset): Python/errors.c:935 _Py_IDENTIFIER(offset): Python/pythonrun.c:1636 _Py_IDENTIFIER(open): Objects/fileobject.c:33 _Py_IDENTIFIER(open): Parser/tokenizer.c:476 _Py_IDENTIFIER(open): Python/pythonrun.c:1003 _Py_IDENTIFIER(open): Python/traceback.c:155 _Py_IDENTIFIER(open): Python/traceback.c:236 _Py_IDENTIFIER(peek): Modules/_io/bufferedio.c:22 _Py_IDENTIFIER(peek): Modules/_io/iobase.c:453 _Py_IDENTIFIER(peek): Modules/_pickle.c:1181 _Py_IDENTIFIER(print_file_and_line): Python/errors.c:936 _Py_IDENTIFIER(print_file_and_line): Python/pythonrun.c:1865 _Py_IDENTIFIER(raw): Modules/_io/textio.c:23 _Py_IDENTIFIER(raw): Python/pythonrun.c:1029 _Py_IDENTIFIER(read): Modules/_cursesmodule.c:2336 _Py_IDENTIFIER(read): Modules/_io/bufferedio.c:23 _Py_IDENTIFIER(read): Modules/_io/bufferedio.c:55 _Py_IDENTIFIER(read): Modules/_io/iobase.c:452 _Py_IDENTIFIER(read): Modules/_io/iobase.c:846 _Py_IDENTIFIER(read): Modules/_io/textio.c:24 _Py_IDENTIFIER(read): Modules/_pickle.c:1182 _Py_IDENTIFIER(read): Modules/arraymodule.c:1267 _Py_IDENTIFIER(read): Modules/pyexpat.c:898 _Py_IDENTIFIER(read): Python/marshal.c:1595 _Py_IDENTIFIER(readinto): Modules/_io/bufferedio.c:26 _Py_IDENTIFIER(readinto): Python/marshal.c:621 _Py_IDENTIFIER(readline): Modules/_pickle.c:1183 _Py_IDENTIFIER(readline): Objects/fileobject.c:62 _Py_IDENTIFIER(readline): Parser/tokenizer.c:477 _Py_IDENTIFIER(replace): Modules/_datetimemodule.c:1071 _Py_IDENTIFIER(replace): Modules/_io/textio.c:27 _Py_IDENTIFIER(replace): Modules/zipimport.c:563 _Py_IDENTIFIER(replace): Modules/zipimport.c:70 _Py_IDENTIFIER(text): Modules/_elementtree.c:2357 _Py_IDENTIFIER(text): Python/errors.c:937 _Py_IDENTIFIER(text): Python/pythonrun.c:1637 _Py_IDENTIFIER(time): Modules/_datetimemodule.c:1309 _Py_IDENTIFIER(time): Modules/gcmodule.c:890 _Py_IDENTIFIER(upper): Modules/_sqlite/connection.c:1500 _Py_IDENTIFIER(upper): Modules/_sqlite/cursor.c:144 _Py_IDENTIFIER(upper): Modules/_sqlite/module.c:190 _Py_IDENTIFIER(upper): Python/Python-ast.c:329 _Py_IDENTIFIER(values): Objects/abstract.c:2056 _Py_IDENTIFIER(values): Objects/descrobject.c:810 _Py_IDENTIFIER(values): Python/Python-ast.c:170 _Py_IDENTIFIER(write): Modules/_csv.c:1374 _Py_IDENTIFIER(write): Modules/_cursesmodule.c:1792 _Py_IDENTIFIER(write): Modules/_io/bufferedio.c:28 _Py_IDENTIFIER(write): Modules/_pickle.c:831 _Py_IDENTIFIER(write): Modules/arraymodule.c:1340 _Py_IDENTIFIER(write): Modules/cjkcodecs/multibytecodec.c:1572 _Py_IDENTIFIER(write): Modules/cjkcodecs/multibytecodec.c:1642 _Py_IDENTIFIER(write): Objects/fileobject.c:131 _Py_IDENTIFIER(write): Python/marshal.c:1566 _Py_IDENTIFIER(write): Python/sysmodule.c:129 _Py_IDENTIFIER(write): Python/sysmodule.c:2007 ---------- messages: 202301 nosy: haypo priority: normal severity: normal status: open title: Share duplicated _Py_IDENTIFIER identifiers in C code versions: Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue19515> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com