summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2013-03-13 17:41:36 (GMT)
committerBrett Cannon <brett@python.org>2013-03-13 17:41:36 (GMT)
commit4802becb160d76c2e0993ce7e8abbbe23667f91f (patch)
tree47c56787e702b1b15bc2d3fee5de3e9730aa9a57 /Doc
parentaa73a1c9c9c149002f98dbf6fdd12eb3d41225ee (diff)
downloadcpython-4802becb160d76c2e0993ce7e8abbbe23667f91f.zip
cpython-4802becb160d76c2e0993ce7e8abbbe23667f91f.tar.gz
cpython-4802becb160d76c2e0993ce7e8abbbe23667f91f.tar.bz2
Issue #17117: Have both import itself and importlib.util.set_loader()
set __loader__ on a module when set to None. Thanks to Gökcen Eraslan for the fix.
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/importlib.rst4
-rw-r--r--Doc/reference/import.rst16
2 files changed, 13 insertions, 7 deletions
diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
index 0e1a654..1bd11f4 100644
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -774,6 +774,10 @@ an :term:`importer`.
It is recommended that :func:`module_for_loader` be used over this
decorator as it subsumes this functionality.
+ .. versionchanged:: 3.4
+ Set ``__loader__`` if set to ``None`` as well if the attribute does not
+ exist.
+
.. decorator:: set_package
diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst
index ef0235d..ee1538f 100644
--- a/Doc/reference/import.rst
+++ b/Doc/reference/import.rst
@@ -369,16 +369,18 @@ Loaders must satisfy the following requirements:
* The ``__loader__`` attribute must be set to the loader object that loaded
the module. This is mostly for introspection and reloading, but can be
used for additional loader-specific functionality, for example getting
- data associated with a loader.
+ data associated with a loader. If the attribute is missing or set to ``None``
+ then the import machinery will automatically set it **after** the module has
+ been imported.
- * The module's ``__package__`` attribute should be set. Its value must be a
+ * The module's ``__package__`` attribute must be set. Its value must be a
string, but it can be the same value as its ``__name__``. If the attribute
is set to ``None`` or is missing, the import system will fill it in with a
- more appropriate value. When the module is a package, its ``__package__``
- value should be set to its ``__name__``. When the module is not a package,
- ``__package__`` should be set to the empty string for top-level modules, or
- for submodules, to the parent package's name. See :pep:`366` for further
- details.
+ more appropriate value **after** the module has been imported.
+ When the module is a package, its ``__package__`` value should be set to its
+ ``__name__``. When the module is not a package, ``__package__`` should be
+ set to the empty string for top-level modules, or for submodules, to the
+ parent package's name. See :pep:`366` for further details.
This attribute is used instead of ``__name__`` to calculate explicit
relative imports for main modules, as defined in :pep:`366`.