• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. highlightlang:: c
2
3.. _moduleobjects:
4
5Module Objects
6--------------
7
8.. index:: object: module
9
10
11.. c:var:: PyTypeObject PyModule_Type
12
13   .. index:: single: ModuleType (in module types)
14
15   This instance of :c:type:`PyTypeObject` represents the Python module type.  This
16   is exposed to Python programs as ``types.ModuleType``.
17
18
19.. c:function:: int PyModule_Check(PyObject *p)
20
21   Return true if *p* is a module object, or a subtype of a module object.
22
23
24.. c:function:: int PyModule_CheckExact(PyObject *p)
25
26   Return true if *p* is a module object, but not a subtype of
27   :c:data:`PyModule_Type`.
28
29
30.. c:function:: PyObject* PyModule_NewObject(PyObject *name)
31
32   .. index::
33      single: __name__ (module attribute)
34      single: __doc__ (module attribute)
35      single: __file__ (module attribute)
36      single: __package__ (module attribute)
37      single: __loader__ (module attribute)
38
39   Return a new module object with the :attr:`__name__` attribute set to *name*.
40   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.
44
45   .. versionadded:: 3.3
46
47   .. versionchanged:: 3.4
48      :attr:`__package__` and :attr:`__loader__` are set to ``None``.
49
50
51.. c:function:: PyObject* PyModule_New(const char *name)
52
53   Similar to :c:func:`PyModule_NewObject`, but the name is a UTF-8 encoded
54   string instead of a Unicode object.
55
56
57.. c:function:: PyObject* PyModule_GetDict(PyObject *module)
58
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:`~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__`.
69
70
71.. c:function:: PyObject* PyModule_GetNameObject(PyObject *module)
72
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
80   .. versionadded:: 3.3
81
82
83.. c:function:: const char* PyModule_GetName(PyObject *module)
84
85   Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to
86   ``'utf-8'``.
87
88.. 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
100
101.. c:function:: PyObject* PyModule_GetFilenameObject(PyObject *module)
102
103   .. 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
108   :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
110   a reference to a Unicode object.
111
112   .. versionadded:: 3.2
113
114
115.. c:function:: const 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
125.. _initializing-modules:
126
127Initializing C modules
128^^^^^^^^^^^^^^^^^^^^^^
129
130Modules 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
135The initialization function can either pass a module definition instance
136to :c:func:`PyModule_Create`, and return the resulting module object,
137or request "multi-phase initialization" by returning the definition struct itself.
138
139.. c:type:: PyModuleDef
140
141   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.
144
145   .. c:member:: PyModuleDef_Base m_base
146
147      Always initialize this member to :const:`PyModuleDef_HEAD_INIT`.
148
149   .. c:member:: const char *m_name
150
151      Name for the new module.
152
153   .. c:member:: const char *m_doc
154
155      Docstring for the module; usually a docstring variable created with
156      :c:func:`PyDoc_STRVAR` is used.
157
158   .. c:member:: Py_ssize_t m_size
159
160      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.
163
164      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.
167
168      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.
175
176      See :PEP:`3121` for more details.
177
178   .. c:member:: PyMethodDef* m_methods
179
180      A pointer to a table of module-level functions, described by
181      :c:type:`PyMethodDef` values.  Can be *NULL* if no functions are present.
182
183   .. c:member:: PyModuleDef_Slot* m_slots
184
185      An array of slot definitions for multi-phase initialization, terminated by
186      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
195
196   .. c:member:: traverseproc m_traverse
197
198      A traversal function to call during GC traversal of the module object, or
199      *NULL* if not needed. This function may be called before module state
200      is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
201      and before the :c:member:`Py_mod_exec` function is executed.
202
203   .. c:member:: inquiry m_clear
204
205      A clear function to call during GC clearing of the module object, or
206      *NULL* if not needed. This function may be called before module state
207      is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
208      and before the :c:member:`Py_mod_exec` function is executed.
209
210   .. c:member:: freefunc m_free
211
212      A function to call during deallocation of the module object, or *NULL* if
213      not needed. This function may be called before module state
214      is allocated (:c:func:`PyModule_GetState()` may return `NULL`),
215      and before the :c:member:`Py_mod_exec` function is executed.
216
217Single-phase initialization
218...........................
219
220The module initialization function may create and return the module object
221directly. This is referred to as "single-phase initialization", and uses one
222of the following two module creation functions:
223
224.. c:function:: PyObject* PyModule_Create(PyModuleDef *def)
225
226   Create a new module object, given the definition in *def*.  This behaves
227   like :c:func:`PyModule_Create2` with *module_api_version* set to
228   :const:`PYTHON_API_VERSION`.
229
230
231.. c:function:: PyObject* PyModule_Create2(PyModuleDef *def, int module_api_version)
232
233   Create a new module object, given the definition in *def*, assuming the
234   API version *module_api_version*.  If that version does not match the version
235   of the running interpreter, a :exc:`RuntimeWarning` is emitted.
236
237   .. note::
238
239      Most uses of this function should be using :c:func:`PyModule_Create`
240      instead; only use this if you are sure you need it.
241
242Before it is returned from in the initialization function, the resulting module
243object is typically populated using functions like :c:func:`PyModule_AddObject`.
244
245.. _multi-phase-initialization:
246
247Multi-phase initialization
248..........................
249
250An alternate way to specify extensions is to request "multi-phase initialization".
251Extension modules created this way behave more like Python modules: the
252initialization is split between the *creation phase*, when the module object
253is created, and the *execution phase*, when it is populated.
254The distinction is similar to the :py:meth:`__new__` and :py:meth:`__init__` methods
255of classes.
256
257Unlike modules created using single-phase initialization, these modules are not
258singletons: if the *sys.modules* entry is removed and the module is re-imported,
259a new module object is created, and the old module is subject to normal garbage
260collection -- as with Python modules.
261By default, multiple modules created from the same definition should be
262independent: changes to one should not affect the others.
263This means that all state should be specific to the module object (using e.g.
264using :c:func:`PyModule_GetState`), or its contents (such as the module's
265:attr:`__dict__` or individual classes created with :c:func:`PyType_FromSpec`).
266
267All modules created using multi-phase initialization are expected to support
268:ref:`sub-interpreters <sub-interpreter-support>`. Making sure multiple modules
269are independent is typically enough to achieve this.
270
271To request multi-phase initialization, the initialization function
272(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty
273:c:member:`~PyModuleDef.m_slots`. Before it is returned, the ``PyModuleDef``
274instance must be initialized with the following function:
275
276.. c:function:: PyObject* PyModuleDef_Init(PyModuleDef *def)
277
278   Ensures a module definition is a properly initialized Python object that
279   correctly reports its type and reference count.
280
281   Returns *def* cast to ``PyObject*``, or *NULL* if an error occurred.
282
283   .. versionadded:: 3.5
284
285The *m_slots* member of the module definition must point to an array of
286``PyModuleDef_Slot`` structures:
287
288.. c:type:: PyModuleDef_Slot
289
290   .. c:member:: int slot
291
292      A slot ID, chosen from the available values explained below.
293
294   .. c:member:: void* value
295
296      Value of the slot, whose meaning depends on the slot ID.
297
298   .. versionadded:: 3.5
299
300The *m_slots* array must be terminated by a slot with id 0.
301
302The available slot types are:
303
304.. c:var:: Py_mod_create
305
306   Specifies a function that is called to create the module object itself.
307   The *value* pointer of this slot must point to a function of the signature:
308
309   .. c:function:: PyObject* create_module(PyObject *spec, PyModuleDef *def)
310
311   The function receives a :py:class:`~importlib.machinery.ModuleSpec`
312   instance, as defined in :PEP:`451`, and the module definition.
313   It should return a new module object, or set an error
314   and return *NULL*.
315
316   This function should be kept minimal. In particular, it should not
317   call arbitrary Python code, as trying to import the same module again may
318   result in an infinite loop.
319
320   Multiple ``Py_mod_create`` slots may not be specified in one module
321   definition.
322
323   If ``Py_mod_create`` is not specified, the import machinery will create
324   a normal module object using :c:func:`PyModule_New`. The name is taken from
325   *spec*, not the definition, to allow extension modules to dynamically adjust
326   to their place in the module hierarchy and be imported under different
327   names through symlinks, all while sharing a single module definition.
328
329   There is no requirement for the returned object to be an instance of
330   :c:type:`PyModule_Type`. Any type can be used, as long as it supports
331   setting and getting import-related attributes.
332   However, only ``PyModule_Type`` instances may be returned if the
333   ``PyModuleDef`` has non-*NULL* ``m_traverse``, ``m_clear``,
334   ``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
335
336.. c:var:: Py_mod_exec
337
338   Specifies a function that is called to *execute* the module.
339   This is equivalent to executing the code of a Python module: typically,
340   this function adds classes and constants to the module.
341   The signature of the function is:
342
343   .. c:function:: int exec_module(PyObject* module)
344
345   If multiple ``Py_mod_exec`` slots are specified, they are processed in the
346   order they appear in the *m_slots* array.
347
348See :PEP:`489` for more details on multi-phase initialization.
349
350Low-level module creation functions
351...................................
352
353The following functions are called under the hood when using multi-phase
354initialization. They can be used directly, for example when creating module
355objects dynamically. Note that both ``PyModule_FromDefAndSpec`` and
356``PyModule_ExecDef`` must be called to fully initialize a module.
357
358.. c:function:: PyObject * PyModule_FromDefAndSpec(PyModuleDef *def, PyObject *spec)
359
360   Create a new module object, given the definition in *module* and the
361   ModuleSpec *spec*.  This behaves like :c:func:`PyModule_FromDefAndSpec2`
362   with *module_api_version* set to :const:`PYTHON_API_VERSION`.
363
364   .. versionadded:: 3.5
365
366.. c:function:: PyObject * PyModule_FromDefAndSpec2(PyModuleDef *def, PyObject *spec, int module_api_version)
367
368   Create a new module object, given the definition in *module* and the
369   ModuleSpec *spec*, assuming the API version *module_api_version*.
370   If that version does not match the version of the running interpreter,
371   a :exc:`RuntimeWarning` is emitted.
372
373   .. note::
374
375      Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec`
376      instead; only use this if you are sure you need it.
377
378   .. versionadded:: 3.5
379
380.. c:function:: int PyModule_ExecDef(PyObject *module, PyModuleDef *def)
381
382   Process any execution slots (:c:data:`Py_mod_exec`) given in *def*.
383
384   .. versionadded:: 3.5
385
386.. c:function:: int PyModule_SetDocString(PyObject *module, const char *docstring)
387
388   Set the docstring for *module* to *docstring*.
389   This function is called automatically when creating a module from
390   ``PyModuleDef``, using either ``PyModule_Create`` or
391   ``PyModule_FromDefAndSpec``.
392
393   .. versionadded:: 3.5
394
395.. c:function:: int PyModule_AddFunctions(PyObject *module, PyMethodDef *functions)
396
397   Add the functions from the *NULL* terminated *functions* array to *module*.
398   Refer to the :c:type:`PyMethodDef` documentation for details on individual
399   entries (due to the lack of a shared module namespace, module level
400   "functions" implemented in C typically receive the module as their first
401   parameter, making them similar to instance methods on Python classes).
402   This function is called automatically when creating a module from
403   ``PyModuleDef``, using either ``PyModule_Create`` or
404   ``PyModule_FromDefAndSpec``.
405
406   .. versionadded:: 3.5
407
408Support functions
409.................
410
411The module initialization function (if using single phase initialization) or
412a function called from a module execution slot (if using multi-phase
413initialization), can use the following functions to help initialize the module
414state:
415
416.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
417
418   Add an object to *module* as *name*.  This is a convenience function which can
419   be used from the module's initialization function.  This steals a reference to
420   *value*.  Return ``-1`` on error, ``0`` on success.
421
422.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
423
424   Add an integer constant to *module* as *name*.  This convenience function can be
425   used from the module's initialization function. Return ``-1`` on error, ``0`` on
426   success.
427
428
429.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
430
431   Add a string constant to *module* as *name*.  This convenience function can be
432   used from the module's initialization function.  The string *value* must be
433   *NULL*-terminated.  Return ``-1`` on error, ``0`` on success.
434
435
436.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
437
438   Add an int constant to *module*. The name and the value are taken from
439   *macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
440   constant *AF_INET* with the value of *AF_INET* to *module*.
441   Return ``-1`` on error, ``0`` on success.
442
443
444.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
445
446   Add a string constant to *module*.
447
448
449Module lookup
450^^^^^^^^^^^^^
451
452Single-phase initialization creates singleton modules that can be looked up
453in the context of the current interpreter. This allows the module object to be
454retrieved later with only a reference to the module definition.
455
456These functions will not work on modules created using multi-phase initialization,
457since multiple such modules can be created from a single definition.
458
459.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
460
461   Returns the module object that was created from *def* for the current interpreter.
462   This method requires that the module object has been attached to the interpreter state with
463   :c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
464   found or has not been attached to the interpreter state yet, it returns *NULL*.
465
466.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
467
468   Attaches the module object passed to the function to the interpreter state. This allows
469   the module object to be accessible via :c:func:`PyState_FindModule`.
470
471   Only effective on modules created using single-phase initialization.
472
473   .. versionadded:: 3.3
474
475.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
476
477   Removes the module object created from *def* from the interpreter state.
478
479   .. versionadded:: 3.3
480