Source code for aiida_restapi.graphql.sphinx_ext
"""Sphinx extension for documenting the GraphQL schema."""
# pylint: disable=import-outside-toplevel
from typing import TYPE_CHECKING, List
from graphql.utilities import print_schema
from .main import SCHEMA
if TYPE_CHECKING:
from sphinx.application import Sphinx
[docs]
def setup(app: 'Sphinx') -> None:
"""Setup the sphinx extension."""
from docutils.nodes import Element, literal_block
from sphinx.util.docutils import SphinxDirective
class SchemaDirective(SphinxDirective):
"""Directive to generate the GraphQL schema."""
def run(self) -> List[Element]:
"""Run the directive."""
text = print_schema(SCHEMA.graphql_schema)
# TODO for lexing tried: https://gitlab.com/marcogiusti/pygments-graphql/-/blob/master/src/pygments_graphql.py
# but it failed
code_node = literal_block(text, text) # , language="graphql")
self.set_source_info(code_node)
return [code_node]
app.add_directive('aiida-graphql-schema', SchemaDirective)