8
.. index:: object: module
10
There are only a few functions special to module objects.
13
.. c:var:: PyTypeObject PyModule_Type
15
.. index:: single: ModuleType (in module types)
17
This instance of :c:type:`PyTypeObject` represents the Python module type. This
18
is exposed to Python programs as ``types.ModuleType``.
21
.. c:function:: int PyModule_Check(PyObject *p)
23
Return true if *p* is a module object, or a subtype of a module object.
26
.. c:function:: int PyModule_CheckExact(PyObject *p)
28
Return true if *p* is a module object, but not a subtype of
29
:c:data:`PyModule_Type`.
32
.. c:function:: PyObject* PyModule_NewObject(PyObject *name)
35
single: __name__ (module attribute)
36
single: __doc__ (module attribute)
37
single: __file__ (module attribute)
38
single: __package__ (module attribute)
39
single: __loader__ (module attribute)
41
Return a new module object with the :attr:`__name__` attribute set to *name*.
42
The module's :attr:`__name__`, :attr:`__doc__`, :attr:`__package__`, and
43
:attr:`__loader__` attributes are filled in (all but :attr:`__name__` are set
44
to ``None``); the caller is responsible for providing a :attr:`__file__`
49
.. versionchanged:: 3.4
50
:attr:`__package__` and :attr:`__loader__` are set to ``None``.
53
.. c:function:: PyObject* PyModule_New(const char *name)
55
Similar to :c:func:`PyImport_NewObject`, but the name is an UTF-8 encoded
56
string instead of a Unicode object.
59
.. c:function:: PyObject* PyModule_GetDict(PyObject *module)
61
.. index:: single: __dict__ (module attribute)
63
Return the dictionary object that implements *module*'s namespace; this object
64
is the same as the :attr:`__dict__` attribute of the module object. This
65
function never fails. It is recommended extensions use other
66
:c:func:`PyModule_\*` and :c:func:`PyObject_\*` functions rather than directly
67
manipulate a module's :attr:`__dict__`.
70
.. c:function:: PyObject* PyModule_GetNameObject(PyObject *module)
73
single: __name__ (module attribute)
74
single: SystemError (built-in exception)
76
Return *module*'s :attr:`__name__` value. If the module does not provide one,
77
or if it is not a string, :exc:`SystemError` is raised and *NULL* is returned.
82
.. c:function:: char* PyModule_GetName(PyObject *module)
84
Similar to :c:func:`PyModule_GetNameObject` but return the name encoded to
88
.. c:function:: PyObject* PyModule_GetFilenameObject(PyObject *module)
91
single: __file__ (module attribute)
92
single: SystemError (built-in exception)
94
Return the name of the file from which *module* was loaded using *module*'s
95
:attr:`__file__` attribute. If this is not defined, or if it is not a
96
unicode string, raise :exc:`SystemError` and return *NULL*; otherwise return
97
a reference to a Unicode object.
102
.. c:function:: char* PyModule_GetFilename(PyObject *module)
104
Similar to :c:func:`PyModule_GetFilenameObject` but return the filename
108
:c:func:`PyModule_GetFilename` raises :c:type:`UnicodeEncodeError` on
109
unencodable filenames, use :c:func:`PyModule_GetFilenameObject` instead.
112
.. c:function:: void* PyModule_GetState(PyObject *module)
114
Return the "state" of the module, that is, a pointer to the block of memory
115
allocated at module creation time, or *NULL*. See
116
:c:member:`PyModuleDef.m_size`.
119
.. c:function:: PyModuleDef* PyModule_GetDef(PyObject *module)
121
Return a pointer to the :c:type:`PyModuleDef` struct from which the module was
122
created, or *NULL* if the module wasn't created with
123
:c:func:`PyModule_Create`.i
125
.. c:function:: PyObject* PyState_FindModule(PyModuleDef *def)
127
Returns the module object that was created from *def* for the current interpreter.
128
This method requires that the module object has been attached to the interpreter state with
129
:c:func:`PyState_AddModule` beforehand. In case the corresponding module object is not
130
found or has not been attached to the interpreter state yet, it returns NULL.
132
.. c:function:: int PyState_AddModule(PyObject *module, PyModuleDef *def)
134
Attaches the module object passed to the function to the interpreter state. This allows
135
the module object to be accessible via
136
:c:func:`PyState_FindModule`.
138
.. versionadded:: 3.3
140
.. c:function:: int PyState_RemoveModule(PyModuleDef *def)
142
Removes the module object created from *def* from the interpreter state.
144
.. versionadded:: 3.3
146
Initializing C modules
147
^^^^^^^^^^^^^^^^^^^^^^
149
These functions are usually used in the module initialization function.
151
.. c:function:: PyObject* PyModule_Create(PyModuleDef *module)
153
Create a new module object, given the definition in *module*. This behaves
154
like :c:func:`PyModule_Create2` with *module_api_version* set to
155
:const:`PYTHON_API_VERSION`.
158
.. c:function:: PyObject* PyModule_Create2(PyModuleDef *module, int module_api_version)
160
Create a new module object, given the definition in *module*, assuming the
161
API version *module_api_version*. If that version does not match the version
162
of the running interpreter, a :exc:`RuntimeWarning` is emitted.
166
Most uses of this function should be using :c:func:`PyModule_Create`
167
instead; only use this if you are sure you need it.
170
.. c:type:: PyModuleDef
172
This struct holds all information that is needed to create a module object.
173
There is usually only one static variable of that type for each module, which
174
is statically initialized and then passed to :c:func:`PyModule_Create` in the
175
module initialization function.
177
.. c:member:: PyModuleDef_Base m_base
179
Always initialize this member to :const:`PyModuleDef_HEAD_INIT`.
181
.. c:member:: char* m_name
183
Name for the new module.
185
.. c:member:: char* m_doc
187
Docstring for the module; usually a docstring variable created with
188
:c:func:`PyDoc_STRVAR` is used.
190
.. c:member:: Py_ssize_t m_size
192
Some modules allow re-initialization (calling their ``PyInit_*`` function
193
more than once). These modules should keep their state in a per-module
194
memory area that can be retrieved with :c:func:`PyModule_GetState`.
196
This memory should be used, rather than static globals, to hold per-module
197
state, since it is then safe for use in multiple sub-interpreters. It is
198
freed when the module object is deallocated, after the :c:member:`m_free`
199
function has been called, if present.
201
Setting ``m_size`` to ``-1`` means that the module can not be
202
re-initialized because it has global state. Setting it to a non-negative
203
value means that the module can be re-initialized and specifies the
204
additional amount of memory it requires for its state.
206
See :PEP:`3121` for more details.
208
.. c:member:: PyMethodDef* m_methods
210
A pointer to a table of module-level functions, described by
211
:c:type:`PyMethodDef` values. Can be *NULL* if no functions are present.
213
.. c:member:: inquiry m_reload
215
Currently unused, should be *NULL*.
217
.. c:member:: traverseproc m_traverse
219
A traversal function to call during GC traversal of the module object, or
220
*NULL* if not needed.
222
.. c:member:: inquiry m_clear
224
A clear function to call during GC clearing of the module object, or
225
*NULL* if not needed.
227
.. c:member:: freefunc m_free
229
A function to call during deallocation of the module object, or *NULL* if
233
.. c:function:: int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)
235
Add an object to *module* as *name*. This is a convenience function which can
236
be used from the module's initialization function. This steals a reference to
237
*value*. Return ``-1`` on error, ``0`` on success.
240
.. c:function:: int PyModule_AddIntConstant(PyObject *module, const char *name, long value)
242
Add an integer constant to *module* as *name*. This convenience function can be
243
used from the module's initialization function. Return ``-1`` on error, ``0`` on
247
.. c:function:: int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)
249
Add a string constant to *module* as *name*. This convenience function can be
250
used from the module's initialization function. The string *value* must be
251
null-terminated. Return ``-1`` on error, ``0`` on success.
254
.. c:function:: int PyModule_AddIntMacro(PyObject *module, macro)
256
Add an int constant to *module*. The name and the value are taken from
257
*macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int
258
constant *AF_INET* with the value of *AF_INET* to *module*.
259
Return ``-1`` on error, ``0`` on success.
262
.. c:function:: int PyModule_AddStringMacro(PyObject *module, macro)
264
Add a string constant to *module*.