Skip to content

gh-148961 : Use parsed-literal for the slot column legend in c-api/typeobj.rst#148962

Open
Chang-LeHung wants to merge 1 commit intopython:mainfrom
Chang-LeHung:fix-issue-148961
Open

gh-148961 : Use parsed-literal for the slot column legend in c-api/typeobj.rst#148962
Chang-LeHung wants to merge 1 commit intopython:mainfrom
Chang-LeHung:fix-issue-148961

Conversation

@Chang-LeHung
Copy link
Copy Markdown
Contributor

@Chang-LeHung Chang-LeHung commented Apr 24, 2026

The two small legends under the PyTypeObject "Quick Reference" table in
Doc/c-api/typeobj.rst explain what each character in the "D" (default)
and "I" (inheritance) columns means. They were wrapped in
.. code-block:: none, so reST inline markup inside them was rendered
verbatim:

  • *PyType_Ready* and *NULL* showed literal asterisks.
  • PyType_Ready was plain text instead of a cross-reference link.
  • NULL was plain text instead of the NULL inline literal used
    throughout the rest of the page.

Before:

image

After:

Clipboard_Screenshot_1777045193

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

Comment thread Doc/c-api/typeobj.rst
**"D"**: default (if slot is set to ``NULL``)

.. code-block:: none
.. parsed-literal::
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.

These break translations, see #135828.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the pointer to #135828.

If we want to drop parsed-literal from this PR, I see two reasonable replacements:

Option A — keep code-block:: none, just remove the stray emphasis markers

In the original second block, *PyType_Ready* and *NULL* are wrapped in asterisks, but code-block:: renders them verbatim, so they show up as literal * in the output. The first block doesn't have them. The minimal fix is just to remove those asterisks so the second block is consistent with the first:

   .. code-block:: none

-     X - type slot is inherited via *PyType_Ready* if defined with a *NULL* value
+     X - type slot is inherited via PyType_Ready if defined with a NULL value
      % - the slots of the sub-struct are inherited individually
      G - inherited, but only in combination with other slots; see the slot's description
      ? - it's complicated; see the slot's description

The visual layout stays exactly as it is today; we give up the cross-reference / inline-literal improvements.

Option B — switch to a line block (|)

A plain reST line block: no parsed-literal, no syntax-highlighting code path, translation-safe, and inline :c:func: / NULL still work. Visually it's a compact multi-line paragraph (no bullets, no extra spacing) — close to the original block-style legend, just without the gray code-block background:

   **"D"**:  default (if slot is set to ``NULL``)

   | ``X`` -- :c:func:`PyType_Ready` sets this value if it is ``NULL``
   | ``~`` -- :c:func:`PyType_Ready` always sets this value (it should be ``NULL``)
   | ``?`` -- :c:func:`PyType_Ready` may set this value depending on other slots

   Also see the inheritance column ("I").

   **"I"**:  inheritance

   | ``X`` -- type slot is inherited via :c:func:`PyType_Ready` if defined with a ``NULL`` value
   | ``%`` -- the slots of the sub-struct are inherited individually
   | ``G`` -- inherited, but only in combination with other slots; see the slot's description
   | ``?`` -- it's complicated; see the slot's description

make html with --fail-on-warning passes locally on both options.

A keeps the diff minimal; B preserves the original motivation of the PR (PyType_Ready as a cross-reference, NULL as an inline literal).

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

Labels

awaiting review docs Documentation in the Doc dir skip news

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants