From 191e3138200906e43cba9347177914325b54843f Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 17 Oct 2017 15:52:38 -0400 Subject: bpo-31799: Make module.__spec__ more discoverable (#4010) bpo-31799: Make module.__spec__ more discoverable --- Doc/library/importlib.rst | 10 +++++++++- Doc/reference/import.rst | 5 +++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index 3a72648..3d350e8 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -1048,7 +1048,15 @@ find and load modules. .. class:: ModuleSpec(name, loader, *, origin=None, loader_state=None, is_package=None) - A specification for a module's import-system-related state. + A specification for a module's import-system-related state. This is + typically exposed as the module's ``__spec__`` attribute. In the + descriptions below, the names in parentheses give the corresponding + attribute available directly on the module object. + E.g. ``module.__spec__.origin == module.__file__``. Note however that + while the *values* are usually equivalent, they can differ since there is + no synchronization between the two objects. Thus it is possible to update + the module's ``__path__`` at runtime, and this will not be automatically + reflected in ``__spec__.submodule_search_locations``. .. versionadded:: 3.4 diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index 8cf16ca..7fbf8ed 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -519,8 +519,9 @@ and the loader that executes it. Most importantly, it allows the import machinery to perform the boilerplate operations of loading, whereas without a module spec the loader had that responsibility. -See :class:`~importlib.machinery.ModuleSpec` for more specifics on what -information a module's spec may hold. +The module's spec is exposed as the ``__spec__`` attribute on a module object. +See :class:`~importlib.machinery.ModuleSpec` for details on the contents of +the module spec. .. versionadded:: 3.4 -- cgit v0.12