blob: 46306b3917cce078497f736d073fc6c200a1e310 [file] [log] [blame]
Stéphane Wirtelcbb64842019-05-17 11:55:34 +02001.. highlight:: c
Georg Brandl54a3faa2008-01-20 09:30:57 +00002
3.. _moduleobjects:
4
5Module Objects
6--------------
7
8.. index:: object: module
9
Georg Brandl54a3faa2008-01-20 09:30:57 +000010
Georg Brandl60203b42010-10-06 10:11:56 +000011.. c:var:: PyTypeObject PyModule_Type
Georg Brandl54a3faa2008-01-20 09:30:57 +000012
13 .. index:: single: ModuleType (in module types)
14
Georg Brandl60203b42010-10-06 10:11:56 +000015 This instance of :c:type:`PyTypeObject` represents the Python module type. This
Georg Brandl54a3faa2008-01-20 09:30:57 +000016 is exposed to Python programs as ``types.ModuleType``.
17
18
Georg Brandl60203b42010-10-06 10:11:56 +000019.. c:function:: int PyModule_Check(PyObject *p)
Georg Brandl54a3faa2008-01-20 09:30:57 +000020
21 Return true if *p* is a module object, or a subtype of a module object.
22
23
Georg Brandl60203b42010-10-06 10:11:56 +000024.. c:function:: int PyModule_CheckExact(PyObject *p)
Georg Brandl54a3faa2008-01-20 09:30:57 +000025
26 Return true if *p* is a module object, but not a subtype of
Georg Brandl60203b42010-10-06 10:11:56 +000027 :c:data:`PyModule_Type`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000028
29
Victor Stinner0639b562011-03-04 12:57:07 +000030.. c:function:: PyObject* PyModule_NewObject(PyObject *name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000031
32 .. index::
33 single: __name__ (module attribute)
34 single: __doc__ (module attribute)
35 single: __file__ (module attribute)
Brett Cannon4c14b5d2013-05-04 13:56:58 -040036 single: __package__ (module attribute)
37 single: __loader__ (module attribute)
Georg Brandl54a3faa2008-01-20 09:30:57 +000038
39 Return a new module object with the :attr:`__name__` attribute set to *name*.
Brett Cannon4c14b5d2013-05-04 13:56:58 -040040 The module's :attr:`__name__`, :attr:`__doc__`, :attr:`__package__`, and
41 :attr:`__loader__` attributes are filled in (all but :attr:`__name__` are set
42 to ``None``); the caller is responsible for providing a :attr:`__file__`
43 attribute.
Georg Brandl54a3faa2008-01-20 09:30:57 +000044
Victor Stinner0639b562011-03-04 12:57:07 +000045 .. versionadded:: 3.3
46
Brett Cannon4c14b5d2013-05-04 13:56:58 -040047 .. versionchanged:: 3.4
48 :attr:`__package__` and :attr:`__loader__` are set to ``None``.
49
Victor Stinner0639b562011-03-04 12:57:07 +000050
51.. c:function:: PyObject* PyModule_New(const char *name)
52
Emily Morehouse2d0afef2017-06-13 11:58:18 -060053 Similar to :c:func:`PyModule_NewObject`, but the name is a UTF-8 encoded
Victor Stinner0639b562011-03-04 12:57:07 +000054 string instead of a Unicode object.
55
Georg Brandl54a3faa2008-01-20 09:30:57 +000056
Georg Brandl60203b42010-10-06 10:11:56 +000057.. c:function:: PyObject* PyModule_GetDict(PyObject *module)
Georg Brandl54a3faa2008-01-20 09:30:57 +000058
59 .. index:: single: __dict__ (module attribute)
60
61 Return the dictionary object that implements *module*'s namespace; this object
Berker Peksagc01e7662016-08-19 11:51:39 +030062 is the same as the :attr:`~object.__dict__` attribute of the module object.
63 If *module* is not a module object (or a subtype of a module object),
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020064 :exc:`SystemError` is raised and ``NULL`` is returned.
Berker Peksagc01e7662016-08-19 11:51:39 +030065
66 It is recommended extensions use other :c:func:`PyModule_\*` and
67 :c:func:`PyObject_\*` functions rather than directly manipulate a module's
68 :attr:`~object.__dict__`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000069
70
Victor Stinnerbd475112011-02-23 00:21:43 +000071.. c:function:: PyObject* PyModule_GetNameObject(PyObject *module)
Georg Brandl54a3faa2008-01-20 09:30:57 +000072
73 .. index::
74 single: __name__ (module attribute)
75 single: SystemError (built-in exception)
76
77 Return *module*'s :attr:`__name__` value. If the module does not provide one,
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020078 or if it is not a string, :exc:`SystemError` is raised and ``NULL`` is returned.
Georg Brandl54a3faa2008-01-20 09:30:57 +000079
Victor Stinnerbd475112011-02-23 00:21:43 +000080 .. versionadded:: 3.3
Georg Brandl54a3faa2008-01-20 09:30:57 +000081
Georg Brandl54a3faa2008-01-20 09:30:57 +000082
Serhiy Storchaka84b8e922017-03-30 10:01:03 +030083.. c:function:: const char* PyModule_GetName(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +000084
Victor Stinnerbd475112011-02-23 00:21:43 +000085 Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to
86 ``'utf-8'``.
Victor Stinner6c00c142010-08-17 23:37:11 +000087
Nick Coghlan2ab5b092015-07-03 19:49:15 +100088.. c:function:: void* PyModule_GetState(PyObject *module)
89
90 Return the "state" of the module, that is, a pointer to the block of memory
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020091 allocated at module creation time, or ``NULL``. See
Nick Coghlan2ab5b092015-07-03 19:49:15 +100092 :c:member:`PyModuleDef.m_size`.
93
94
95.. c:function:: PyModuleDef* PyModule_GetDef(PyObject *module)
96
97 Return a pointer to the :c:type:`PyModuleDef` struct from which the module was
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020098 created, or ``NULL`` if the module wasn't created from a definition.
Nick Coghlan2ab5b092015-07-03 19:49:15 +100099
Victor Stinner6c00c142010-08-17 23:37:11 +0000100
Georg Brandl60203b42010-10-06 10:11:56 +0000101.. c:function:: PyObject* PyModule_GetFilenameObject(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +0000102
Georg Brandl54a3faa2008-01-20 09:30:57 +0000103 .. index::
104 single: __file__ (module attribute)
105 single: SystemError (built-in exception)
106
107 Return the name of the file from which *module* was loaded using *module*'s
Victor Stinner6c00c142010-08-17 23:37:11 +0000108 :attr:`__file__` attribute. If this is not defined, or if it is not a
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200109 unicode string, raise :exc:`SystemError` and return ``NULL``; otherwise return
Georg Brandldb6c7f52011-10-07 11:19:11 +0200110 a reference to a Unicode object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000111
Victor Stinnerc14190d2010-08-18 10:57:33 +0000112 .. versionadded:: 3.2
113
Georg Brandl54a3faa2008-01-20 09:30:57 +0000114
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300115.. c:function:: const char* PyModule_GetFilename(PyObject *module)
Victor Stinnerbd475112011-02-23 00:21:43 +0000116
117 Similar to :c:func:`PyModule_GetFilenameObject` but return the filename
118 encoded to 'utf-8'.
119
120 .. deprecated:: 3.2
121 :c:func:`PyModule_GetFilename` raises :c:type:`UnicodeEncodeError` on
122 unencodable filenames, use :c:func:`PyModule_GetFilenameObject` instead.
123
124
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000125.. _initializing-modules:
Georg Brandle69cdf92009-01-04 23:20:14 +0000126
127Initializing C modules
128^^^^^^^^^^^^^^^^^^^^^^
129
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000130Modules objects are usually created from extension modules (shared libraries
131which export an initialization function), or compiled-in modules
132(where the initialization function is added using :c:func:`PyImport_AppendInittab`).
133See :ref:`building` or :ref:`extending-with-embedding` for details.
134
Martin Pantera90a4a92016-05-30 04:04:50 +0000135The initialization function can either pass a module definition instance
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000136to :c:func:`PyModule_Create`, and return the resulting module object,
137or request "multi-phase initialization" by returning the definition struct itself.
138
Georg Brandl60203b42010-10-06 10:11:56 +0000139.. c:type:: PyModuleDef
Georg Brandle69cdf92009-01-04 23:20:14 +0000140
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000141 The module definition struct, which holds all information needed to create
142 a module object. There is usually only one statically initialized variable
143 of this type for each module.
Georg Brandle69cdf92009-01-04 23:20:14 +0000144
Georg Brandl60203b42010-10-06 10:11:56 +0000145 .. c:member:: PyModuleDef_Base m_base
Georg Brandle69cdf92009-01-04 23:20:14 +0000146
147 Always initialize this member to :const:`PyModuleDef_HEAD_INIT`.
148
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300149 .. c:member:: const char *m_name
Georg Brandle69cdf92009-01-04 23:20:14 +0000150
151 Name for the new module.
152
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300153 .. c:member:: const char *m_doc
Georg Brandle69cdf92009-01-04 23:20:14 +0000154
155 Docstring for the module; usually a docstring variable created with
Georg Brandl60203b42010-10-06 10:11:56 +0000156 :c:func:`PyDoc_STRVAR` is used.
Georg Brandle69cdf92009-01-04 23:20:14 +0000157
Georg Brandl60203b42010-10-06 10:11:56 +0000158 .. c:member:: Py_ssize_t m_size
Georg Brandle69cdf92009-01-04 23:20:14 +0000159
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000160 Module state may be kept in a per-module memory area that can be
161 retrieved with :c:func:`PyModule_GetState`, rather than in static globals.
162 This makes modules safe for use in multiple sub-interpreters.
Georg Brandle69cdf92009-01-04 23:20:14 +0000163
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000164 This memory area is allocated based on *m_size* on module creation,
165 and freed when the module object is deallocated, after the
166 :c:member:`m_free` function has been called, if present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000167
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000168 Setting ``m_size`` to ``-1`` means that the module does not support
169 sub-interpreters, because it has global state.
170
171 Setting it to a non-negative value means that the module can be
172 re-initialized and specifies the additional amount of memory it requires
173 for its state. Non-negative ``m_size`` is required for multi-phase
174 initialization.
Eli Bendersky0d2d2b82013-08-07 05:52:20 -0700175
176 See :PEP:`3121` for more details.
177
Georg Brandl60203b42010-10-06 10:11:56 +0000178 .. c:member:: PyMethodDef* m_methods
Georg Brandle69cdf92009-01-04 23:20:14 +0000179
180 A pointer to a table of module-level functions, described by
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200181 :c:type:`PyMethodDef` values. Can be ``NULL`` if no functions are present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000182
Nick Coghland5cacbb2015-05-23 22:24:10 +1000183 .. c:member:: PyModuleDef_Slot* m_slots
Georg Brandle69cdf92009-01-04 23:20:14 +0000184
Nick Coghland5cacbb2015-05-23 22:24:10 +1000185 An array of slot definitions for multi-phase initialization, terminated by
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000186 a ``{0, NULL}`` entry.
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200187 When using single-phase initialization, *m_slots* must be ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000188
189 .. versionchanged:: 3.5
190
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200191 Prior to version 3.5, this member was always set to ``NULL``,
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000192 and was defined as:
193
194 .. c:member:: inquiry m_reload
Georg Brandle69cdf92009-01-04 23:20:14 +0000195
Georg Brandl60203b42010-10-06 10:11:56 +0000196 .. c:member:: traverseproc m_traverse
Georg Brandle69cdf92009-01-04 23:20:14 +0000197
198 A traversal function to call during GC traversal of the module object, or
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200199 ``NULL`` if not needed. This function may be called before module state
Marcel Plchc2b0b122018-03-17 06:41:20 +0100200 is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
201 and before the :c:member:`Py_mod_exec` function is executed.
Georg Brandle69cdf92009-01-04 23:20:14 +0000202
Georg Brandl60203b42010-10-06 10:11:56 +0000203 .. c:member:: inquiry m_clear
Georg Brandle69cdf92009-01-04 23:20:14 +0000204
205 A clear function to call during GC clearing of the module object, or
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200206 ``NULL`` if not needed. This function may be called before module state
Marcel Plchc2b0b122018-03-17 06:41:20 +0100207 is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
208 and before the :c:member:`Py_mod_exec` function is executed.
Georg Brandle69cdf92009-01-04 23:20:14 +0000209
Georg Brandl60203b42010-10-06 10:11:56 +0000210 .. c:member:: freefunc m_free
Georg Brandle69cdf92009-01-04 23:20:14 +0000211
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200212 A function to call during deallocation of the module object, or ``NULL`` if
Marcel Plchc2b0b122018-03-17 06:41:20 +0100213 not needed. This function may be called before module state
214 is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
215 and before the :c:member:`Py_mod_exec` function is executed.
Georg Brandle69cdf92009-01-04 23:20:14 +0000216
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000217Single-phase initialization
218...........................
219
Nick Coghland5cacbb2015-05-23 22:24:10 +1000220The module initialization function may create and return the module object
221directly. This is referred to as "single-phase initialization", and uses one
222of the following two module creation functions:
223
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000224.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000225
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000226 Create a new module object, given the definition in *def*. This behaves
Nick Coghland5cacbb2015-05-23 22:24:10 +1000227 like :c:func:`PyModule_Create2` with *module_api_version* set to
228 :const:`PYTHON_API_VERSION`.
229
230
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000231.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000232
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000233 Create a new module object, given the definition in *def*, assuming the
Nick Coghland5cacbb2015-05-23 22:24:10 +1000234 API version *module_api_version*. If that version does not match the version
235 of the running interpreter, a :exc:`RuntimeWarning` is emitted.
236
237 .. note::
238
239 Most uses of this function should be using :c:func:`PyModule_Create`
240 instead; only use this if you are sure you need it.
241
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000242Before it is returned from in the initialization function, the resulting module
243object is typically populated using functions like :c:func:`PyModule_AddObject`.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000244
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000245.. _multi-phase-initialization:
Nick Coghland5cacbb2015-05-23 22:24:10 +1000246
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000247Multi-phase initialization
248..........................
249
250An alternate way to specify extensions is to request "multi-phase initialization".
251Extension modules created this way behave more like Python modules: the
252initialization is split between the *creation phase*, when the module object
253is created, and the *execution phase*, when it is populated.
254The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
255of classes.
256
257Unlike modules created using single-phase initialization, these modules are not
258singletons: if the *sys.modules* entry is removed and the module is re-imported,
259a new module object is created, and the old module is subject to normal garbage
260collection -- as with Python modules.
261By default, multiple modules created from the same definition should be
262independent: changes to one should not affect the others.
263This means that all state should be specific to the module object (using e.g.
264using :c:func:`PyModule_GetState`), or its contents (such as the module's
265:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
266
267All modules created using multi-phase initialization are expected to support
268:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
269are independent is typically enough to achieve this.
270
271To request multi-phase initialization, the initialization function
272(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
273:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
274instance must be initialized with the following function:
275
276.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000277
278 Ensures a module definition is a properly initialized Python object that
279 correctly reports its type and reference count.
280
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200281 Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000282
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000283 .. versionadded:: 3.5
284
285The *m_slots* member of the module definition must point to an array of
286``PyModuleDef_Slot`` structures:
287
288.. c:type:: PyModuleDef_Slot
289
290 .. c:member:: int slot
291
292 A slot ID, chosen from the available values explained below.
293
294 .. c:member:: void* value
295
296 Value of the slot, whose meaning depends on the slot ID.
297
298 .. versionadded:: 3.5
299
300The *m_slots* array must be terminated by a slot with id 0.
301
302The available slot types are:
303
304.. c:var:: Py_mod_create
305
306 Specifies a function that is called to create the module object itself.
307 The *value* pointer of this slot must point to a function of the signature:
308
309 .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
310
311 The function receives a :py:class:`~importlib.machinery.ModuleSpec`
312 instance, as defined in :PEP:`451`, and the module definition.
313 It should return a new module object, or set an error
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200314 and return ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000315
316 This function should be kept minimal. In particular, it should not
317 call arbitrary Python code, as trying to import the same module again may
318 result in an infinite loop.
319
320 Multiple ``Py_mod_create`` slots may not be specified in one module
321 definition.
322
323 If ``Py_mod_create`` is not specified, the import machinery will create
324 a normal module object using :c:func:`PyModule_New`. The name is taken from
325 *spec*, not the definition, to allow extension modules to dynamically adjust
326 to their place in the module hierarchy and be imported under different
327 names through symlinks, all while sharing a single module definition.
328
329 There is no requirement for the returned object to be an instance of
330 :c:type:`PyModule_Type`. Any type can be used, as long as it supports
331 setting and getting import-related attributes.
332 However, only ``PyModule_Type`` instances may be returned if the
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200333 ``PyModuleDef`` has non-``NULL`` ``m_traverse``, ``m_clear``,
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000334 ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
335
336.. c:var:: Py_mod_exec
337
338 Specifies a function that is called to *execute* the module.
339 This is equivalent to executing the code of a Python module: typically,
340 this function adds classes and constants to the module.
341 The signature of the function is:
342
343 .. c:function:: int exec_module(PyObject* module)
344
345 If multiple ``Py_mod_exec`` slots are specified, they are processed in the
346 order they appear in the *m_slots* array.
347
348See :PEP:`489` for more details on multi-phase initialization.
349
350Low-level module creation functions
351...................................
352
353The following functions are called under the hood when using multi-phase
354initialization. They can be used directly, for example when creating module
355objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
356``PyModule_ExecDef`` must be called to fully initialize a module.
357
358.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
359
360 Create a new module object, given the definition in *module* and the
361 ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2`
362 with *module_api_version* set to :const:`PYTHON_API_VERSION`.
363
364 .. versionadded:: 3.5
365
366.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
367
368 Create a new module object, given the definition in *module* and the
369 ModuleSpec *spec*, assuming the API version *module_api_version*.
370 If that version does not match the version of the running interpreter,
371 a :exc:`RuntimeWarning` is emitted.
372
373 .. note::
374
375 Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
376 instead; only use this if you are sure you need it.
377
378 .. versionadded:: 3.5
379
380.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
381
382 Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
383
384 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000385
386.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
387
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000388 Set the docstring for *module* to *docstring*.
389 This function is called automatically when creating a module from
390 ``PyModuleDef``, using either ``PyModule_Create`` or
391 ``PyModule_FromDefAndSpec``.
392
393 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000394
395.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
396
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200397 Add the functions from the ``NULL`` terminated *functions* array to *module*.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000398 Refer to the :c:type:`PyMethodDef` documentation for details on individual
399 entries (due to the lack of a shared module namespace, module level
400 "functions" implemented in C typically receive the module as their first
401 parameter, making them similar to instance methods on Python classes).
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000402 This function is called automatically when creating a module from
403 ``PyModuleDef``, using either ``PyModule_Create`` or
404 ``PyModule_FromDefAndSpec``.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000405
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000406 .. versionadded:: 3.5
407
408Support functions
409.................
410
411The module initialization function (if using single phase initialization) or
412a function called from a module execution slot (if using multi-phase
413initialization), can use the following functions to help initialize the module
414state:
Georg Brandle69cdf92009-01-04 23:20:14 +0000415
Georg Brandl60203b42010-10-06 10:11:56 +0000416.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000417
418 Add an object to *module* as *name*. This is a convenience function which can
419 be used from the module's initialization function. This steals a reference to
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700420 *value* on success. Return ``-1`` on error, ``0`` on success.
421
422 .. note::
423
424 Unlike other functions that steal references, ``PyModule_AddObject()`` only
425 decrements the reference count of *value* **on success**.
426
427 This means that its return value must be checked, and calling code must
428 :c:func:`Py_DECREF` *value* manually on error. Example usage::
429
430 Py_INCREF(spam);
431 if (PyModule_AddObject(module, "spam", spam) < 0) {
432 Py_DECREF(module);
433 Py_DECREF(spam);
434 return NULL;
435 }
Georg Brandl54a3faa2008-01-20 09:30:57 +0000436
Georg Brandl60203b42010-10-06 10:11:56 +0000437.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000438
439 Add an integer constant to *module* as *name*. This convenience function can be
440 used from the module's initialization function. Return ``-1`` on error, ``0`` on
441 success.
442
443
Georg Brandl60203b42010-10-06 10:11:56 +0000444.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000445
446 Add a string constant to *module* as *name*. This convenience function can be
447 used from the module's initialization function. The string *value* must be
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200448 ``NULL``-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000449
450
Georg Brandl60203b42010-10-06 10:11:56 +0000451.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000452
Georg Brandl48310cd2009-01-03 21:18:54 +0000453 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500454 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000455 constant *AF_INET* with the value of *AF_INET* to *module*.
456 Return ``-1`` on error, ``0`` on success.
457
458
Georg Brandl60203b42010-10-06 10:11:56 +0000459.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000460
461 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000462
463
464Module lookup
465^^^^^^^^^^^^^
466
467Single-phase initialization creates singleton modules that can be looked up
468in the context of the current interpreter. This allows the module object to be
469retrieved later with only a reference to the module definition.
470
471These functions will not work on modules created using multi-phase initialization,
472since multiple such modules can be created from a single definition.
473
474.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
475
476 Returns the module object that was created from *def* for the current interpreter.
477 This method requires that the module object has been attached to the interpreter state with
478 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200479 found or has not been attached to the interpreter state yet, it returns ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000480
481.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
482
483 Attaches the module object passed to the function to the interpreter state. This allows
484 the module object to be accessible via :c:func:`PyState_FindModule`.
485
486 Only effective on modules created using single-phase initialization.
487
488 .. versionadded:: 3.3
489
490.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
491
492 Removes the module object created from *def* from the interpreter state.
493
494 .. versionadded:: 3.3