[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 11/23] docs/qapidoc: add preamble() method
From: |
Markus Armbruster |
Subject: |
Re: [PATCH 11/23] docs/qapidoc: add preamble() method |
Date: |
Fri, 20 Dec 2024 15:15:04 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
John Snow <jsnow@redhat.com> writes:
> This method adds the options/preamble to each definition block. Notably,
> :since: and :ifcond: are added, as are any "special features" such as
> :deprecated: and :unstable:.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> docs/sphinx/qapidoc.py | 33 ++++++++++++++++++++++++++++++++-
> 1 file changed, 32 insertions(+), 1 deletion(-)
>
> diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
> index 6f8f69077b1..85c7ce94564 100644
> --- a/docs/sphinx/qapidoc.py
> +++ b/docs/sphinx/qapidoc.py
> @@ -38,7 +38,7 @@
> from qapi.error import QAPIError, QAPISemError
> from qapi.gen import QAPISchemaVisitor
> from qapi.parser import QAPIDoc
> -from qapi.schema import QAPISchema
> +from qapi.schema import QAPISchema, QAPISchemaEntity
> from qapi.source import QAPISourceInfo
>
> from sphinx import addnodes
> @@ -125,6 +125,37 @@ def ensure_blank_line(self) -> None:
> # +2: correct for zero/one index, then increment by one.
> self.add_line_raw("", fname, line + 2)
>
> + # Transmogrification helpers
> +
> + def preamble(self, ent: QAPISchemaEntity) -> None:
> + """
> + Generate option lines for qapi entity directives.
> + """
> + if ent.doc and ent.doc.since:
> + assert ent.doc.since.tag == QAPIDoc.Tag.SINCE
> + # Generated from the entity's docblock; info location is exact.
> + self.add_line(f":since: {ent.doc.since.text}",
> ent.doc.since.info)
> +
> + if ent.ifcond.is_present():
> + doc = ent.ifcond.docgen()
> + # Generated from entity definition; info location is approximate.
> + self.add_line(f":ifcond: {doc}", ent.info)
> +
> + # Hoist special features such as :deprecated: and :unstable:
> + # into the options block for the entity. If, in the future, new
> + # special features are added, qapi-domain will chirp about
> + # unrecognized options and fail.
> + for feat in ent.features:
> + if feat.is_special():
> + # We don't expect special features to have an ifcond
> property.
> + # (Hello, intrepid developer in the future who changed that!)
> + # ((With luck, you are not me.))
> + assert not feat.ifcond.is_present()
Nope :)
The attempt to add a conditional special feature now fails with
Sphinx parallel build error:
AssertionError
If you want to outlaw conditional special features, reject them cleanly
in schema.py, document the restriction in docs/devel/qapi-code-gen.rst,
and explain why in the commit message. Recommend a separate commit, to
make it stand out in git-log.
> + # Generated from entity def; info location is approximate.
> + self.add_line(f":{feat.name}:", feat.info)
> +
> + self.ensure_blank_line()
> +
> # Transmogrification core methods
>
> def visit_module(self, path: str) -> None:
- Re: [PATCH 04/23] qapi: expand tags to all doc sections, (continued)
- [PATCH 05/23] qapi/schema: add __repr__ to QAPIDoc.Section, John Snow, 2024/12/12
- [PATCH 06/23] docs/qapidoc: add transmogrifier stub, John Snow, 2024/12/12
- [PATCH 07/23] docs/qapidoc: add transmogrifier class stub, John Snow, 2024/12/12
- [PATCH 08/23] docs/qapidoc: add visit_module() method, John Snow, 2024/12/12
- [PATCH 09/23] qapi/source: allow multi-line QAPISourceInfo advancing, John Snow, 2024/12/12
- [PATCH 10/23] docs/qapidoc: add visit_freeform() method, John Snow, 2024/12/12
- [PATCH 11/23] docs/qapidoc: add preamble() method, John Snow, 2024/12/12
- Re: [PATCH 11/23] docs/qapidoc: add preamble() method,
Markus Armbruster <=
- [PATCH 12/23] docs/qapidoc: add visit_paragraph() method, John Snow, 2024/12/12
- [PATCH 14/23] docs/qapidoc: add format_type() method, John Snow, 2024/12/12
- [PATCH 15/23] docs/qapidoc: add add_field() and generate_field() helper methods, John Snow, 2024/12/12
- [PATCH 13/23] docs/qapidoc: add visit_errors() method, John Snow, 2024/12/12
- [PATCH 16/23] docs/qapidoc: add visit_feature() method, John Snow, 2024/12/12
- [PATCH 19/23] docs/qapidoc: add visit_member() method, John Snow, 2024/12/12
- [PATCH 17/23] docs/qapidoc: record current documented entity in transmogrifier, John Snow, 2024/12/12
- [PATCH 21/23] docs/qapidoc: add visit_entity(), John Snow, 2024/12/12