From 89fbbadfdda3e94626b600087a4cc63b5d202c7e Mon Sep 17 00:00:00 2001 From: Shubhangi-Nikam26 Date: Thu, 4 Jun 2026 10:43:17 +0530 Subject: [PATCH 1/2] feat: included sphinx mermaid package --- bazel/rules/rules_score/BUILD | 1 + bazel/rules/rules_score/README.md | 4 ++++ bazel/rules/rules_score/requirements.in | 1 + bazel/rules/rules_score/requirements.txt | 4 ++++ bazel/rules/rules_score/templates/conf.template.py | 1 + bazel/rules/rules_score/test/requirements.in | 1 + bazel/rules/rules_score/test/requirements.txt | 4 ++++ bazel/rules/rules_score/test/template/conf.template.py | 1 + 8 files changed, 17 insertions(+) diff --git a/bazel/rules/rules_score/BUILD b/bazel/rules/rules_score/BUILD index d00047b..b3c4d45 100644 --- a/bazel/rules/rules_score/BUILD +++ b/bazel/rules/rules_score/BUILD @@ -147,6 +147,7 @@ py_binary( requirement("rst2pdf"), requirement("sphinxcontrib-umlet"), requirement("svglib"), + requirement("sphinxcontrib-mermaid"), requirement("sphinxcontrib-plantuml"), ], ) diff --git a/bazel/rules/rules_score/README.md b/bazel/rules/rules_score/README.md index 5546d0c..d69b299 100644 --- a/bazel/rules/rules_score/README.md +++ b/bazel/rules/rules_score/README.md @@ -94,6 +94,10 @@ architectural_design( Diagrams in `public_api` are classified separately so their lobster items flow through `public_api_lobster_files` for failure-mode traceability. +Mermaid diagrams are also available in Sphinx-authored `.rst` and `.md` +sources via the bundled `sphinxcontrib-mermaid` extension, but unlike +`.puml` inputs they are not parsed into FlatBuffers or LOBSTER artifacts. + --- ## `unit` diff --git a/bazel/rules/rules_score/requirements.in b/bazel/rules/rules_score/requirements.in index c09147d..ce877b7 100644 --- a/bazel/rules/rules_score/requirements.in +++ b/bazel/rules/rules_score/requirements.in @@ -4,6 +4,7 @@ rst2pdf sphinx sphinx-needs sphinx-design +sphinxcontrib-mermaid sphinxcontrib-plantuml sphinxcontrib-umlet sphinx-rtd-theme diff --git a/bazel/rules/rules_score/requirements.txt b/bazel/rules/rules_score/requirements.txt index d477567..87185f5 100644 --- a/bazel/rules/rules_score/requirements.txt +++ b/bazel/rules/rules_score/requirements.txt @@ -751,6 +751,10 @@ sphinxcontrib-jsmath==1.0.1 \ --hash=sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 \ --hash=sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8 # via sphinx +sphinxcontrib-mermaid==2.0.0 \ + --hash=sha256:59a73249bbee2c74b1a4db036f8e8899ade65982bdda6712cf22b4f4e9874bb5 \ + --hash=sha256:cf4f7d453d001132eaba5d1fdf53d42049f02e913213cf8337427483bfca26f4 + # via -r bazel/rules/rules_score/requirements.in sphinxcontrib-plantuml==0.31 \ --hash=sha256:fd74752f8ea070e641c3f8a402fccfa1d4a4056e0967b56033d2a76282d9f956 # via -r bazel/rules/rules_score/requirements.in diff --git a/bazel/rules/rules_score/templates/conf.template.py b/bazel/rules/rules_score/templates/conf.template.py index 49f9f28..978f6f4 100644 --- a/bazel/rules/rules_score/templates/conf.template.py +++ b/bazel/rules/rules_score/templates/conf.template.py @@ -52,6 +52,7 @@ "sphinx_needs", "sphinx_design", "myst_parser", + "sphinxcontrib.mermaid", "sphinxcontrib.plantuml", "trlc", "clickable_plantuml", diff --git a/bazel/rules/rules_score/test/requirements.in b/bazel/rules/rules_score/test/requirements.in index 05d941e..eb6b3db 100644 --- a/bazel/rules/rules_score/test/requirements.in +++ b/bazel/rules/rules_score/test/requirements.in @@ -4,5 +4,6 @@ sphinx sphinx-needs sphinx-design myst-parser +sphinxcontrib-mermaid sphinxcontrib-plantuml sphinx-rtd-theme diff --git a/bazel/rules/rules_score/test/requirements.txt b/bazel/rules/rules_score/test/requirements.txt index 8666593..b00590e 100644 --- a/bazel/rules/rules_score/test/requirements.txt +++ b/bazel/rules/rules_score/test/requirements.txt @@ -488,6 +488,10 @@ sphinxcontrib-jsmath==1.0.1 \ --hash=sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 \ --hash=sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8 # via sphinx +sphinxcontrib-mermaid==2.0.0 \ + --hash=sha256:59a73249bbee2c74b1a4db036f8e8899ade65982bdda6712cf22b4f4e9874bb5 \ + --hash=sha256:cf4f7d453d001132eaba5d1fdf53d42049f02e913213cf8337427483bfca26f4 + # via -r requirements.in sphinxcontrib-plantuml==0.31 \ --hash=sha256:fd74752f8ea070e641c3f8a402fccfa1d4a4056e0967b56033d2a76282d9f956 # via -r requirements.in diff --git a/bazel/rules/rules_score/test/template/conf.template.py b/bazel/rules/rules_score/test/template/conf.template.py index b8670fa..57dd4c2 100644 --- a/bazel/rules/rules_score/test/template/conf.template.py +++ b/bazel/rules/rules_score/test/template/conf.template.py @@ -34,6 +34,7 @@ "sphinx_needs", "sphinx_design", "myst_parser", + "sphinxcontrib.mermaid", "sphinxcontrib.plantuml", "score_plantuml", "score_metamodel", From cf97995afe6536f9370d9177cf14dcd84adb9124 Mon Sep 17 00:00:00 2001 From: Shubhangi-Nikam26 Date: Wed, 17 Jun 2026 05:22:29 +0000 Subject: [PATCH 2/2] add Sphinx extra_opts passthrough and Mermaid dependency --- bazel/rules/rules_score/BUILD | 1 + bazel/rules/rules_score/README.md | 4 ++-- bazel/rules/rules_score/private/dependable_element.bzl | 2 ++ bazel/rules/rules_score/private/sphinx_module.bzl | 8 +++++++- bazel/rules/rules_score/templates/conf.template.py | 1 - bazel/rules/rules_score/test/template/conf.template.py | 1 - 6 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bazel/rules/rules_score/BUILD b/bazel/rules/rules_score/BUILD index b3c4d45..d089de9 100644 --- a/bazel/rules/rules_score/BUILD +++ b/bazel/rules/rules_score/BUILD @@ -200,3 +200,4 @@ string_flag( ], visibility = ["//visibility:public"], ) + diff --git a/bazel/rules/rules_score/README.md b/bazel/rules/rules_score/README.md index d69b299..10b8668 100644 --- a/bazel/rules/rules_score/README.md +++ b/bazel/rules/rules_score/README.md @@ -95,8 +95,8 @@ Diagrams in `public_api` are classified separately so their lobster items flow through `public_api_lobster_files` for failure-mode traceability. Mermaid diagrams are also available in Sphinx-authored `.rst` and `.md` -sources via the bundled `sphinxcontrib-mermaid` extension, but unlike -`.puml` inputs they are not parsed into FlatBuffers or LOBSTER artifacts. +sources via the bundled `sphinxcontrib-mermaid` extension, but unlike `.puml` +inputs they are not parsed into FlatBuffers or LOBSTER artifacts. --- diff --git a/bazel/rules/rules_score/private/dependable_element.bzl b/bazel/rules/rules_score/private/dependable_element.bzl index 6a6368f..d65d794 100644 --- a/bazel/rules/rules_score/private/dependable_element.bzl +++ b/bazel/rules/rules_score/private/dependable_element.bzl @@ -1255,6 +1255,7 @@ def dependable_element( maturity = "release", sphinx = Label("//bazel/rules/rules_score:score_build"), testonly = True, + extra_opts = [], **kwargs): """Define a dependable element (Safety Element out of Context - SEooC) following S-CORE process guidelines. @@ -1333,6 +1334,7 @@ def dependable_element( deps = [d + "_doc" for d in deps], sphinx = sphinx, testonly = testonly, + extra_opts = extra_opts, **kwargs ) diff --git a/bazel/rules/rules_score/private/sphinx_module.bzl b/bazel/rules/rules_score/private/sphinx_module.bzl index 219e161..d3170e6 100644 --- a/bazel/rules/rules_score/private/sphinx_module.bzl +++ b/bazel/rules/rules_score/private/sphinx_module.bzl @@ -98,6 +98,8 @@ def _score_needs_impl(ctx): "--log-level", get_log_level(ctx), ] + for opt in ctx.attr.extra_opts: + needs_args.append(ctx.expand_location(opt, targets = ctx.attr.srcs)) ctx.actions.run( inputs = needs_inputs, outputs = [needs_output], @@ -277,7 +279,10 @@ def _score_html_impl(ctx): # ====================================================================================== _score_needs = rule( implementation = _score_needs_impl, - attrs = sphinx_rule_attrs, + attrs = dict( + sphinx_rule_attrs, + extra_opts = attr.string_list(doc = "Regular additional string options to pass onto Sphinx."), + ), toolchains = ["//bazel/rules/rules_score:toolchain_type"], ) _score_html = rule( @@ -349,6 +354,7 @@ def sphinx_module( index = index, deps = [d + "_needs" for d in deps], testonly = testonly, + extra_opts = extra_opts, **kwargs ) _score_html( diff --git a/bazel/rules/rules_score/templates/conf.template.py b/bazel/rules/rules_score/templates/conf.template.py index 978f6f4..49f9f28 100644 --- a/bazel/rules/rules_score/templates/conf.template.py +++ b/bazel/rules/rules_score/templates/conf.template.py @@ -52,7 +52,6 @@ "sphinx_needs", "sphinx_design", "myst_parser", - "sphinxcontrib.mermaid", "sphinxcontrib.plantuml", "trlc", "clickable_plantuml", diff --git a/bazel/rules/rules_score/test/template/conf.template.py b/bazel/rules/rules_score/test/template/conf.template.py index 57dd4c2..b8670fa 100644 --- a/bazel/rules/rules_score/test/template/conf.template.py +++ b/bazel/rules/rules_score/test/template/conf.template.py @@ -34,7 +34,6 @@ "sphinx_needs", "sphinx_design", "myst_parser", - "sphinxcontrib.mermaid", "sphinxcontrib.plantuml", "score_plantuml", "score_metamodel",