blob: 97a63546a9d8be5873051a166888ca2d1bb1494d [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
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
Martin Panter6245cb32016-04-15 02:14:19 +000053 Similar to :c:func:`PyImport_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
62 is the same as the :attr:`__dict__` attribute of the module object. This
63 function never fails. It is recommended extensions use other
Georg Brandl60203b42010-10-06 10:11:56 +000064 :c:func:`PyModule_\*` and :c:func:`PyObject_\*` functions rather than directly
Georg Brandl54a3faa2008-01-20 09:30:57 +000065 manipulate a module's :attr:`__dict__`.
66
67
Victor Stinnerbd475112011-02-23 00:21:43 +000068.. c:function:: PyObject* PyModule_GetNameObject(PyObject *module)
Georg Brandl54a3faa2008-01-20 09:30:57 +000069
70 .. index::
71 single: __name__ (module attribute)
72 single: SystemError (built-in exception)
73
74 Return *module*'s :attr:`__name__` value. If the module does not provide one,
75 or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
76
Victor Stinnerbd475112011-02-23 00:21:43 +000077 .. versionadded:: 3.3
Georg Brandl54a3faa2008-01-20 09:30:57 +000078
Georg Brandl54a3faa2008-01-20 09:30:57 +000079
Victor Stinnerbd475112011-02-23 00:21:43 +000080.. c:function:: char* PyModule_GetName(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +000081
Victor Stinnerbd475112011-02-23 00:21:43 +000082 Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to
83 ``'utf-8'``.
Victor Stinner6c00c142010-08-17 23:37:11 +000084
Nick Coghlan2ab5b092015-07-03 19:49:15 +100085.. c:function:: void* PyModule_GetState(PyObject *module)
86
87 Return the "state" of the module, that is, a pointer to the block of memory
88 allocated at module creation time, or *NULL*. See
89 :c:member:`PyModuleDef.m_size`.
90
91
92.. c:function:: PyModuleDef* PyModule_GetDef(PyObject *module)
93
94 Return a pointer to the :c:type:`PyModuleDef` struct from which the module was
95 created, or *NULL* if the module wasn't created from a definition.
96
Victor Stinner6c00c142010-08-17 23:37:11 +000097
Georg Brandl60203b42010-10-06 10:11:56 +000098.. c:function:: PyObject* PyModule_GetFilenameObject(PyObject *module)
Victor Stinner6c00c142010-08-17 23:37:11 +000099
Georg Brandl54a3faa2008-01-20 09:30:57 +0000100 .. index::
101 single: __file__ (module attribute)
102 single: SystemError (built-in exception)
103
104 Return the name of the file from which *module* was loaded using *module*'s
Victor Stinner6c00c142010-08-17 23:37:11 +0000105 :attr:`__file__` attribute. If this is not defined, or if it is not a
106 unicode string, raise :exc:`SystemError` and return *NULL*; otherwise return
Georg Brandldb6c7f52011-10-07 11:19:11 +0200107 a reference to a Unicode object.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000108
Victor Stinnerc14190d2010-08-18 10:57:33 +0000109 .. versionadded:: 3.2
110
Georg Brandl54a3faa2008-01-20 09:30:57 +0000111
Victor Stinnerbd475112011-02-23 00:21:43 +0000112.. c:function:: char* PyModule_GetFilename(PyObject *module)
113
114 Similar to :c:func:`PyModule_GetFilenameObject` but return the filename
115 encoded to 'utf-8'.
116
117 .. deprecated:: 3.2
118 :c:func:`PyModule_GetFilename` raises :c:type:`UnicodeEncodeError` on
119 unencodable filenames, use :c:func:`PyModule_GetFilenameObject` instead.
120
121
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000122.. _initializing-modules:
Georg Brandle69cdf92009-01-04 23:20:14 +0000123
124Initializing C modules
125^^^^^^^^^^^^^^^^^^^^^^
126
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000127Modules objects are usually created from extension modules (shared libraries
128which export an initialization function), or compiled-in modules
129(where the initialization function is added using :c:func:`PyImport_AppendInittab`).
130See :ref:`building` or :ref:`extending-with-embedding` for details.
131
132The initialization function can either pass pass a module definition instance
133to :c:func:`PyModule_Create`, and return the resulting module object,
134or request "multi-phase initialization" by returning the definition struct itself.
135
Georg Brandl60203b42010-10-06 10:11:56 +0000136.. c:type:: PyModuleDef
Georg Brandle69cdf92009-01-04 23:20:14 +0000137
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000138 The module definition struct, which holds all information needed to create
139 a module object. There is usually only one statically initialized variable
140 of this type for each module.
Georg Brandle69cdf92009-01-04 23:20:14 +0000141
Georg Brandl60203b42010-10-06 10:11:56 +0000142 .. c:member:: PyModuleDef_Base m_base
Georg Brandle69cdf92009-01-04 23:20:14 +0000143
144 Always initialize this member to :const:`PyModuleDef_HEAD_INIT`.
145
Georg Brandl60203b42010-10-06 10:11:56 +0000146 .. c:member:: char* m_name
Georg Brandle69cdf92009-01-04 23:20:14 +0000147
148 Name for the new module.
149
Georg Brandl60203b42010-10-06 10:11:56 +0000150 .. c:member:: char* m_doc
Georg Brandle69cdf92009-01-04 23:20:14 +0000151
152 Docstring for the module; usually a docstring variable created with
Georg Brandl60203b42010-10-06 10:11:56 +0000153 :c:func:`PyDoc_STRVAR` is used.
Georg Brandle69cdf92009-01-04 23:20:14 +0000154
Georg Brandl60203b42010-10-06 10:11:56 +0000155 .. c:member:: Py_ssize_t m_size
Georg Brandle69cdf92009-01-04 23:20:14 +0000156
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000157 Module state may be kept in a per-module memory area that can be
158 retrieved with :c:func:`PyModule_GetState`, rather than in static globals.
159 This makes modules safe for use in multiple sub-interpreters.
Georg Brandle69cdf92009-01-04 23:20:14 +0000160
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000161 This memory area is allocated based on *m_size* on module creation,
162 and freed when the module object is deallocated, after the
163 :c:member:`m_free` function has been called, if present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000164
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000165 Setting ``m_size`` to ``-1`` means that the module does not support
166 sub-interpreters, because it has global state.
167
168 Setting it to a non-negative value means that the module can be
169 re-initialized and specifies the additional amount of memory it requires
170 for its state. Non-negative ``m_size`` is required for multi-phase
171 initialization.
Eli Bendersky0d2d2b82013-08-07 05:52:20 -0700172
173 See :PEP:`3121` for more details.
174
Georg Brandl60203b42010-10-06 10:11:56 +0000175 .. c:member:: PyMethodDef* m_methods
Georg Brandle69cdf92009-01-04 23:20:14 +0000176
177 A pointer to a table of module-level functions, described by
Georg Brandl60203b42010-10-06 10:11:56 +0000178 :c:type:`PyMethodDef` values. Can be *NULL* if no functions are present.
Georg Brandle69cdf92009-01-04 23:20:14 +0000179
Nick Coghland5cacbb2015-05-23 22:24:10 +1000180 .. c:member:: PyModuleDef_Slot* m_slots
Georg Brandle69cdf92009-01-04 23:20:14 +0000181
Nick Coghland5cacbb2015-05-23 22:24:10 +1000182 An array of slot definitions for multi-phase initialization, terminated by
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000183 a ``{0, NULL}`` entry.
184 When using single-phase initialization, *m_slots* must be *NULL*.
185
186 .. versionchanged:: 3.5
187
188 Prior to version 3.5, this member was always set to *NULL*,
189 and was defined as:
190
191 .. c:member:: inquiry m_reload
Georg Brandle69cdf92009-01-04 23:20:14 +0000192
Georg Brandl60203b42010-10-06 10:11:56 +0000193 .. c:member:: traverseproc m_traverse
Georg Brandle69cdf92009-01-04 23:20:14 +0000194
195 A traversal function to call during GC traversal of the module object, or
196 *NULL* if not needed.
197
Georg Brandl60203b42010-10-06 10:11:56 +0000198 .. c:member:: inquiry m_clear
Georg Brandle69cdf92009-01-04 23:20:14 +0000199
200 A clear function to call during GC clearing of the module object, or
201 *NULL* if not needed.
202
Georg Brandl60203b42010-10-06 10:11:56 +0000203 .. c:member:: freefunc m_free
Georg Brandle69cdf92009-01-04 23:20:14 +0000204
205 A function to call during deallocation of the module object, or *NULL* if
206 not needed.
207
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000208Single-phase initialization
209...........................
210
Nick Coghland5cacbb2015-05-23 22:24:10 +1000211The module initialization function may create and return the module object
212directly. This is referred to as "single-phase initialization", and uses one
213of the following two module creation functions:
214
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000215.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000216
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000217 Create a new module object, given the definition in *def*. This behaves
Nick Coghland5cacbb2015-05-23 22:24:10 +1000218 like :c:func:`PyModule_Create2` with *module_api_version* set to
219 :const:`PYTHON_API_VERSION`.
220
221
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000222.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000223
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000224 Create a new module object, given the definition in *def*, assuming the
Nick Coghland5cacbb2015-05-23 22:24:10 +1000225 API version *module_api_version*. If that version does not match the version
226 of the running interpreter, a :exc:`RuntimeWarning` is emitted.
227
228 .. note::
229
230 Most uses of this function should be using :c:func:`PyModule_Create`
231 instead; only use this if you are sure you need it.
232
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000233Before it is returned from in the initialization function, the resulting module
234object is typically populated using functions like :c:func:`PyModule_AddObject`.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000235
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000236.. _multi-phase-initialization:
Nick Coghland5cacbb2015-05-23 22:24:10 +1000237
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000238Multi-phase initialization
239..........................
240
241An alternate way to specify extensions is to request "multi-phase initialization".
242Extension modules created this way behave more like Python modules: the
243initialization is split between the *creation phase*, when the module object
244is created, and the *execution phase*, when it is populated.
245The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
246of classes.
247
248Unlike modules created using single-phase initialization, these modules are not
249singletons: if the *sys.modules* entry is removed and the module is re-imported,
250a new module object is created, and the old module is subject to normal garbage
251collection -- as with Python modules.
252By default, multiple modules created from the same definition should be
253independent: changes to one should not affect the others.
254This means that all state should be specific to the module object (using e.g.
255using :c:func:`PyModule_GetState`), or its contents (such as the module's
256:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
257
258All modules created using multi-phase initialization are expected to support
259:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
260are independent is typically enough to achieve this.
261
262To request multi-phase initialization, the initialization function
263(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
264:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
265instance must be initialized with the following function:
266
267.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000268
269 Ensures a module definition is a properly initialized Python object that
270 correctly reports its type and reference count.
271
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000272 Returns *def* cast to ``PyObject*``, or *NULL* if an error occurred.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000273
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000274 .. versionadded:: 3.5
275
276The *m_slots* member of the module definition must point to an array of
277``PyModuleDef_Slot`` structures:
278
279.. c:type:: PyModuleDef_Slot
280
281 .. c:member:: int slot
282
283 A slot ID, chosen from the available values explained below.
284
285 .. c:member:: void* value
286
287 Value of the slot, whose meaning depends on the slot ID.
288
289 .. versionadded:: 3.5
290
291The *m_slots* array must be terminated by a slot with id 0.
292
293The available slot types are:
294
295.. c:var:: Py_mod_create
296
297 Specifies a function that is called to create the module object itself.
298 The *value* pointer of this slot must point to a function of the signature:
299
300 .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
301
302 The function receives a :py:class:`~importlib.machinery.ModuleSpec`
303 instance, as defined in :PEP:`451`, and the module definition.
304 It should return a new module object, or set an error
305 and return *NULL*.
306
307 This function should be kept minimal. In particular, it should not
308 call arbitrary Python code, as trying to import the same module again may
309 result in an infinite loop.
310
311 Multiple ``Py_mod_create`` slots may not be specified in one module
312 definition.
313
314 If ``Py_mod_create`` is not specified, the import machinery will create
315 a normal module object using :c:func:`PyModule_New`. The name is taken from
316 *spec*, not the definition, to allow extension modules to dynamically adjust
317 to their place in the module hierarchy and be imported under different
318 names through symlinks, all while sharing a single module definition.
319
320 There is no requirement for the returned object to be an instance of
321 :c:type:`PyModule_Type`. Any type can be used, as long as it supports
322 setting and getting import-related attributes.
323 However, only ``PyModule_Type`` instances may be returned if the
324 ``PyModuleDef`` has non-*NULL* ``m_methods``, ``m_traverse``, ``m_clear``,
325 ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
326
327.. c:var:: Py_mod_exec
328
329 Specifies a function that is called to *execute* the module.
330 This is equivalent to executing the code of a Python module: typically,
331 this function adds classes and constants to the module.
332 The signature of the function is:
333
334 .. c:function:: int exec_module(PyObject* module)
335
336 If multiple ``Py_mod_exec`` slots are specified, they are processed in the
337 order they appear in the *m_slots* array.
338
339See :PEP:`489` for more details on multi-phase initialization.
340
341Low-level module creation functions
342...................................
343
344The following functions are called under the hood when using multi-phase
345initialization. They can be used directly, for example when creating module
346objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
347``PyModule_ExecDef`` must be called to fully initialize a module.
348
349.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
350
351 Create a new module object, given the definition in *module* and the
352 ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2`
353 with *module_api_version* set to :const:`PYTHON_API_VERSION`.
354
355 .. versionadded:: 3.5
356
357.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
358
359 Create a new module object, given the definition in *module* and the
360 ModuleSpec *spec*, assuming the API version *module_api_version*.
361 If that version does not match the version of the running interpreter,
362 a :exc:`RuntimeWarning` is emitted.
363
364 .. note::
365
366 Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
367 instead; only use this if you are sure you need it.
368
369 .. versionadded:: 3.5
370
371.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
372
373 Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
374
375 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000376
377.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
378
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000379 Set the docstring for *module* to *docstring*.
380 This function is called automatically when creating a module from
381 ``PyModuleDef``, using either ``PyModule_Create`` or
382 ``PyModule_FromDefAndSpec``.
383
384 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000385
386.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
387
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000388 Add the functions from the *NULL* terminated *functions* array to *module*.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000389 Refer to the :c:type:`PyMethodDef` documentation for details on individual
390 entries (due to the lack of a shared module namespace, module level
391 "functions" implemented in C typically receive the module as their first
392 parameter, making them similar to instance methods on Python classes).
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000393 This function is called automatically when creating a module from
394 ``PyModuleDef``, using either ``PyModule_Create`` or
395 ``PyModule_FromDefAndSpec``.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000396
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000397 .. versionadded:: 3.5
398
399Support functions
400.................
401
402The module initialization function (if using single phase initialization) or
403a function called from a module execution slot (if using multi-phase
404initialization), can use the following functions to help initialize the module
405state:
Georg Brandle69cdf92009-01-04 23:20:14 +0000406
Georg Brandl60203b42010-10-06 10:11:56 +0000407.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000408
409 Add an object to *module* as *name*. This is a convenience function which can
410 be used from the module's initialization function. This steals a reference to
411 *value*. Return ``-1`` on error, ``0`` on success.
412
Georg Brandl60203b42010-10-06 10:11:56 +0000413.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000414
415 Add an integer constant to *module* as *name*. This convenience function can be
416 used from the module's initialization function. Return ``-1`` on error, ``0`` on
417 success.
418
419
Georg Brandl60203b42010-10-06 10:11:56 +0000420.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000421
422 Add a string constant to *module* as *name*. This convenience function can be
423 used from the module's initialization function. The string *value* must be
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000424 *NULL*-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000425
426
Georg Brandl60203b42010-10-06 10:11:56 +0000427.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000428
Georg Brandl48310cd2009-01-03 21:18:54 +0000429 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500430 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000431 constant *AF_INET* with the value of *AF_INET* to *module*.
432 Return ``-1`` on error, ``0`` on success.
433
434
Georg Brandl60203b42010-10-06 10:11:56 +0000435.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000436
437 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000438
439
440Module lookup
441^^^^^^^^^^^^^
442
443Single-phase initialization creates singleton modules that can be looked up
444in the context of the current interpreter. This allows the module object to be
445retrieved later with only a reference to the module definition.
446
447These functions will not work on modules created using multi-phase initialization,
448since multiple such modules can be created from a single definition.
449
450.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
451
452 Returns the module object that was created from *def* for the current interpreter.
453 This method requires that the module object has been attached to the interpreter state with
454 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
455 found or has not been attached to the interpreter state yet, it returns *NULL*.
456
457.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
458
459 Attaches the module object passed to the function to the interpreter state. This allows
460 the module object to be accessible via :c:func:`PyState_FindModule`.
461
462 Only effective on modules created using single-phase initialization.
463
464 .. versionadded:: 3.3
465
466.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
467
468 Removes the module object created from *def* from the interpreter state.
469
470 .. versionadded:: 3.3