@@ -32,20 +32,26 @@ static int
3232module_init_dict (PyModuleObject * mod , PyObject * md_dict ,
3333 PyObject * name , PyObject * doc )
3434{
35+ _Py_IDENTIFIER (__name__ );
36+ _Py_IDENTIFIER (__doc__ );
37+ _Py_IDENTIFIER (__package__ );
38+ _Py_IDENTIFIER (__loader__ );
39+ _Py_IDENTIFIER (__spec__ );
40+
3541 if (md_dict == NULL )
3642 return -1 ;
3743 if (doc == NULL )
3844 doc = Py_None ;
3945
40- if (PyDict_SetItemString (md_dict , "__name__" , name ) != 0 )
46+ if (_PyDict_SetItemId (md_dict , & PyId___name__ , name ) != 0 )
4147 return -1 ;
42- if (PyDict_SetItemString (md_dict , "__doc__" , doc ) != 0 )
48+ if (_PyDict_SetItemId (md_dict , & PyId___doc__ , doc ) != 0 )
4349 return -1 ;
44- if (PyDict_SetItemString (md_dict , "__package__" , Py_None ) != 0 )
50+ if (_PyDict_SetItemId (md_dict , & PyId___package__ , Py_None ) != 0 )
4551 return -1 ;
46- if (PyDict_SetItemString (md_dict , "__loader__" , Py_None ) != 0 )
52+ if (_PyDict_SetItemId (md_dict , & PyId___loader__ , Py_None ) != 0 )
4753 return -1 ;
48- if (PyDict_SetItemString (md_dict , "__spec__" , Py_None ) != 0 )
54+ if (_PyDict_SetItemId (md_dict , & PyId___spec__ , Py_None ) != 0 )
4955 return -1 ;
5056 if (PyUnicode_CheckExact (name )) {
5157 Py_INCREF (name );
@@ -184,8 +190,9 @@ PyModule_Create2(struct PyModuleDef* module, int module_api_version)
184190 Py_DECREF (n );
185191 }
186192 if (module -> m_doc != NULL ) {
193+ _Py_IDENTIFIER (__doc__ );
187194 v = PyUnicode_FromString (module -> m_doc );
188- if (v == NULL || PyDict_SetItemString (d , "__doc__" , v ) != 0 ) {
195+ if (v == NULL || _PyDict_SetItemId (d , & PyId___doc__ , v ) != 0 ) {
189196 Py_XDECREF (v );
190197 Py_DECREF (m );
191198 return NULL ;
@@ -214,6 +221,7 @@ PyModule_GetDict(PyObject *m)
214221PyObject *
215222PyModule_GetNameObject (PyObject * m )
216223{
224+ _Py_IDENTIFIER (__name__ );
217225 PyObject * d ;
218226 PyObject * name ;
219227 if (!PyModule_Check (m )) {
@@ -222,7 +230,7 @@ PyModule_GetNameObject(PyObject *m)
222230 }
223231 d = ((PyModuleObject * )m )-> md_dict ;
224232 if (d == NULL ||
225- (name = PyDict_GetItemString (d , "__name__" )) == NULL ||
233+ (name = _PyDict_GetItemId (d , & PyId___name__ )) == NULL ||
226234 !PyUnicode_Check (name ))
227235 {
228236 PyErr_SetString (PyExc_SystemError , "nameless module" );
@@ -245,6 +253,7 @@ PyModule_GetName(PyObject *m)
245253PyObject *
246254PyModule_GetFilenameObject (PyObject * m )
247255{
256+ _Py_IDENTIFIER (__file__ );
248257 PyObject * d ;
249258 PyObject * fileobj ;
250259 if (!PyModule_Check (m )) {
@@ -253,7 +262,7 @@ PyModule_GetFilenameObject(PyObject *m)
253262 }
254263 d = ((PyModuleObject * )m )-> md_dict ;
255264 if (d == NULL ||
256- (fileobj = PyDict_GetItemString (d , "__file__" )) == NULL ||
265+ (fileobj = _PyDict_GetItemId (d , & PyId___file__ )) == NULL ||
257266 !PyUnicode_Check (fileobj ))
258267 {
259268 PyErr_SetString (PyExc_SystemError , "module filename missing" );
@@ -420,7 +429,8 @@ module_getattro(PyModuleObject *m, PyObject *name)
420429 return attr ;
421430 PyErr_Clear ();
422431 if (m -> md_dict ) {
423- mod_name = PyDict_GetItemString (m -> md_dict , "__name__" );
432+ _Py_IDENTIFIER (__name__ );
433+ mod_name = _PyDict_GetItemId (m -> md_dict , & PyId___name__ );
424434 if (mod_name ) {
425435 PyErr_Format (PyExc_AttributeError ,
426436 "module '%U' has no attribute '%U'" , mod_name , name );
0 commit comments