FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-101100: Consolidate documentation on `ModuleType` attributes by AlexWaygood · Pull Request #124709 · python/cpython · GitHub

Repository navigation

gh-101100: Consolidate documentation on ModuleType attributes - #124709

Merged
AlexWaygood merged 16 commits into
python:mainfrom
AlexWaygood:moduletype-attrs
Oct 9, 2024
Merged

AlexWaygood merged 16 commits into
python:mainfrom
AlexWaygood:moduletype-attrs

Conversation

AlexWaygood commented Sep 27, 2024 •
edited
Loading

Copy link
Copy Markdown
Member

Our documentation for ModuleType attributes is currently quite scattered. Some attributes are documented in the data model; some in the reference guide for the import system; some in the API entry for types.ModuleType; and some in the API entry for importlib.abc.Loader.load_module. Some attributes are documented in several of these places, but the different entries say different things about the same attribute!

This PR consolidates documentation for these attributes into a single list of attributes in the datamodel docs. This is a similar approach to the one we use for attributes on class objects, attributes on function objects, and attributes on code objects. (Unlike those links, though, I haven't used a table for all module attributes, since some of the import-system-related attributes are described over the course of several paragraphs!)

I've tried to keep this PR as small as possible. Unfortunately, in order to not break existing cross references in the documentation, a number of other files have had to be updated as part of the same PR.


📚 Documentation preview 📚: https://cpython-previews--124709.org.readthedocs.build/

AlexWaygood commented Sep 27, 2024 •
edited
Loading

Copy link
Copy Markdown
Member Author

Docs preview for the new sections in the datamodel describing module attributes: https://cpython-previews--124709.org.readthedocs.build/en/124709/reference/datamodel.html#modules

hugovk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Thank you!

Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Comment on lines +1017 to +1021
.. versionchanged:: 3.12
The value of :attr:`!module__loader__` is expected to be the same as
:attr:`__spec__.loader <importlib.machinery.ModuleSpec.loader>`.
The use of :attr:`!module.__loader__` is deprecated and slated for
removal in Python 3.14.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Should this use a deprecated-removed?

Is it documented in What's New and deprecations/pending-removal-in-3.14.rst?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Should this use a deprecated-removed?

I think that makes sense!

Is it documented in What's New and deprecations/pending-removal-in-3.14.rst?

It doesn't appear so. This note is mostly copied from the note that currently exists at https://docs.python.org/3/reference/import.html#loader__, but with some more cross-reference links added.

I'll change the directive to be .. deprecated-removed, but I'm kinda tempted to say that adding a note to "What's new" is out of scope for this PR, which essentially moves documentation around and consolidates it rather than adding new documentation.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I took a stab at improving this a bit in 309a9cf and 2dca569!

Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Co-authored-by: Barry Warsaw <barry@python.org>

warsaw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

I'm not quite finished reviewing this, but because my laptop got rebooted, I'm hoping GH preserved my previous comments. I'll complete the review hopefully tomorrow.

Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated
Comment thread Doc/reference/datamodel.rst Outdated

bedevere-app Bot commented Sep 29, 2024

Copy link
Copy Markdown

When you're done making the requested changes, leave the comment: I have made the requested changes; please review again.

AlexWaygood commented Oct 9, 2024 •
edited
Loading

Copy link
Copy Markdown
Member Author

Thanks all for the excellent review comments! I'm going to land this now -- there's definitely still room for improvement, but I think it can all be done in followups.

A summary of things that could still be clarified:

  • Are __path__ and/or __file__ deprecated? There's no deprecation warning in the docs currently for either of these, so this PR doesn't add one for either. If they're not deprecated, maybe we could consider splitting the docs for these attributes into a different section (along with __name__), so that it's clear that it's still okay for users to read them and rely on them?

  • For the attributes that are definitely not deprecated, such as __name__, do we still want to recommend users to read them from the __spec__ attribute where possible? Asking users to do that from within the module globals (e.g. if __spec__.name == "__main__") feels a bit implausible, but it's maybe not unreasonable to ask users to access it from __spec__ when they're accessing it on an imported module (typing.__spec__.name rather than typing.__name__). It would still cause a lot of churn to a lot of currently working code, though!

  • importlib.abc.Loader.load_module is deprecated, but doesn't indicate when it will be removed. (I'd argue this means it probably can't be removed in 3.14 at this stage, personally... but you'll have to convince @hugovk, not me 😉)

  • The glossary definition of "loader" states:

    It must define a method named load_module().

    Which seems incorrect if load_module is going away!

AlexWaygood enabled auto-merge (squash) October 9, 2024 10:43
AlexWaygood merged commit 3024b16 into python:main Oct 9, 2024
AlexWaygood deleted the moduletype-attrs branch October 9, 2024 10:53

Copy link
Copy Markdown

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13.
🐍🍒⛏🤖

AlexWaygood added needs backport to 3.13 only security fixes and removed needs backport to 3.13 only security fixes labels Oct 9, 2024

Copy link
Copy Markdown

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

ambv added needs backport to 3.12 only security fixes needs backport to 3.13 only security fixes and removed needs backport to 3.12 only security fixes needs backport to 3.13 only security fixes labels Oct 9, 2024

Copy link
Copy Markdown

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.12.
🐍🍒⛏🤖

Copy link
Copy Markdown

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

Copy link
Copy Markdown

Sorry, @AlexWaygood, I could not cleanly backport this to 3.12 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 3024b16d51bb7f74177c5a5038cc9a56fd2b26bd 3.12

Copy link
Copy Markdown

Sorry, @AlexWaygood, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 3024b16d51bb7f74177c5a5038cc9a56fd2b26bd 3.13

AlexWaygood added a commit to AlexWaygood/cpython that referenced this pull request Oct 9, 2024
…tributes (python#124709)

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Barry Warsaw <barry@python.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>

bedevere-app Bot commented Oct 9, 2024

Copy link
Copy Markdown

GH-125208 is a backport of this pull request to the 3.13 branch.

bedevere-app Bot removed the needs backport to 3.13 only security fixes label Oct 9, 2024
AlexWaygood added a commit that referenced this pull request Oct 9, 2024
#124709) (#125208)

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Barry Warsaw <barry@python.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
AlexWaygood added a commit to AlexWaygood/cpython that referenced this pull request Oct 9, 2024
…ributes (python#124709)

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Barry Warsaw <barry@python.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>

(cherry-picked from commit 3024b16)

bedevere-app Bot commented Oct 9, 2024

Copy link
Copy Markdown

GH-125211 is a backport of this pull request to the 3.12 branch.

bedevere-app Bot removed the needs backport to 3.12 only security fixes label Oct 9, 2024
AlexWaygood added a commit that referenced this pull request Oct 9, 2024
#124709) (#125211)

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Barry Warsaw <barry@python.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>

zware commented Oct 10, 2024

Copy link
Copy Markdown
Member

Note: this caused some reference warnings in the devguide via intersphinx by removing the .. attribute:: __file__ section; see this CI run for python/devguide@97ad694 (python/devguide#1434). Not sure it's worth changing here, just connecting the dots :)

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation in the Doc dir topic-importlib

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants


Back | FazBrowse Home | New Git URL