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