Skip to content

Docs: split builtins to their own page from library - #156682

Open
nedbat wants to merge 15 commits into
python:mainfrom
nedbat:nedbat/split-builtin-stdlib
Open

Docs: split builtins to their own page from library#156682
nedbat wants to merge 15 commits into
python:mainfrom
nedbat:nedbat/split-builtin-stdlib

Conversation

@nedbat

@nedbat nedbat commented Aug 30, 2026

Copy link
Copy Markdown
Member

We've talked about separating the built-ins from the stdlib modules, since "dict" (for example) isn't part of the stdlib.

I think I took care of all the places the pages are referenced, but the non-HTML builds are new to me, so I might have missed something.

I tried to make the intro paragraphs and pages useful, and avoided over-editing them.

@nedbat

nedbat commented Aug 30, 2026

Copy link
Copy Markdown
Member Author

Also: is this NEWS-worthy?

@StanFromIreland

Copy link
Copy Markdown
Member

Also: is this NEWS-worthy?

I don't see a need for one here, I think the docs speak for themselves.

@read-the-docs-community

read-the-docs-community Bot commented Aug 30, 2026

Copy link
Copy Markdown

Comment thread Doc/tools/templates/indexcontent.html Outdated
Comment thread Doc/library/builtin-index.rst Outdated
Comment thread Doc/library/index.rst
Comment thread Doc/library/builtin-index.rst Outdated

@hugovk 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.

Shall we name the new Doc/library/builtin-index.rst as Doc/builtins/index.rst instead?

Then instead of:

We get a neater:

This PR can still reference the builtin stuff in their current location, and a followup could move the relevant files and deal with redirects:

  • Doc/library/functions.rst -> Doc/builtins/functions.rst
  • Doc/library/stdtypes.rst -> Doc/builtins/stdtypes.rst
  • Doc/library/constants.rst -> Doc/builtins/constants.rst
  • Doc/library/exceptions.rst -> Doc/builtins/exceptions.rst
  • Doc/library/threadsafety.rst -> Doc/builtins/threadsafety.rst
  • Doc/library/time-complexity.rst -> Doc/builtins/time-complexity.rst

Comment thread Doc/library/builtin-index.rst Outdated
Comment thread Doc/library/builtin-index.rst Outdated
Comment thread Doc/library/intro.rst Outdated
Comment thread Doc/library/index.rst Outdated
Comment thread Doc/library/intro.rst Outdated
Comment thread Doc/tools/templates/indexcontent.html Outdated
Comment thread Doc/library/builtin-index.rst Outdated
Comment thread Doc/library/builtin-index.rst Outdated

@StanFromIreland StanFromIreland 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.

Also, you need to update the What Now? page in the tutorial.

I concur with Hugo, splitting this into a separate directory would be nicer. We can do redirects at client side (using one of the various Sphinx extensions) or sever side (by configuring them in python/psf-salt).

Comment thread Doc/reference/index.rst
@nedbat

nedbat commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

I can do the renames and redirects.

We can do redirects at client side (using one of the various Sphinx extensions) or sever side (by configuring them in python/psf-salt).

What Sphinx extension have we used for redirects before? I see https://github.com/python/psf-salt/blob/main/salt/docs/config/nginx.docs-redirects.conf for the psf-salt approach.

@StanFromIreland

Copy link
Copy Markdown
Member

What Sphinx extension have we used for redirects before?

We use sphinxext-rediraffe in the Devguide, it generates stubs with some JS to redirect to the new page.

@nedbat

nedbat commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

What Sphinx extension have we used for redirects before?

We use sphinxext-rediraffe in the Devguide, it generates stubs with some JS to redirect to the new page.

I knew rediraffe was somewhere! Is there a reason we don't want to introduce it for the main docs?

@StanFromIreland

Copy link
Copy Markdown
Member

Is there a reason we don't want to introduce it for the main docs?

I presume it's simply because there hasn't really been a need so far. We're less keen to move pages here than in the Devguide. IIRC rediraffe requires JS, but that ship has sailed anyway.

@hugovk

hugovk commented Sep 1, 2026

