Skip to content

[3.9] bpo-43573: Clarify attribute docs on types.ModuleType (GH-24974) #24992

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 23, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 30 additions & 2 deletions Doc/library/types.rst
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ Standard names are defined for the following types:

.. class:: ModuleType(name, doc=None)

The type of :term:`modules <module>`. Constructor takes the name of the
The type of :term:`modules <module>`. The constructor takes the name of the
module to be created and optionally its :term:`docstring`.

.. note::
Expand All @@ -224,12 +224,23 @@ Standard names are defined for the following types:

The :term:`loader` which loaded the module. Defaults to ``None``.

This attribute is to match :attr:`importlib.machinery.ModuleSpec.loader`
as stored in the attr:`__spec__` object.

.. note::
A future version of Python may stop setting this attribute by default.
To guard against this potential change, preferrably read from the
:attr:`__spec__` attribute instead or use
``getattr(module, "__loader__", None)`` if you explicitly need to use
this attribute.

.. versionchanged:: 3.4
Defaults to ``None``. Previously the attribute was optional.

.. attribute:: __name__

The name of the module.
The name of the module. Expected to match
:attr:`importlib.machinery.ModuleSpec.name`.

.. attribute:: __package__

Expand All @@ -238,9 +249,26 @@ Standard names are defined for the following types:
to ``''``, else it should be set to the name of the package (which can be
:attr:`__name__` if the module is a package itself). Defaults to ``None``.

This attribute is to match :attr:`importlib.machinery.ModuleSpec.parent`
as stored in the attr:`__spec__` object.

.. note::
A future version of Python may stop setting this attribute by default.
To guard against this potential change, preferrably read from the
:attr:`__spec__` attribute instead or use
``getattr(module, "__package__", None)`` if you explicitly need to use
this attribute.

.. versionchanged:: 3.4
Defaults to ``None``. Previously the attribute was optional.

.. attribute:: __spec__

A record of the the module's import-system-related state. Expected to be
an instance of :class:`importlib.machinery.ModuleSpec`.

.. versionadded:: 3.4


.. class:: GenericAlias(t_origin, t_args)

Expand Down