blob: 41a705d9e9915610fc781f8925e3893f66c54ab1 [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
Brad Solomonb54e46c2020-04-26 22:31:44 -0400156 :c:macro:`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
Victor Stinner80218752020-11-04 13:59:15 +0100267object is typically populated using functions like :c:func:`PyModule_AddObjectRef`.
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
Victor Stinner474652f2020-08-13 22:11:50 +0200328.. c:macro:: Py_mod_create
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000329
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
Victor Stinner474652f2020-08-13 22:11:50 +0200360.. c:macro:: Py_mod_exec
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000361
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
Victor Stinner80218752020-11-04 13:59:15 +0100440.. c:function:: int PyModule_AddObjectRef(PyObject *module, const char *name, PyObject *value)
441
442 Add an object to *module* as *name*. This is a convenience function which
443 can be used from the module's initialization function.
444
445 On success, return ``0``. On error, raise an exception and return ``-1``.
446
447 Return ``NULL`` if *value* is ``NULL``. It must be called with an exception
448 raised in this case.
449
450 Example usage::
451
452 static int
453 add_spam(PyObject *module, int value)
454 {
455 PyObject *obj = PyLong_FromLong(value);
456 if (obj == NULL) {
457 return -1;
458 }
459 int res = PyModule_AddObjectRef(module, "spam", obj);
460 Py_DECREF(obj);
461 return res;
462 }
463
464 The example can also be written without checking explicitly if *obj* is
465 ``NULL``::
466
467 static int
468 add_spam(PyObject *module, int value)
469 {
470 PyObject *obj = PyLong_FromLong(value);
471 int res = PyModule_AddObjectRef(module, "spam", obj);
472 Py_XDECREF(obj);
473 return res;
474 }
475
476 Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in
477 this case, since *obj* can be ``NULL``.
478
479 .. versionadded:: 3.10
480
481
Georg Brandl60203b42010-10-06 10:11:56 +0000482.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000483
Victor Stinner80218752020-11-04 13:59:15 +0100484 Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to
485 *value* on success (if it returns ``0``).
486
487 The new :c:func:`PyModule_AddObjectRef` function is recommended, since it is
488 easy to introduce reference leaks by misusing the
489 :c:func:`PyModule_AddObject` function.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700490
491 .. note::
492
Victor Stinner80218752020-11-04 13:59:15 +0100493 Unlike other functions that steal references, ``PyModule_AddObject()``
494 only decrements the reference count of *value* **on success**.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700495
496 This means that its return value must be checked, and calling code must
Victor Stinner80218752020-11-04 13:59:15 +0100497 :c:func:`Py_DECREF` *value* manually on error.
Brandt Bucher224b8aa2019-09-12 05:11:20 -0700498
Victor Stinner80218752020-11-04 13:59:15 +0100499 Example usage::
500
501 static int
502 add_spam(PyObject *module, int value)
503 {
504 PyObject *obj = PyLong_FromLong(value);
505 if (obj == NULL) {
506 return -1;
507 }
508 if (PyModule_AddObject(module, "spam", obj) < 0) {
509 Py_DECREF(obj);
510 return -1;
511 }
512 // PyModule_AddObject() stole a reference to obj:
513 // Py_DECREF(obj) is not needed here
514 return 0;
515 }
516
517 The example can also be written without checking explicitly if *obj* is
518 ``NULL``::
519
520 static int
521 add_spam(PyObject *module, int value)
522 {
523 PyObject *obj = PyLong_FromLong(value);
524 if (PyModule_AddObject(module, "spam", obj) < 0) {
525 Py_XDECREF(obj);
526 return -1;
527 }
528 // PyModule_AddObject() stole a reference to obj:
529 // Py_DECREF(obj) is not needed here
530 return 0;
531 }
532
533 Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in
534 this case, since *obj* can be ``NULL``.
535
Georg Brandl54a3faa2008-01-20 09:30:57 +0000536
Georg Brandl60203b42010-10-06 10:11:56 +0000537.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000538
539 Add an integer constant to *module* as *name*. This convenience function can be
540 used from the module's initialization function. Return ``-1`` on error, ``0`` on
541 success.
542
543
Georg Brandl60203b42010-10-06 10:11:56 +0000544.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000545
546 Add a string constant to *module* as *name*. This convenience function can be
547 used from the module's initialization function. The string *value* must be
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200548 ``NULL``-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000549
550
Georg Brandl60203b42010-10-06 10:11:56 +0000551.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000552
Georg Brandl48310cd2009-01-03 21:18:54 +0000553 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500554 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000555 constant *AF_INET* with the value of *AF_INET* to *module*.
556 Return ``-1`` on error, ``0`` on success.
557
558
Georg Brandl60203b42010-10-06 10:11:56 +0000559.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000560
561 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000562
Dong-hee Na05e4a292020-03-23 01:17:34 +0900563.. c:function:: int PyModule_AddType(PyObject *module, PyTypeObject *type)
564
565 Add a type object to *module*.
566 The type object is finalized by calling internally :c:func:`PyType_Ready`.
567 The name of the type object is taken from the last component of
568 :c:member:`~PyTypeObject.tp_name` after dot.
569 Return ``-1`` on error, ``0`` on success.
570
571 .. versionadded:: 3.9
572
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000573
574Module lookup
575^^^^^^^^^^^^^
576
577Single-phase initialization creates singleton modules that can be looked up
578in the context of the current interpreter. This allows the module object to be
579retrieved later with only a reference to the module definition.
580
581These functions will not work on modules created using multi-phase initialization,
582since multiple such modules can be created from a single definition.
583
584.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
585
586 Returns the module object that was created from *def* for the current interpreter.
587 This method requires that the module object has been attached to the interpreter state with
588 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
Serhiy Storchaka25fc0882019-10-30 12:03:20 +0200589 found or has not been attached to the interpreter state yet, it returns ``NULL``.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000590
591.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
592
593 Attaches the module object passed to the function to the interpreter state. This allows
594 the module object to be accessible via :c:func:`PyState_FindModule`.
595
596 Only effective on modules created using single-phase initialization.
597
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100598 Python calls ``PyState_AddModule`` automatically after importing a module,
599 so it is unnecessary (but harmless) to call it from module initialization
600 code. An explicit call is needed only if the module's own init code
601 subsequently calls ``PyState_FindModule``.
602 The function is mainly intended for implementing alternative import
603 mechanisms (either by calling it directly, or by referring to its
604 implementation for details of the required state updates).
605
Victor Stinner71a35222020-03-26 22:46:14 +0100606 The caller must hold the GIL.
607
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100608 Return 0 on success or -1 on failure.
609
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000610 .. versionadded:: 3.3
611
612.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
613
614 Removes the module object created from *def* from the interpreter state.
Petr Viktorin9bc94ec2019-11-01 16:47:05 +0100615 Return 0 on success or -1 on failure.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000616
Victor Stinner71a35222020-03-26 22:46:14 +0100617 The caller must hold the GIL.
618
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000619 .. versionadded:: 3.3