Copy link
Copy Markdown
Member

Server-side psf-salt redirects would be better than client-side sphinxext-rediraffe: they work with JavaScript disabled (better for all the scrapers and bots), are faster on server-side (HTTP layer before any HTML fetched), and get cached in the CDN, and better for SEO.

We don't have such server-side control for the devguide, which is hosted on GitHub Pages. (Also I'd say client-side JS redirects are fine for the less-important devguide.)

@nedbat

nedbat commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

That all makes sense. Do we have a way to coordinate the updates to psf-salt with updates to the docs, especially with backports involved?

@StanFromIreland

StanFromIreland commented Sep 1, 2026

Copy link
Copy Markdown
Member

(There's no documented process I'm afraid) You can open a PR there and limit the redirect to specific Python versions. I can review and merge when we land this.

@nedbat nedbat added the docs Documentation in the Doc dir label Sep 1, 2026
@github-project-automation github-project-automation Bot moved this to Todo in Docs PRs Sep 1, 2026
@nedbat
nedbat force-pushed the nedbat/split-builtin-stdlib branch from c6de373 to ea9966e Compare September 1, 2026 17:43
@nedbat

nedbat commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

Moving pages causes the "removed HTML IDs" check to fail. The IDs aren't gone, they are in a different page. Do I still add them to removed-ids.txt?

@StanFromIreland

Copy link
Copy Markdown
Member

Do I still add them to removed-ids.txt?

Yes, see the line with an asyncio file for the required format.

@nedbat

nedbat commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

Added sphinxext-rediraffe.

@nedbat

nedbat commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

Now the missing ids check is complaining individually about every id in the six library pages I moved. :(

@nedbat

nedbat commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

Ah, because rediraffe leaves library/stdtypes.html behind to actively redirect, and that file has none of the ids. Looking into updating the id checker.

@nedbat
nedbat force-pushed the nedbat/split-builtin-stdlib branch 2 times, most recently from 5219e72 to 373f4e6 Compare September 3, 2026 15:01
@nedbat

nedbat commented Sep 3, 2026

Copy link
Copy Markdown
Member Author

I've updated the id checker to follow redirect files.

@nedbat

nedbat commented Sep 4, 2026

Copy link
Copy Markdown
Member Author

We use sphinxext-rediraffe in the Devguide, it generates stubs with some JS to redirect to the new page.

BTW, the rediraffe stubs do not depend on JavaScript, it uses two techniques:

<html>
    <head>
        <noscript>
            <meta http-equiv="refresh" content="0; url=../builtins/stdtypes.html"/>
        </noscript>
    </head>
    <body>
        <script>
            window.location.href = '../builtins/stdtypes.html' + (window.location.search || '') + (window.location.hash || '');
        </script>
        <p>You should have been redirected.</p>
        <a href="../builtins/stdtypes.html">If not, click here to continue.</a>
    </body>
</html>

though the JavaScript half will keep the anchor and query string.

@StanFromIreland

Copy link
Copy Markdown
Member

There are conflicts now.

Also, a few additional sites that need updating:

InternalDocs/structure.md:* [`Doc/library/functions.rst`](../Doc/library/functions.rst)
InternalDocs/structure.md:* [`Doc/library/stdtypes.rst`](../Doc/library/stdtypes.rst)
Tools/unicode/makeunicodedata.py:#   * Doc/library/stdtypes.rst (four occurrences)

Comment thread Doc/builtins/index.rst
Comment thread Doc/conf.py Outdated
Comment thread Doc/library/intro.rst Outdated
@nedbat
nedbat force-pushed the nedbat/split-builtin-stdlib branch from 65aaf8b to 016ce6b Compare September 10, 2026 22:42
@nedbat

nedbat commented Sep 10, 2026

Copy link
Copy Markdown
Member Author

I think this is done.

@StanFromIreland

Copy link
Copy Markdown
Member

@nedbat can you please avoid force pushing, it makes it a little harder to review. See also the section in the Devguide.

@nedbat

nedbat commented Sep 11, 2026

Copy link
Copy Markdown
Member Author

sorry, a habit from other repos.

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

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

5 participants