[New-bugs-announce] [issue19515] Share duplicated _Py_IDENTIFIER identifiers in C code

STINNER Victor report at bugs.python.org
Thu Nov 7 02:08:17 CET 2013


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 <report at bugs.python.org>
<http://bugs.python.org/issue19515>
_______________________________________


More information about the New-bugs-announce mailing list