Skip to content
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

Move metadata, versions and specifiers API documentation to sphinx.ext.autodoc #572

Merged
merged 5 commits into from
Jul 16, 2022

Conversation

pradyunsg
Copy link
Member

Toward #567.

At the time of opening this PR, only three modules have been converted over -- metadata, version and specifiers. I'd like to get a round of feedback on this, before moving forward on the other modules (I'm adding example usage to make the various concepts clearer and that is taking a decent amount of time!).

I think it's reasonable to do this incrementally, so we can handle the other modules once we have agreement that this is a positive direction to take things. :)

PS: Some code moved up-and-down in the class bodies, since I've configured autodoc ordering to be "bysource". It might make sense to do "groupwise" instead, but I prefer this since it gives us more control on ordering.

This is the style of organisation within the conf.py file that is used
in newer Sphinx versions.
If we need it, we can add it in later.
The migration from modern annotations (thanks to a `__future__` import)
to the plain typing-import based annotations is to deal with limitations
of intersphinx with autodoc, which currently can't linkify annotations
with future style imports.

Similarly, to make the type annotations in the generated documentation
correctly link to the various "internal" types, they need to be imported
and referenced by their regular name instead of a changed-name
import. In the spirit of consistency, all imports were changed to match
this style.

This allows for eliminating duplication of content in the implementation
and documentation, reducing the general maintainance overhead of this
module.
@pradyunsg
Copy link
Member Author

Oops, I missed a closing bracket in one of the examples. I'll come around to it, after someone takes a look at this. :)

Moving the content into inline docstrings makes it easier to ensure that
they are updated/evolve with the implementation.

This also expands the behaviors shown, by documenting the relevant
details for each function. These examples are doctest'd in CI.
Moving the content into inline docstrings makes it easier to ensure that
they are updated/evolve with the implementation.

This also expands the behaviors shown, by documenting the relevant
details for each function. These examples are doctest'd in CI.
platforms: list[str]
_canonical_name: NormalizedName
version: Version
platforms: List[str]
Copy link
Member

Choose a reason for hiding this comment

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

How did you get pre-commit to not change that thanks to pyupgrade running?

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm guessing it's the removal of from future import __annotations__.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants