qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: stefanha@redhat.com, John Snow <jsnow@redhat.com>
Subject: [PULL 01/61] docs/sphinx: create QAPI domain extension stub
Date: Tue, 11 Mar 2025 12:30:37 +0100	[thread overview]
Message-ID: <20250311113137.1277125-2-armbru@redhat.com> (raw)
In-Reply-To: <20250311113137.1277125-1-armbru@redhat.com>

From: John Snow <jsnow@redhat.com>

A Sphinx domain is a collection of directive and role extensions meant
to facilitate the documentation of a specific language. For instance,
Sphinx ships with "python" and "cpp" domains. This patch introduces a
stub for the "qapi" language domain.

Please see https://www.sphinx-doc.org/en/master/usage/domains/index.html
for more information.

This stub doesn't really do anything yet, we'll get to it brick-by-brick
in the forthcoming commits to keep the series breezy and the git history
informative.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-ID: <20250311034303.75779-4-jsnow@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 docs/conf.py               |  9 +++++-
 docs/sphinx/qapi_domain.py | 56 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 1 deletion(-)
 create mode 100644 docs/sphinx/qapi_domain.py

diff --git a/docs/conf.py b/docs/conf.py
index 31bb9a3789..49d9de894c 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -60,7 +60,14 @@
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ['kerneldoc', 'qmp_lexer', 'hxtool', 'depfile', 'qapidoc']
+extensions = [
+    'depfile',
+    'hxtool',
+    'kerneldoc',
+    'qapi_domain',
+    'qapidoc',
+    'qmp_lexer',
+]
 
 if sphinx.version_info[:3] > (4, 0, 0):
     tags.add('sphinx4')
diff --git a/docs/sphinx/qapi_domain.py b/docs/sphinx/qapi_domain.py
new file mode 100644
index 0000000000..a1983d9444
--- /dev/null
+++ b/docs/sphinx/qapi_domain.py
@@ -0,0 +1,56 @@
+"""
+QAPI domain extension.
+"""
+
+from __future__ import annotations
+
+from typing import (
+    TYPE_CHECKING,
+    AbstractSet,
+    Any,
+    Dict,
+    Tuple,
+)
+
+from sphinx.domains import Domain, ObjType
+from sphinx.util import logging
+
+
+if TYPE_CHECKING:
+    from sphinx.application import Sphinx
+
+logger = logging.getLogger(__name__)
+
+
+class QAPIDomain(Domain):
+    """QAPI language domain."""
+
+    name = "qapi"
+    label = "QAPI"
+
+    object_types: Dict[str, ObjType] = {}
+    directives = {}
+    roles = {}
+    initial_data: Dict[str, Dict[str, Tuple[Any]]] = {}
+    indices = []
+
+    def merge_domaindata(
+        self, docnames: AbstractSet[str], otherdata: Dict[str, Any]
+    ) -> None:
+        pass
+
+    def resolve_any_xref(self, *args: Any, **kwargs: Any) -> Any:
+        # pylint: disable=unused-argument
+        return []
+
+
+def setup(app: Sphinx) -> Dict[str, Any]:
+    app.setup_extension("sphinx.directives")
+    app.add_domain(QAPIDomain)
+
+    return {
+        "version": "1.0",
+        "env_version": 1,
+        "parallel_read_safe": True,
+        "parallel_write_safe": True,
+    }
-- 
2.48.1



  reply	other threads:[~2025-03-11 11:52 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-11 11:30 [PULL 00/61] QAPI patches patches for 2025-03-11 Markus Armbruster
2025-03-11 11:30 ` Markus Armbruster [this message]
2025-03-11 11:30 ` [PULL 02/61] docs/sphinx: add compat.py module and nested_parse helper Markus Armbruster
2025-03-11 11:30 ` [PULL 03/61] docs/qapi-domain: add QAPI domain object registry Markus Armbruster
2025-03-11 11:30 ` [PULL 04/61] docs/qapi-domain: add QAPI index Markus Armbruster
2025-03-11 11:30 ` [PULL 05/61] docs/qapi-domain: add resolve_any_xref() Markus Armbruster
2025-03-11 11:30 ` [PULL 06/61] docs/qapi-domain: add QAPI xref roles Markus Armbruster
2025-03-11 11:30 ` [PULL 07/61] docs/qapi-domain: add compatibility node classes Markus Armbruster
2025-03-11 11:30 ` [PULL 08/61] docs/qapi-domain: Add QAPIDescription abstract class Markus Armbruster
2025-03-11 11:30 ` [PULL 09/61] docs/qapi-domain: add qapi:module directive Markus Armbruster
2025-03-11 11:30 ` [PULL 10/61] docs/qapi-domain: add QAPIObject class Markus Armbruster
2025-03-11 11:30 ` [PULL 11/61] docs/qapi-domain: add qapi:command directive Markus Armbruster
2025-03-11 11:30 ` [PULL 12/61] docs/qapi-domain: add :since: directive option Markus Armbruster
2025-03-11 11:30 ` [PULL 13/61] docs/qapi-domain: add "Arguments:" field lists Markus Armbruster
2025-03-11 11:30 ` [PULL 14/61] docs/qapi-domain: add "Features:" " Markus Armbruster
2025-03-11 11:30 ` [PULL 15/61] docs/qapi-domain: add "Errors:" " Markus Armbruster
2025-03-11 11:30 ` [PULL 16/61] docs/qapi-domain: add "Return:" " Markus Armbruster
2025-03-11 11:30 ` [PULL 17/61] docs/qapi-domain: add qapi:enum directive Markus Armbruster
2025-03-11 11:30 ` [PULL 18/61] docs/qapi-domain: add qapi:alternate directive Markus Armbruster
2025-03-11 11:30 ` [PULL 19/61] docs/qapi-domain: add qapi:event directive Markus Armbruster
2025-03-11 11:30 ` [PULL 20/61] docs/qapi-domain: add qapi:object directive Markus Armbruster
2025-03-11 11:30 ` [PULL 21/61] docs/qapi-domain: add :deprecated: directive option Markus Armbruster
2025-03-11 11:30 ` [PULL 22/61] docs/qapi-domain: add :unstable: " Markus Armbruster
2025-03-11 11:30 ` [PULL 23/61] docs/qapi-domain: add :ifcond: " Markus Armbruster
2025-03-11 11:31 ` [PULL 24/61] docs/qapi-domain: add warnings for malformed field lists Markus Armbruster
2025-03-11 11:31 ` [PULL 25/61] docs/qapi-domain: add type cross-refs to " Markus Armbruster
2025-03-11 11:31 ` [PULL 26/61] docs/qapi-domain: add CSS styling Markus Armbruster
2025-03-11 11:31 ` [PULL 27/61] docs/qapi-domain: add XREF compatibility goop for Sphinx < 4.1 Markus Armbruster
2025-03-11 11:31 ` [PULL 28/61] docs/qapi-domain: warn when QAPI domain xrefs fail to resolve Markus Armbruster
2025-03-11 11:31 ` [PULL 29/61] docs/qapi-domain: Fix error context reporting in Sphinx 5.x and 6.x Markus Armbruster
2025-03-11 11:31 ` [PULL 30/61] qapi/parser: adjust info location for doc body section Markus Armbruster
2025-03-11 11:31 ` [PULL 31/61] qapi: clean up encoding of section kinds Markus Armbruster
2025-03-11 11:31 ` [PULL 32/61] qapi/schema: add __repr__ to QAPIDoc.Section Markus Armbruster
2025-03-11 11:31 ` [PULL 33/61] docs/qapidoc: add transmogrifier stub Markus Armbruster
2025-03-11 11:31 ` [PULL 34/61] docs/qapidoc: split old implementation into qapidoc_legacy.py Markus Armbruster
2025-03-11 11:31 ` [PULL 35/61] docs/qapidoc: Fix static typing on qapidoc.py Markus Armbruster
2025-03-11 11:31 ` [PULL 36/61] docs/qapidoc: add transmogrifier class stub Markus Armbruster
2025-03-11 11:31 ` [PULL 37/61] docs/qapidoc: add visit_module() method Markus Armbruster
2025-03-11 11:31 ` [PULL 38/61] qapi/source: allow multi-line QAPISourceInfo advancing Markus Armbruster
2025-03-11 11:31 ` [PULL 39/61] docs/qapidoc: add visit_freeform() method Markus Armbruster
2025-03-11 11:31 ` [PULL 40/61] docs/qapidoc: add preamble() method Markus Armbruster
2025-03-11 11:31 ` [PULL 41/61] docs/qapidoc: add visit_paragraph() method Markus Armbruster
2025-03-11 11:31 ` [PULL 42/61] docs/qapidoc: add visit_errors() method Markus Armbruster
2025-03-11 11:31 ` [PULL 43/61] docs/qapidoc: add format_type() method Markus Armbruster
2025-03-11 11:31 ` [PULL 44/61] docs/qapidoc: add add_field() and generate_field() helper methods Markus Armbruster
2025-03-11 11:31 ` [PULL 45/61] docs/qapidoc: add visit_feature() method Markus Armbruster
2025-03-11 11:31 ` [PULL 46/61] docs/qapidoc: prepare to record entity being transmogrified Markus Armbruster
2025-03-11 11:31 ` [PULL 47/61] docs/qapidoc: add visit_returns() method Markus Armbruster
2025-03-11 11:31 ` [PULL 48/61] docs/qapidoc: add visit_member() method Markus Armbruster
2025-03-11 11:31 ` [PULL 49/61] docs/qapidoc: add visit_sections() method Markus Armbruster
2025-03-11 11:31 ` [PULL 50/61] docs/qapidoc: add visit_entity() Markus Armbruster
2025-03-11 11:31 ` [PULL 51/61] docs/qapidoc: implement transmogrify() method Markus Armbruster
2025-03-11 11:31 ` [PULL 52/61] docs/qapidoc: process @foo into ``foo`` Markus Armbruster
2025-03-11 11:31 ` [PULL 53/61] docs/qapidoc: add intermediate output debugger Markus Armbruster
2025-03-11 11:31 ` [PULL 54/61] docs/qapidoc: Add "the members of" pointers Markus Armbruster
2025-03-11 11:31 ` [PULL 55/61] docs/qapidoc: generate entries for undocumented members Markus Armbruster
2025-03-11 11:31 ` [PULL 56/61] qapi/parser: add undocumented stub members to all_sections Markus Armbruster
2025-03-11 11:31 ` [PULL 57/61] docs: disambiguate cross-references Markus Armbruster
2025-03-11 11:31 ` [PULL 58/61] docs: enable qapidoc transmogrifier for QEMU QMP Reference Markus Armbruster
2025-03-11 11:31 ` [PULL 59/61] docs: add qapi-domain syntax documentation Markus Armbruster
2025-03-11 11:31 ` [PULL 60/61] MAINTAINERS: Add jsnow as maintainer for Sphinx documentation Markus Armbruster
2025-03-11 11:31 ` [PULL 61/61] scripts/qapi/backend: Clean up create_backend()'s failure mode Markus Armbruster
2025-03-13  7:04 ` [PULL 00/61] QAPI patches patches for 2025-03-11 Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250311113137.1277125-2-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).