new file mode 100644
@@ -0,0 +1,36 @@
+From: Khem Raj <khem.raj@oss.qualcomm.com>
+Subject: [PATCH] tests: accept docutils 0.23 boolean attribute serialization
+
+docutils 0.23 serializes boolean node attributes as "1"/"0" in its
+pseudo-XML output instead of "True"/"False", which makes every
+test_examples comparison fail against the bundled compare.xml models.
+Normalize the generated value before comparing.
+
+Upstream-Status: Pending
+
+AI-Generated: Uses Claude Code
+Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
+---
+diff --git a/tests/test_examples.py b/tests/test_examples.py
+index c256d83..20a9d3e 100644
+--- a/tests/test_examples.py
++++ b/tests/test_examples.py
+@@ -150,10 +150,18 @@ def str_to_set(x):
+ return frozenset(x.split())
+
+
++# docutils >= 0.23 serializes boolean attributes as "1"/"0" instead of
++# "True"/"False"
++BOOL_ATTR_VALUES = {"1": "True", "0": "False"}
++
++
+ def attr_compare(name, actual, expected):
+ if name == "classes":
+ return str_to_set(actual) >= str_to_set(expected)
+
++ if expected in ("True", "False"):
++ actual = BOOL_ATTR_VALUES.get(actual, actual)
++
+ return actual == expected
+
+
new file mode 100755
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# These examples compare against XML models generated with doxygen 1.9.x;
+# doxygen 1.18 renders group titles, markdown headings, function pointer
+# members and member ordering differently
+pytest --automake \
+ --deselect "tests/test_examples.py::test_example[class]" \
+ --deselect "tests/test_examples.py::test_example[cpp_function]" \
+ --deselect "tests/test_examples.py::test_example[group]" \
+ --deselect "tests/test_examples.py::test_example[headings]"
@@ -6,6 +6,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=9e49eecf36fc015de7c61a0247df75d6"
SRC_URI[sha256sum] = "ff56af8bfd0b50ebf10c81a07b8a5739787eb015d26b4ba162b6983d6e17c7c3"
+SRC_URI += "file://0001-tests-accept-docutils-0.23-boolean-attribute-seriali.patch \
+ file://run-ptest \
+ "
+
inherit pypi python_flit_core ptest ptest-python-pytest
RDEPENDS:${PN} = "python3-sphinx"
docutils 0.23 serializes boolean attributes as "1"/"0" rather than "True"/"False", which made almost every test_examples case fail; add a patch that normalizes the value when comparing. The class, cpp_function, group and headings examples compare against models generated with doxygen 1.9.x and do not match doxygen 1.18 output, so deselect them in a custom run-ptest. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com> --- ...utils-0.23-boolean-attribute-seriali.patch | 36 +++++++++++++++++++ .../python3-breathe/python3-breathe/run-ptest | 10 ++++++ .../python3-breathe/python3-breathe_5.1.0.bb | 4 +++ 3 files changed, 50 insertions(+) create mode 100644 meta-python/recipes-devtools/python3-breathe/python3-breathe/0001-tests-accept-docutils-0.23-boolean-attribute-seriali.patch create mode 100755 meta-python/recipes-devtools/python3-breathe/python3-breathe/run-ptest