blob: e810c69b1d83a23c11cb38a32d80010af573ded2 [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
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),
64 :exc:`SystemError` is raised and *NULL* is returned.
65
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,
78 or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
79
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
Victor Stinnerbd475112011-02-23 00:21:43 +000083.. c:function:: 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
91 allocated at module creation time, or *NULL*. See
92 :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
98 created, or *NULL* if the module wasn't created from a definition.
99
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
109 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
Victor Stinnerbd475112011-02-23 00:21:43 +0000115.. c:function:: char* PyModule_GetFilename(PyObject *module)
116
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
Georg Brandl60203b42010-10-06 10:11:56 +0000149 .. c:member:: char* m_name
Georg Brandle69cdf92009-01-04 23:20:14 +0000150
151 Name for the new module.
152
Georg Brandl60203b42010-10-06 10:11:56 +0000153 .. c:member:: 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
Georg Brandl60203b42010-10-06 10:11:56 +0000181 :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.
187 When using single-phase initialization, *m_slots* must be *NULL*.
188
189 .. versionchanged:: 3.5
190
191 Prior to version 3.5, this member was always set to *NULL*,
192 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
199 *NULL* if not needed.
200
Georg Brandl60203b42010-10-06 10:11:56 +0000201 .. c:member:: inquiry m_clear
Georg Brandle69cdf92009-01-04 23:20:14 +0000202
203 A clear function to call during GC clearing of the module object, or
204 *NULL* if not needed.
205
Georg Brandl60203b42010-10-06 10:11:56 +0000206 .. c:member:: freefunc m_free
Georg Brandle69cdf92009-01-04 23:20:14 +0000207
208 A function to call during deallocation of the module object, or *NULL* if
209 not needed.
210
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000211Single-phase initialization
212...........................
213
Nick Coghland5cacbb2015-05-23 22:24:10 +1000214The module initialization function may create and return the module object
215directly. This is referred to as "single-phase initialization", and uses one
216of the following two module creation functions:
217
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000218.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000219
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000220 Create a new module object, given the definition in *def*. This behaves
Nick Coghland5cacbb2015-05-23 22:24:10 +1000221 like :c:func:`PyModule_Create2` with *module_api_version* set to
222 :const:`PYTHON_API_VERSION`.
223
224
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000225.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000226
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000227 Create a new module object, given the definition in *def*, assuming the
Nick Coghland5cacbb2015-05-23 22:24:10 +1000228 API version *module_api_version*. If that version does not match the version
229 of the running interpreter, a :exc:`RuntimeWarning` is emitted.
230
231 .. note::
232
233 Most uses of this function should be using :c:func:`PyModule_Create`
234 instead; only use this if you are sure you need it.
235
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000236Before it is returned from in the initialization function, the resulting module
237object is typically populated using functions like :c:func:`PyModule_AddObject`.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000238
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000239.. _multi-phase-initialization:
Nick Coghland5cacbb2015-05-23 22:24:10 +1000240
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000241Multi-phase initialization
242..........................
243
244An alternate way to specify extensions is to request "multi-phase initialization".
245Extension modules created this way behave more like Python modules: the
246initialization is split between the *creation phase*, when the module object
247is created, and the *execution phase*, when it is populated.
248The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
249of classes.
250
251Unlike modules created using single-phase initialization, these modules are not
252singletons: if the *sys.modules* entry is removed and the module is re-imported,
253a new module object is created, and the old module is subject to normal garbage
254collection -- as with Python modules.
255By default, multiple modules created from the same definition should be
256independent: changes to one should not affect the others.
257This means that all state should be specific to the module object (using e.g.
258using :c:func:`PyModule_GetState`), or its contents (such as the module's
259:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
260
261All modules created using multi-phase initialization are expected to support
262:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
263are independent is typically enough to achieve this.
264
265To request multi-phase initialization, the initialization function
266(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
267:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
268instance must be initialized with the following function:
269
270.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
Nick Coghland5cacbb2015-05-23 22:24:10 +1000271
272 Ensures a module definition is a properly initialized Python object that
273 correctly reports its type and reference count.
274
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000275 Returns *def* cast to ``PyObject*``, or *NULL* if an error occurred.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000276
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000277 .. versionadded:: 3.5
278
279The *m_slots* member of the module definition must point to an array of
280``PyModuleDef_Slot`` structures:
281
282.. c:type:: PyModuleDef_Slot
283
284 .. c:member:: int slot
285
286 A slot ID, chosen from the available values explained below.
287
288 .. c:member:: void* value
289
290 Value of the slot, whose meaning depends on the slot ID.
291
292 .. versionadded:: 3.5
293
294The *m_slots* array must be terminated by a slot with id 0.
295
296The available slot types are:
297
298.. c:var:: Py_mod_create
299
300 Specifies a function that is called to create the module object itself.
301 The *value* pointer of this slot must point to a function of the signature:
302
303 .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
304
305 The function receives a :py:class:`~importlib.machinery.ModuleSpec`
306 instance, as defined in :PEP:`451`, and the module definition.
307 It should return a new module object, or set an error
308 and return *NULL*.
309
310 This function should be kept minimal. In particular, it should not
311 call arbitrary Python code, as trying to import the same module again may
312 result in an infinite loop.
313
314 Multiple ``Py_mod_create`` slots may not be specified in one module
315 definition.
316
317 If ``Py_mod_create`` is not specified, the import machinery will create
318 a normal module object using :c:func:`PyModule_New`. The name is taken from
319 *spec*, not the definition, to allow extension modules to dynamically adjust
320 to their place in the module hierarchy and be imported under different
321 names through symlinks, all while sharing a single module definition.
322
323 There is no requirement for the returned object to be an instance of
324 :c:type:`PyModule_Type`. Any type can be used, as long as it supports
325 setting and getting import-related attributes.
326 However, only ``PyModule_Type`` instances may be returned if the
327 ``PyModuleDef`` has non-*NULL* ``m_methods``, ``m_traverse``, ``m_clear``,
328 ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
329
330.. c:var:: Py_mod_exec
331
332 Specifies a function that is called to *execute* the module.
333 This is equivalent to executing the code of a Python module: typically,
334 this function adds classes and constants to the module.
335 The signature of the function is:
336
337 .. c:function:: int exec_module(PyObject* module)
338
339 If multiple ``Py_mod_exec`` slots are specified, they are processed in the
340 order they appear in the *m_slots* array.
341
342See :PEP:`489` for more details on multi-phase initialization.
343
344Low-level module creation functions
345...................................
346
347The following functions are called under the hood when using multi-phase
348initialization. They can be used directly, for example when creating module
349objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
350``PyModule_ExecDef`` must be called to fully initialize a module.
351
352.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
353
354 Create a new module object, given the definition in *module* and the
355 ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2`
356 with *module_api_version* set to :const:`PYTHON_API_VERSION`.
357
358 .. versionadded:: 3.5
359
360.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
361
362 Create a new module object, given the definition in *module* and the
363 ModuleSpec *spec*, assuming the API version *module_api_version*.
364 If that version does not match the version of the running interpreter,
365 a :exc:`RuntimeWarning` is emitted.
366
367 .. note::
368
369 Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
370 instead; only use this if you are sure you need it.
371
372 .. versionadded:: 3.5
373
374.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
375
376 Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
377
378 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000379
380.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
381
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000382 Set the docstring for *module* to *docstring*.
383 This function is called automatically when creating a module from
384 ``PyModuleDef``, using either ``PyModule_Create`` or
385 ``PyModule_FromDefAndSpec``.
386
387 .. versionadded:: 3.5
Nick Coghland5cacbb2015-05-23 22:24:10 +1000388
389.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
390
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000391 Add the functions from the *NULL* terminated *functions* array to *module*.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000392 Refer to the :c:type:`PyMethodDef` documentation for details on individual
393 entries (due to the lack of a shared module namespace, module level
394 "functions" implemented in C typically receive the module as their first
395 parameter, making them similar to instance methods on Python classes).
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000396 This function is called automatically when creating a module from
397 ``PyModuleDef``, using either ``PyModule_Create`` or
398 ``PyModule_FromDefAndSpec``.
Nick Coghland5cacbb2015-05-23 22:24:10 +1000399
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000400 .. versionadded:: 3.5
401
402Support functions
403.................
404
405The module initialization function (if using single phase initialization) or
406a function called from a module execution slot (if using multi-phase
407initialization), can use the following functions to help initialize the module
408state:
Georg Brandle69cdf92009-01-04 23:20:14 +0000409
Georg Brandl60203b42010-10-06 10:11:56 +0000410.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000411
412 Add an object to *module* as *name*. This is a convenience function which can
413 be used from the module's initialization function. This steals a reference to
414 *value*. Return ``-1`` on error, ``0`` on success.
415
Georg Brandl60203b42010-10-06 10:11:56 +0000416.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000417
418 Add an integer constant to *module* as *name*. This convenience function can be
419 used from the module's initialization function. Return ``-1`` on error, ``0`` on
420 success.
421
422
Georg Brandl60203b42010-10-06 10:11:56 +0000423.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000424
425 Add a string constant to *module* as *name*. This convenience function can be
426 used from the module's initialization function. The string *value* must be
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000427 *NULL*-terminated. Return ``-1`` on error, ``0`` on success.
Christian Heimes1af737c2008-01-23 08:24:23 +0000428
429
Georg Brandl60203b42010-10-06 10:11:56 +0000430.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000431
Georg Brandl48310cd2009-01-03 21:18:54 +0000432 Add an int constant to *module*. The name and the value are taken from
Benjamin Peterson4c020882011-04-30 13:14:56 -0500433 *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
Christian Heimes1af737c2008-01-23 08:24:23 +0000434 constant *AF_INET* with the value of *AF_INET* to *module*.
435 Return ``-1`` on error, ``0`` on success.
436
437
Georg Brandl60203b42010-10-06 10:11:56 +0000438.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
Christian Heimes1af737c2008-01-23 08:24:23 +0000439
440 Add a string constant to *module*.
Nick Coghlan2ab5b092015-07-03 19:49:15 +1000441
442
443Module lookup
444^^^^^^^^^^^^^
445
446Single-phase initialization creates singleton modules that can be looked up
447in the context of the current interpreter. This allows the module object to be
448retrieved later with only a reference to the module definition.
449
450These functions will not work on modules created using multi-phase initialization,
451since multiple such modules can be created from a single definition.
452
453.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
454
455 Returns the module object that was created from *def* for the current interpreter.
456 This method requires that the module object has been attached to the interpreter state with
457 :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
458 found or has not been attached to the interpreter state yet, it returns *NULL*.
459
460.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
461
462 Attaches the module object passed to the function to the interpreter state. This allows
463 the module object to be accessible via :c:func:`PyState_FindModule`.
464
465 Only effective on modules created using single-phase initialization.
466
467 .. versionadded:: 3.3
468
469.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
470
471 Removes the module object created from *def* from the interpreter state.
472
473 .. versionadded:: 3.3