blob: a2541afb685c30e2142cc728a6161a9b4c24f9da [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.
Antonio Cuni315fc522021-01-06 12:38:26 +010022 This function always succeeds.
Georg Brandl54a3faa2008-01-20 09:30:57 +000023
24
Georg Brandl60203b42010-10-06 10:11:56 +000025.. c:function:: int PyModule_CheckExact(PyObject *p)
Georg Brandl54a3faa2008-01-20 09:30:57 +000026
27 Return true if *p* is a module object, but not a subtype of
Antonio Cuni315fc522021-01-06 12:38:26 +010028 :c:data:`PyModule_Type`. This function always succeeds.
Georg Brandl54a3faa2008-01-20 09:30:57 +000029
30
Victor Stinner0639b562011-03-04 12:57:07 +000031.. c:function:: PyObject* PyModule_NewObject(PyObject *name)
Georg Brandl54a3faa2008-01-20 09:30:57 +000032
33 .. index::
34 single: __name__ (module attribute)
35 single: __doc__ (module attribute)
36 single: __file__ (module attribute)
Brett Cannon4c14b5d2013-05-04 13:56:58 -040037 single: __package__ (module attribute)
38 single: __loader__ (module attribute)
Georg Brandl54a3faa2008-01-20 09:30:57 +000039
40 Return a new module object with the :attr:`__name__` attribute set to *name*.
Brett Cannon4c14b5d2013-05-04 13:56:58 -040041 The module's :attr:`__name__`, :attr:`__doc__`, :attr:`__package__`, and
42 :attr:`__loader__` attributes are filled in (all but :attr:`__name__` are set
43 to ``None``); the caller is responsible for providing a :attr:`__file__`
44 attribute.
Georg Brandl54a3faa2008-01-20 09:30:57 +000045
Victor Stinner0639b562011-03-04 12:57:07 +000046 .. versionadded:: 3.3
47
Brett Cannon4c14b5d2013-05-04 13:56:58 -040048 .. versionchanged:: 3.4
49 :attr:`__package__` and :attr:`__loader__` are set to ``None``.
50
Victor Stinner0639b562011-03-04 12:57:07 +000051
52.. c:function:: PyObject* PyModule_New(const char *name)
53
Emily Morehouse2d0afef2017-06-13 11:58:18 -060054 Similar to :c:func:`PyModule_NewObject`, but the name is a UTF-8 encoded
Victor Stinner0639b562011-03-04 12:57:07 +000055 string instead of a Unicode object.
56
Georg Brandl54a3faa2008-01-20 09:30:57 +000057
Georg Brandl60203b42010-10-06 10:11:56 +000058.. c:function:: PyObject* PyModule_GetDict(PyObject *module)
Georg Brandl54a3faa2008-01-20 09:30:57 +000059
60 .. index:: single: __dict__ (module attribute)
61
62 Return the dictionary object that implements *module*'s namespace; this object
Berker Peksagc01e7662016-08-19 11:51:39 +030063 is the same as the :attr:`~object.__dict__` attribute of the module object.
64 If *module* is not a module object (or a subtype of a module object),
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020065 :exc:`SystemError` is raised and ``NULL`` is returned.
Berker Peksagc01e7662016-08-19 11:51:39 +030066
67 It is recommended extensions use other :c:func:`PyModule_\*` and
68 :c:func:`PyObject_\*` functions rather than directly manipulate a module's
69 :attr:`~object.__dict__`.
Georg Brandl54a3faa2008-01-20 09:30:57 +000070
71
Victor Stinnerbd475112011-02-23 00:21:43 +000072.. c:function:: PyObject* PyModule_GetNameObject(PyObject *module)
Georg Brandl54a3faa2008-01-20 09:30:57 +000073
74 .. index::
75 single: __name__ (module attribute)
76 single: SystemError (built-in exception)
77
78 Return *module*'s :attr:`__name__` value. If the module does not provide one,
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020079 or if it is not a string, :exc:`SystemError` is raised and ``NULL`` is returned.
Georg Brandl54a3faa2008-01-20 09:30:57 +000080
Victor Stinnerbd475112011-02-23 00:21:43 +000081 .. versionadded:: 3.3
Georg Brandl54a3faa2008-01-20 09:30:57 +000082
Georg Brandl54a3faa2008-01-20 09:30:57 +000083
Serhiy Storchaka84b8e922017-03-30 10:01:03 +030084.. c:function:: const char* PyModule_GetName(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +000085
Victor Stinnerbd475112011-02-23 00:21:43 +000086 Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to
87 ``'utf-8'``.
Victor Stinner6c00c142010-08-17 23:37:11 +000088
Nick Coghlan2ab5b092015-07-03 19:49:15 +100089.. c:function:: void* PyModule_GetState(PyObject *module)
90
91 Return the "state" of the module, that is, a pointer to the block of memory
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020092 allocated at module creation time, or ``NULL``. See
Nick Coghlan2ab5b092015-07-03 19:49:15 +100093 :c:member:`PyModuleDef.m_size`.
94
95
96.. c:function:: PyModuleDef* PyModule_GetDef(PyObject *module)
97
98 Return a pointer to the :c:type:`PyModuleDef` struct from which the module was
Serhiy Storchaka25fc0882019-10-30 12:03:20 +020099 created, or ``NULL`` if the module wasn't created from a definition.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000100
Victor Stinner6c00c142010-08-17 23:37:11 +0000101
Georg Brandl60203b42010-10-06 10:11:56 +0000102.. c:function:: PyObject* PyModule_GetFilenameObject(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +0000103
Georg Brandl54a3faa2008-01-20 09:30:57 +0000104 .. index::
105 single: __file__ (module attribute)
106 single: SystemError (built-in exception)
107
108 Return the name of the file from which *module* was loaded using *module*'s
Victor Stinner6c00c142010-08-17 23:37:11 +0000109 :attr:`__file__` attribute. If this is not defined, or if it is not a
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200110 unicode string, raise :exc:`SystemError` and return ``NULL``; otherwise return
Georg Brandldb6c7f52011-10-07 11:19:11 +0200111 a reference to a Unicode object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000112
Victor Stinnerc14190d2010-08-18 10:57:33 +0000113 .. versionadded:: 3.2
114
Georg Brandl54a3faa2008-01-20 09:30:57 +0000115
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300116.. c:function:: const char* PyModule_GetFilename(PyObject *module)
Victor Stinnerbd475112011-02-23 00:21:43 +0000117
118 Similar to :c:func:`PyModule_GetFilenameObject` but return the filename
119 encoded to 'utf-8'.
120
121 .. deprecated:: 3.2
122 :c:func:`PyModule_GetFilename` raises :c:type:`UnicodeEncodeError` on
123 unencodable filenames, use :c:func:`PyModule_GetFilenameObject` instead.
124
125
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000126.. _initializing-modules:
Georg Brandle69cdf92009-01-04 23:20:14 +0000127
128Initializing C modules
129^^^^^^^^^^^^^^^^^^^^^^
130
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000131Modules objects are usually created from extension modules (shared libraries
132which export an initialization function), or compiled-in modules
133(where the initialization function is added using :c:func:`PyImport_AppendInittab`).
134See :ref:`building` or :ref:`extending-with-embedding` for details.
135
Martin Pantera90a4a92016-05-30 04:04:50 +0000136The initialization function can either pass a module definition instance
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000137to :c:func:`PyModule_Create`, and return the resulting module object,
138or request "multi-phase initialization" by returning the definition struct itself.
139
Georg Brandl60203b42010-10-06 10:11:56 +0000140.. c:type:: PyModuleDef
Georg Brandle69cdf92009-01-04 23:20:14 +0000141
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000142 The module definition struct, which holds all information needed to create
143 a module object. There is usually only one statically initialized variable
144 of this type for each module.
Georg Brandle69cdf92009-01-04 23:20:14 +0000145
Georg Brandl60203b42010-10-06 10:11:56 +0000146 .. c:member:: PyModuleDef_Base m_base
Georg Brandle69cdf92009-01-04 23:20:14 +0000147
148 Always initialize this member to :const:`PyModuleDef_HEAD_INIT`.
149
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300150 .. c:member:: const char *m_name
Georg Brandle69cdf92009-01-04 23:20:14 +0000151
152 Name for the new module.
153
Serhiy Storchaka84b8e922017-03-30 10:01:03 +0300154 .. c:member:: const char *m_doc
Georg Brandle69cdf92009-01-04 23:20:14 +0000155
156 Docstring for the module; usually a docstring variable created with
Brad Solomonb54e46c2020-04-26 22:31:44 -0400157 :c:macro:`PyDoc_STRVAR` is used.
Georg Brandle69cdf92009-01-04 23:20:14 +0000158
Georg Brandl60203b42010-10-06 10:11:56 +0000159 .. c:member:: Py_ssize_t m_size
Georg Brandle69cdf92009-01-04 23:20:14 +0000160
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000161 Module state may be kept in a per-module memory area that can be
162 retrieved with :c:func:`PyModule_GetState`, rather than in static globals.
163 This makes modules safe for use in multiple sub-interpreters.
Georg Brandle69cdf92009-01-04 23:20:14 +0000164
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000165 This memory area is allocated based on *m_size* on module creation,
166 and freed when the module object is deallocated, after the
167 :c:member:`m_free` function has been called, if present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000168
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000169 Setting ``m_size`` to ``-1`` means that the module does not support
170 sub-interpreters, because it has global state.
171
172 Setting it to a non-negative value means that the module can be
173 re-initialized and specifies the additional amount of memory it requires
174 for its state. Non-negative ``m_size`` is required for multi-phase
175 initialization.
Eli Bendersky0d2d2b82013-08-07 05:52:20 -0700176
177 See :PEP:`3121` for more details.
178
Georg Brandl60203b42010-10-06 10:11:56 +0000179 .. c:member:: PyMethodDef* m_methods
Georg Brandle69cdf92009-01-04 23:20:14 +0000180
181 A pointer to a table of module-level functions, described by
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200182 :c:type:`PyMethodDef` values. Can be ``NULL`` if no functions are present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000183
Nick Coghland5cacbb2015-05-23 22:24:10 +1000184 .. c:member:: PyModuleDef_Slot* m_slots
Georg Brandle69cdf92009-01-04 23:20:14 +0000185
Nick Coghland5cacbb2015-05-23 22:24:10 +1000186 An array of slot definitions for multi-phase initialization, terminated by
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000187 a ``{0, NULL}`` entry.
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200188 When using single-phase initialization, *m_slots* must be ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000189
190 .. versionchanged:: 3.5
191
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200192 Prior to version 3.5, this member was always set to ``NULL``,
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000193 and was defined as:
194
195 .. c:member:: inquiry m_reload
Georg Brandle69cdf92009-01-04 23:20:14 +0000196
Georg Brandl60203b42010-10-06 10:11:56 +0000197 .. c:member:: traverseproc m_traverse
Georg Brandle69cdf92009-01-04 23:20:14 +0000198
199 A traversal function to call during GC traversal of the module object, or
Victor Stinner5b1ef202020-03-17 18:09:46 +0100200 ``NULL`` if not needed.
201
202 This function is not called if the module state was requested but is not
203 allocated yet. This is the case immediately after the module is created
204 and before the module is executed (:c:data:`Py_mod_exec` function). More
205 precisely, this function is not called if :c:member:`m_size` is greater
206 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
207 is ``NULL``.
208
209 .. versionchanged:: 3.9
210 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000211
Georg Brandl60203b42010-10-06 10:11:56 +0000212 .. c:member:: inquiry m_clear
Georg Brandle69cdf92009-01-04 23:20:14 +0000213
214 A clear function to call during GC clearing of the module object, or
Victor Stinner5b1ef202020-03-17 18:09:46 +0100215 ``NULL`` if not needed.
216
217 This function is not called if the module state was requested but is not
218 allocated yet. This is the case immediately after the module is created
219 and before the module is executed (:c:data:`Py_mod_exec` function). More
220 precisely, this function is not called if :c:member:`m_size` is greater
221 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
222 is ``NULL``.
223
224 .. versionchanged:: 3.9
225 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000226
Georg Brandl60203b42010-10-06 10:11:56 +0000227 .. c:member:: freefunc m_free
Georg Brandle69cdf92009-01-04 23:20:14 +0000228
Victor Stinner5b1ef202020-03-17 18:09:46 +0100229 A function to call during deallocation of the module object, or ``NULL``
230 if not needed.
231
232 This function is not called if the module state was requested but is not
233 allocated yet. This is the case immediately after the module is created
234 and before the module is executed (:c:data:`Py_mod_exec` function). More
235 precisely, this function is not called if :c:member:`m_size` is greater
236 than 0 and the module state (as returned by :c:func:`PyModule_GetState`)
237 is ``NULL``.
238
239 .. versionchanged:: 3.9
240 No longer called before the module state is allocated.
Georg Brandle69cdf92009-01-04 23:20:14 +0000241
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000242Single-phase initialization
243...........................
244
Nick Coghland5cacbb2015-05-23 22:24:10 +1000245The module initialization function may create and return the module object
246directly. This is referred to as "single-phase initialization", and uses one
247of the following two module creation functions:
248
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000249.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000250
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000251 Create a new module object, given the definition in *def*. This behaves
Nick Coghland5cacbb2015-05-23 22:24:10 +1000252 like :c:func:`PyModule_Create2` with *module_api_version* set to
253 :const:`PYTHON_API_VERSION`.
254
255
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000256.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000257
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000258 Create a new module object, given the definition in *def*, assuming the
Nick Coghland5cacbb2015-05-23 22:24:10 +1000259 API version *module_api_version*. If that version does not match the version
260 of the running interpreter, a :exc:`RuntimeWarning` is emitted.
261
262 .. note::
263
264 Most uses of this function should be using :c:func:`PyModule_Create`
265 instead; only use this if you are sure you need it.
266
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000267Before it is returned from in the initialization function, the resulting module
Victor Stinner80218752020-11-04 13:59:15 +0100268object is typically populated using functions like :c:func:`PyModule_AddObjectRef`.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000269
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000270.. _multi-phase-initialization:
Nick Coghland5cacbb2015-05-23 22:24:10 +1000271
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000272Multi-phase initialization
273..........................
274
275An alternate way to specify extensions is to request "multi-phase initialization".
276Extension modules created this way behave more like Python modules: the
277initialization is split between the *creation phase*, when the module object
278is created, and the *execution phase*, when it is populated.
279The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
280of classes.
281
282Unlike modules created using single-phase initialization, these modules are not
283singletons: if the *sys.modules* entry is removed and the module is re-imported,
284a new module object is created, and the old module is subject to normal garbage
285collection -- as with Python modules.
286By default, multiple modules created from the same definition should be
287independent: changes to one should not affect the others.
288This means that all state should be specific to the module object (using e.g.
289using :c:func:`PyModule_GetState`), or its contents (such as the module's
290:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
291
292All modules created using multi-phase initialization are expected to support
293:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
294are independent is typically enough to achieve this.
295
296To request multi-phase initialization, the initialization function
297(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
298:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
299instance must be initialized with the following function:
300
301.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000302
303 Ensures a module definition is a properly initialized Python object that
304 correctly reports its type and reference count.
305
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200306 Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000307
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000308 .. versionadded:: 3.5
309
310The *m_slots* member of the module definition must point to an array of
311``PyModuleDef_Slot`` structures:
312
313.. c:type:: PyModuleDef_Slot
314
315 .. c:member:: int slot
316
317 A slot ID, chosen from the available values explained below.
318
319 .. c:member:: void* value
320
321 Value of the slot, whose meaning depends on the slot ID.
322
323 .. versionadded:: 3.5
324
325The *m_slots* array must be terminated by a slot with id 0.
326
327The available slot types are:
328
Victor Stinner474652f2020-08-13 22:11:50 +0200329.. c:macro:: Py_mod_create
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000330
331 Specifies a function that is called to create the module object itself.
332 The *value* pointer of this slot must point to a function of the signature:
333
334 .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
335
336 The function receives a :py:class:`~importlib.machinery.ModuleSpec`
337 instance, as defined in :PEP:`451`, and the module definition.
338 It should return a new module object, or set an error
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200339 and return ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000340
341 This function should be kept minimal. In particular, it should not
342 call arbitrary Python code, as trying to import the same module again may
343 result in an infinite loop.
344
345 Multiple ``Py_mod_create`` slots may not be specified in one module
346 definition.
347
348 If ``Py_mod_create`` is not specified, the import machinery will create
349 a normal module object using :c:func:`PyModule_New`. The name is taken from
350 *spec*, not the definition, to allow extension modules to dynamically adjust
351 to their place in the module hierarchy and be imported under different
352 names through symlinks, all while sharing a single module definition.
353
354 There is no requirement for the returned object to be an instance of
355 :c:type:`PyModule_Type`. Any type can be used, as long as it supports
356 setting and getting import-related attributes.
357 However, only ``PyModule_Type`` instances may be returned if the
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200358 ``PyModuleDef`` has non-``NULL`` ``m_traverse``, ``m_clear``,
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000359 ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
360
Victor Stinner474652f2020-08-13 22:11:50 +0200361.. c:macro:: Py_mod_exec
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000362
363 Specifies a function that is called to *execute* the module.
364 This is equivalent to executing the code of a Python module: typically,
365 this function adds classes and constants to the module.
366 The signature of the function is:
367
368 .. c:function:: int exec_module(PyObject* module)
369
370 If multiple ``Py_mod_exec`` slots are specified, they are processed in the
371 order they appear in the *m_slots* array.
372
373See :PEP:`489` for more details on multi-phase initialization.
374
375Low-level module creation functions
376...................................
377
378The following functions are called under the hood when using multi-phase
379initialization. They can be used directly, for example when creating module
380objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
381``PyModule_ExecDef`` must be called to fully initialize a module.
382
383.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
384
385 Create a new module object, given the definition in *module* and the
386 ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2`
387 with *module_api_version* set to :const:`PYTHON_API_VERSION`.
388
389 .. versionadded:: 3.5
390
391.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
392
393 Create a new module object, given the definition in *module* and the
394 ModuleSpec *spec*, assuming the API version *module_api_version*.
395 If that version does not match the version of the running interpreter,
396 a :exc:`RuntimeWarning` is emitted.
397
398 .. note::
399
400 Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
401 instead; only use this if you are sure you need it.
402
403 .. versionadded:: 3.5
404
405.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
406
407 Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
408
409 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000410
411.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
412
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000413 Set the docstring for *module* to *docstring*.
414 This function is called automatically when creating a module from
415 ``PyModuleDef``, using either ``PyModule_Create`` or
416 ``PyModule_FromDefAndSpec``.
417
418 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000419
420.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
421
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200422 Add the functions from the ``NULL`` terminated *functions* array to *module*.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000423 Refer to the :c:type:`PyMethodDef` documentation for details on individual
424 entries (due to the lack of a shared module namespace, module level
425 "functions" implemented in C typically receive the module as their first
426 parameter, making them similar to instance methods on Python classes).
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000427 This function is called automatically when creating a module from
428 ``PyModuleDef``, using either ``PyModule_Create`` or
429 ``PyModule_FromDefAndSpec``.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000430
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000431 .. versionadded:: 3.5
432
433Support functions
434.................
435
436The module initialization function (if using single phase initialization) or
437a function called from a module execution slot (if using multi-phase
438initialization), can use the following functions to help initialize the module
439state:
Georg Brandle69cdf92009-01-04 23:20:14 +0000440
Victor Stinner80218752020-11-04 13:59:15 +0100441.. c:function:: int PyModule_AddObjectRef(PyObject *module, const char *name, PyObject *value)
442
443 Add an object to *module* as *name*. This is a convenience function which
444 can be used from the module's initialization function.
445
446 On success, return ``0``. On error, raise an exception and return ``-1``.
447
448 Return ``NULL`` if *value* is ``NULL``. It must be called with an exception
449 raised in this case.
450
451 Example usage::
452
453 static int
454 add_spam(PyObject *module, int value)
455 {
456 PyObject *obj = PyLong_FromLong(value);
457 if (obj == NULL) {
458 return -1;
459 }
460 int res = PyModule_AddObjectRef(module, "spam", obj);
461 Py_DECREF(obj);
462 return res;
463 }
464
465 The example can also be written without checking explicitly if *obj* is
466 ``NULL``::
467
468 static int
469 add_spam(PyObject *module, int value)
470 {
471 PyObject *obj = PyLong_FromLong(value);
472 int res = PyModule_AddObjectRef(module, "spam", obj);
473 Py_XDECREF(obj);
474 return res;
475 }
476
477 Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in
478 this case, since *obj* can be ``NULL``.
479
480 .. versionadded:: 3.10
481
482
Georg Brandl60203b42010-10-06 10:11:56 +0000483.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000484
Victor Stinner80218752020-11-04 13:59:15 +0100485 Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to
486 *value* on success (if it returns ``0``).
487
488 The new :c:func:`PyModule_AddObjectRef` function is recommended, since it is
489 easy to introduce reference leaks by misusing the
490 :c:func:`PyModule_AddObject` function.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700491
492 .. note::
493
Victor Stinner80218752020-11-04 13:59:15 +0100494 Unlike other functions that steal references, ``PyModule_AddObject()``
495 only decrements the reference count of *value* **on success**.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700496
497 This means that its return value must be checked, and calling code must
Victor Stinner80218752020-11-04 13:59:15 +0100498 :c:func:`Py_DECREF` *value* manually on error.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700499
Victor Stinner80218752020-11-04 13:59:15 +0100500 Example usage::
501
502 static int
503 add_spam(PyObject *module, int value)
504 {
505 PyObject *obj = PyLong_FromLong(value);
506 if (obj == NULL) {
507 return -1;
508 }
509 if (PyModule_AddObject(module, "spam", obj) < 0) {
510 Py_DECREF(obj);
511 return -1;
512 }
513 // PyModule_AddObject() stole a reference to obj:
514 // Py_DECREF(obj) is not needed here
515 return 0;
516 }
517
518 The example can also be written without checking explicitly if *obj* is
519 ``NULL``::
520
521 static int
522 add_spam(PyObject *module, int value)
523 {
524 PyObject *obj = PyLong_FromLong(value);
525 if (PyModule_AddObject(module, "spam", obj) < 0) {
526 Py_XDECREF(obj);
527 return -1;
528 }
529 // PyModule_AddObject() stole a reference to obj:
530 // Py_DECREF(obj) is not needed here
531 return 0;
532 }
533
534 Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in
535 this case, since *obj* can be ``NULL``.
536
Georg Brandl54a3faa2008-01-20 09:30:57 +0000537
Georg Brandl60203b42010-10-06 10:11:56 +0000538.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000539
540 Add an integer constant to *module* as *name*. This convenience function can be
541 used from the module's initialization function. Return ``-1`` on error, ``0`` on
542 success.
543
544
Georg Brandl60203b42010-10-06 10:11:56 +0000545.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000546
547 Add a string constant to *module* as *name*. This convenience function can be
548 used from the module's initialization function. The string *value* must be
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200549 ``NULL``-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000550
551
Georg Brandl60203b42010-10-06 10:11:56 +0000552.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000553
Georg Brandl48310cd2009-01-03 21:18:54 +0000554 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500555 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000556 constant *AF_INET* with the value of *AF_INET* to *module*.
557 Return ``-1`` on error, ``0`` on success.
558
559
Georg Brandl60203b42010-10-06 10:11:56 +0000560.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000561
562 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000563
Dong-hee Na05e4a292020-03-23 01:17:34 +0900564.. c:function:: int PyModule_AddType(PyObject *module, PyTypeObject *type)
565
566 Add a type object to *module*.
567 The type object is finalized by calling internally :c:func:`PyType_Ready`.
568 The name of the type object is taken from the last component of
569 :c:member:`~PyTypeObject.tp_name` after dot.
570 Return ``-1`` on error, ``0`` on success.
571
572 .. versionadded:: 3.9
573
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000574
575Module lookup
576^^^^^^^^^^^^^
577
578Single-phase initialization creates singleton modules that can be looked up
579in the context of the current interpreter. This allows the module object to be
580retrieved later with only a reference to the module definition.
581
582These functions will not work on modules created using multi-phase initialization,
583since multiple such modules can be created from a single definition.
584
585.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
586
587 Returns the module object that was created from *def* for the current interpreter.
588 This method requires that the module object has been attached to the interpreter state with
589 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200590 found or has not been attached to the interpreter state yet, it returns ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000591
592.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
593
594 Attaches the module object passed to the function to the interpreter state. This allows
595 the module object to be accessible via :c:func:`PyState_FindModule`.
596
597 Only effective on modules created using single-phase initialization.
598
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100599 Python calls ``PyState_AddModule`` automatically after importing a module,
600 so it is unnecessary (but harmless) to call it from module initialization
601 code. An explicit call is needed only if the module's own init code
602 subsequently calls ``PyState_FindModule``.
603 The function is mainly intended for implementing alternative import
604 mechanisms (either by calling it directly, or by referring to its
605 implementation for details of the required state updates).
606
Victor Stinner71a35222020-03-26 22:46:14 +0100607 The caller must hold the GIL.
608
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100609 Return 0 on success or -1 on failure.
610
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000611 .. versionadded:: 3.3
612
613.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
614
615 Removes the module object created from *def* from the interpreter state.
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100616 Return 0 on success or -1 on failure.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000617
Victor Stinner71a35222020-03-26 22:46:14 +0100618 The caller must hold the GIL.
619
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000620 .. versionadded:: 3.3