blob: 8cf26fbe9e4af5c4926403348c0b41eca367c1ba [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
Victor Stinner5b1ef202020-03-17 18:09:46 +0100199 ``NULL`` if not needed.
200
201 This function is not called if the module state was requested but is not
202 allocated yet. This is the case immediately after the module is created
203 and before the module is executed (:c:data:`Py_mod_exec` function). More
204 precisely, this function is not called if :c:member:`m_size` is greater
205 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
206 is ``NULL``.
207
208 .. versionchanged:: 3.9
209 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000210
Georg Brandl60203b42010-10-06 10:11:56 +0000211 .. c:member:: inquiry m_clear
Georg Brandle69cdf92009-01-04 23:20:14 +0000212
213 A clear function to call during GC clearing of the module object, or
Victor Stinner5b1ef202020-03-17 18:09:46 +0100214 ``NULL`` if not needed.
215
216 This function is not called if the module state was requested but is not
217 allocated yet. This is the case immediately after the module is created
218 and before the module is executed (:c:data:`Py_mod_exec` function). More
219 precisely, this function is not called if :c:member:`m_size` is greater
220 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
221 is ``NULL``.
222
223 .. versionchanged:: 3.9
224 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000225
Georg Brandl60203b42010-10-06 10:11:56 +0000226 .. c:member:: freefunc m_free
Georg Brandle69cdf92009-01-04 23:20:14 +0000227
Victor Stinner5b1ef202020-03-17 18:09:46 +0100228 A function to call during deallocation of the module object, or ``NULL``
229 if not needed.
230
231 This function is not called if the module state was requested but is not
232 allocated yet. This is the case immediately after the module is created
233 and before the module is executed (:c:data:`Py_mod_exec` function). More
234 precisely, this function is not called if :c:member:`m_size` is greater
235 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
236 is ``NULL``.
237
238 .. versionchanged:: 3.9
239 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000240
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000241Single-phase initialization
242...........................
243
Nick Coghland5cacbb2015-05-23 22:24:10 +1000244The module initialization function may create and return the module object
245directly. This is referred to as "single-phase initialization", and uses one
246of the following two module creation functions:
247
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000248.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000249
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000250 Create a new module object, given the definition in *def*. This behaves
Nick Coghland5cacbb2015-05-23 22:24:10 +1000251 like :c:func:`PyModule_Create2` with *module_api_version* set to
252 :const:`PYTHON_API_VERSION`.
253
254
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000255.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000256
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000257 Create a new module object, given the definition in *def*, assuming the
Nick Coghland5cacbb2015-05-23 22:24:10 +1000258 API version *module_api_version*. If that version does not match the version
259 of the running interpreter, a :exc:`RuntimeWarning` is emitted.
260
261 .. note::
262
263 Most uses of this function should be using :c:func:`PyModule_Create`
264 instead; only use this if you are sure you need it.
265
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000266Before it is returned from in the initialization function, the resulting module
267object is typically populated using functions like :c:func:`PyModule_AddObject`.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000268
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000269.. _multi-phase-initialization:
Nick Coghland5cacbb2015-05-23 22:24:10 +1000270
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000271Multi-phase initialization
272..........................
273
274An alternate way to specify extensions is to request "multi-phase initialization".
275Extension modules created this way behave more like Python modules: the
276initialization is split between the *creation phase*, when the module object
277is created, and the *execution phase*, when it is populated.
278The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
279of classes.
280
281Unlike modules created using single-phase initialization, these modules are not
282singletons: if the *sys.modules* entry is removed and the module is re-imported,
283a new module object is created, and the old module is subject to normal garbage
284collection -- as with Python modules.
285By default, multiple modules created from the same definition should be
286independent: changes to one should not affect the others.
287This means that all state should be specific to the module object (using e.g.
288using :c:func:`PyModule_GetState`), or its contents (such as the module's
289:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
290
291All modules created using multi-phase initialization are expected to support
292:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
293are independent is typically enough to achieve this.
294
295To request multi-phase initialization, the initialization function
296(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
297:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
298instance must be initialized with the following function:
299
300.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000301
302 Ensures a module definition is a properly initialized Python object that
303 correctly reports its type and reference count.
304
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200305 Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000306
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000307 .. versionadded:: 3.5
308
309The *m_slots* member of the module definition must point to an array of
310``PyModuleDef_Slot`` structures:
311
312.. c:type:: PyModuleDef_Slot
313
314 .. c:member:: int slot
315
316 A slot ID, chosen from the available values explained below.
317
318 .. c:member:: void* value
319
320 Value of the slot, whose meaning depends on the slot ID.
321
322 .. versionadded:: 3.5
323
324The *m_slots* array must be terminated by a slot with id 0.
325
326The available slot types are:
327
328.. c:var:: Py_mod_create
329
330 Specifies a function that is called to create the module object itself.
331 The *value* pointer of this slot must point to a function of the signature:
332
333 .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
334
335 The function receives a :py:class:`~importlib.machinery.ModuleSpec`
336 instance, as defined in :PEP:`451`, and the module definition.
337 It should return a new module object, or set an error
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200338 and return ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000339
340 This function should be kept minimal. In particular, it should not
341 call arbitrary Python code, as trying to import the same module again may
342 result in an infinite loop.
343
344 Multiple ``Py_mod_create`` slots may not be specified in one module
345 definition.
346
347 If ``Py_mod_create`` is not specified, the import machinery will create
348 a normal module object using :c:func:`PyModule_New`. The name is taken from
349 *spec*, not the definition, to allow extension modules to dynamically adjust
350 to their place in the module hierarchy and be imported under different
351 names through symlinks, all while sharing a single module definition.
352
353 There is no requirement for the returned object to be an instance of
354 :c:type:`PyModule_Type`. Any type can be used, as long as it supports
355 setting and getting import-related attributes.
356 However, only ``PyModule_Type`` instances may be returned if the
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200357 ``PyModuleDef`` has non-``NULL`` ``m_traverse``, ``m_clear``,
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000358 ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
359
360.. c:var:: Py_mod_exec
361
362 Specifies a function that is called to *execute* the module.
363 This is equivalent to executing the code of a Python module: typically,
364 this function adds classes and constants to the module.
365 The signature of the function is:
366
367 .. c:function:: int exec_module(PyObject* module)
368
369 If multiple ``Py_mod_exec`` slots are specified, they are processed in the
370 order they appear in the *m_slots* array.
371
372See :PEP:`489` for more details on multi-phase initialization.
373
374Low-level module creation functions
375...................................
376
377The following functions are called under the hood when using multi-phase
378initialization. They can be used directly, for example when creating module
379objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
380``PyModule_ExecDef`` must be called to fully initialize a module.
381
382.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
383
384 Create a new module object, given the definition in *module* and the
385 ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2`
386 with *module_api_version* set to :const:`PYTHON_API_VERSION`.
387
388 .. versionadded:: 3.5
389
390.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
391
392 Create a new module object, given the definition in *module* and the
393 ModuleSpec *spec*, assuming the API version *module_api_version*.
394 If that version does not match the version of the running interpreter,
395 a :exc:`RuntimeWarning` is emitted.
396
397 .. note::
398
399 Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
400 instead; only use this if you are sure you need it.
401
402 .. versionadded:: 3.5
403
404.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
405
406 Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
407
408 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000409
410.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
411
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000412 Set the docstring for *module* to *docstring*.
413 This function is called automatically when creating a module from
414 ``PyModuleDef``, using either ``PyModule_Create`` or
415 ``PyModule_FromDefAndSpec``.
416
417 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000418
419.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
420
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200421 Add the functions from the ``NULL`` terminated *functions* array to *module*.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000422 Refer to the :c:type:`PyMethodDef` documentation for details on individual
423 entries (due to the lack of a shared module namespace, module level
424 "functions" implemented in C typically receive the module as their first
425 parameter, making them similar to instance methods on Python classes).
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000426 This function is called automatically when creating a module from
427 ``PyModuleDef``, using either ``PyModule_Create`` or
428 ``PyModule_FromDefAndSpec``.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000429
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000430 .. versionadded:: 3.5
431
432Support functions
433.................
434
435The module initialization function (if using single phase initialization) or
436a function called from a module execution slot (if using multi-phase
437initialization), can use the following functions to help initialize the module
438state:
Georg Brandle69cdf92009-01-04 23:20:14 +0000439
Georg Brandl60203b42010-10-06 10:11:56 +0000440.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000441
442 Add an object to *module* as *name*. This is a convenience function which can
443 be used from the module's initialization function. This steals a reference to
Dong-hee Na05e4a292020-03-23 01:17:34 +0900444 *value* on success. Return ``-1`` on error, ``0`` on success.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700445
446 .. note::
447
448 Unlike other functions that steal references, ``PyModule_AddObject()`` only
449 decrements the reference count of *value* **on success**.
450
451 This means that its return value must be checked, and calling code must
452 :c:func:`Py_DECREF` *value* manually on error. Example usage::
453
454 Py_INCREF(spam);
455 if (PyModule_AddObject(module, "spam", spam) < 0) {
456 Py_DECREF(module);
457 Py_DECREF(spam);
458 return NULL;
459 }
Georg Brandl54a3faa2008-01-20 09:30:57 +0000460
Georg Brandl60203b42010-10-06 10:11:56 +0000461.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000462
463 Add an integer constant to *module* as *name*. This convenience function can be
464 used from the module's initialization function. Return ``-1`` on error, ``0`` on
465 success.
466
467
Georg Brandl60203b42010-10-06 10:11:56 +0000468.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000469
470 Add a string constant to *module* as *name*. This convenience function can be
471 used from the module's initialization function. The string *value* must be
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200472 ``NULL``-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000473
474
Georg Brandl60203b42010-10-06 10:11:56 +0000475.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000476
Georg Brandl48310cd2009-01-03 21:18:54 +0000477 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500478 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000479 constant *AF_INET* with the value of *AF_INET* to *module*.
480 Return ``-1`` on error, ``0`` on success.
481
482
Georg Brandl60203b42010-10-06 10:11:56 +0000483.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000484
485 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000486
Dong-hee Na05e4a292020-03-23 01:17:34 +0900487.. c:function:: int PyModule_AddType(PyObject *module, PyTypeObject *type)
488
489 Add a type object to *module*.
490 The type object is finalized by calling internally :c:func:`PyType_Ready`.
491 The name of the type object is taken from the last component of
492 :c:member:`~PyTypeObject.tp_name` after dot.
493 Return ``-1`` on error, ``0`` on success.
494
495 .. versionadded:: 3.9
496
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000497
498Module lookup
499^^^^^^^^^^^^^
500
501Single-phase initialization creates singleton modules that can be looked up
502in the context of the current interpreter. This allows the module object to be
503retrieved later with only a reference to the module definition.
504
505These functions will not work on modules created using multi-phase initialization,
506since multiple such modules can be created from a single definition.
507
508.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
509
510 Returns the module object that was created from *def* for the current interpreter.
511 This method requires that the module object has been attached to the interpreter state with
512 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200513 found or has not been attached to the interpreter state yet, it returns ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000514
515.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
516
517 Attaches the module object passed to the function to the interpreter state. This allows
518 the module object to be accessible via :c:func:`PyState_FindModule`.
519
520 Only effective on modules created using single-phase initialization.
521
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100522 Python calls ``PyState_AddModule`` automatically after importing a module,
523 so it is unnecessary (but harmless) to call it from module initialization
524 code. An explicit call is needed only if the module's own init code
525 subsequently calls ``PyState_FindModule``.
526 The function is mainly intended for implementing alternative import
527 mechanisms (either by calling it directly, or by referring to its
528 implementation for details of the required state updates).
529
530 Return 0 on success or -1 on failure.
531
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000532 .. versionadded:: 3.3
533
534.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
535
536 Removes the module object created from *def* from the interpreter state.
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100537 Return 0 on success or -1 on failure.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000538
539 .. versionadded:: 3.3