Module Objects
**************

There are only a few functions special to module objects.

PyTypeObject PyModule_Type

   This instance of "PyTypeObject" represents the Python module type.
   This is exposed to Python programs as "types.ModuleType".

int PyModule_Check(PyObject *p)

   Return true if *p* is a module object, or a subtype of a module
   object.

   Changed in version 2.2: Allowed subtypes to be accepted.

int PyModule_CheckExact(PyObject *p)

   Return true if *p* is a module object, but not a subtype of
   "PyModule_Type".

   New in version 2.2.

PyObject* PyModule_New(const char *name)
    *Return value: New reference.*

   Return a new module object with the "__name__" attribute set to
   *name*. Only the module's "__doc__" and "__name__" attributes are
   filled in; the caller is responsible for providing a "__file__"
   attribute.

PyObject* PyModule_GetDict(PyObject *module)
    *Return value: Borrowed reference.*

   Return the dictionary object that implements *module*'s namespace;
   this object is the same as the "__dict__" attribute of the module
   object.  This function never fails.  It is recommended extensions
   use other "PyModule_*()" and "PyObject_*()" functions rather than
   directly manipulate a module's "__dict__".

char* PyModule_GetName(PyObject *module)

   Return *module*'s "__name__" value.  If the module does not provide
   one, or if it is not a string, "SystemError" is raised and *NULL*
   is returned.

char* PyModule_GetFilename(PyObject *module)

   Return the name of the file from which *module* was loaded using
   *module*'s "__file__" attribute.  If this is not defined, or if it
   is not a string, raise "SystemError" and return *NULL*.

int PyModule_AddObject(PyObject *module, const char *name, PyObject *value)

   Add an object to *module* as *name*.  This is a convenience
   function which can be used from the module's initialization
   function.  This steals a reference to *value*.  Return "-1" on
   error, "0" on success.

   New in version 2.0.

int PyModule_AddIntConstant(PyObject *module, const char *name, long value)

   Add an integer constant to *module* as *name*.  This convenience
   function can be used from the module's initialization function.
   Return "-1" on error, "0" on success.

   New in version 2.0.

int PyModule_AddStringConstant(PyObject *module, const char *name, const char *value)

   Add a string constant to *module* as *name*.  This convenience
   function can be used from the module's initialization function.
   The string *value* must be null-terminated.  Return "-1" on error,
   "0" on success.

   New in version 2.0.

int PyModule_AddIntMacro(PyObject *module, macro)

   Add an int constant to *module*. The name and the value are taken
   from *macro*. For example "PyModule_AddIntMacro(module, AF_INET)"
   adds the int constant *AF_INET* with the value of *AF_INET* to
   *module*. Return "-1" on error, "0" on success.

   New in version 2.6.

int PyModule_AddStringMacro(PyObject *module, macro)

      Add a string constant to *module*.

   New in version 2.6.
