Extending jsonschema

I didn’t create jsonschema with extensibility in mind. But I also never thought so many people would find it useful.

Render custom keywords

That being said ankostis needed a way to render his own custom keywords. This is his solution, you need to append this code to your conf.py file.

## PATCH `sphinx-jsonschema`
#  to render the extra `units`` and ``tags`` schema properties
#
def _patched_sphinx_jsonschema_simpletype(self, schema):
    """Render the *extra* ``units`` and ``tags`` schema properties for every object."""
    rows = _original_sphinx_jsonschema_simpletype(self, schema)

    if "units" in schema:
        units = schema["units"]
        units = f"``{units}``"
        rows.append(self._line(self._cell("units"), self._cell(units)))
        del schema["units"]

    if "tags" in schema:
        tags = ", ".join(f"``{tag}``" for tag in schema["tags"])
        rows.append(self._line(self._cell("tags"), self._cell(tags)))
        del schema["tags"]

    return rows

sjs_wide_format = importlib.import_module("sphinx-jsonschema.wide_format")
_original_sphinx_jsonschema_simpletype = sjs_wide_format.WideFormat._simpletype  # type: ignore
sjs_wide_format.WideFormat._simpletype = _patched_sphinx_jsonschema_simpletype  # type: ignore