A Sphinx domain for describing GraphQL schemas.
The following steps will walk through how to add graphqldomain
to an existing Sphinx project.
For instructions on how to set up a Sphinx project,
see Sphinx's documentation on
Getting Started.
graphqldomain
can be installed through pip:
pip install graphqldomain
Next, add graphqldomain
to the extensions
list in your Sphinx project's conf.py.
extensions.append("graphqldomain")
Each directive accepts a small snippet of the original schema. For more detailed usage, see the documentation: https://graphqldomain.readthedocs.io/en/latest/
.. gql:schema::
An example schema.
:optype Query query:
.. gql:directive:: @slow(super: Boolean = false) on FIELD_DEFINITION | ARGUMENT_DEFINITION
Indicates that the usage of this field or argument is slow,
and therefore queries with this field or argument should be made sparingly.
:argument super: Whether usage will be super slow, or just a bit slow.
.. gql:enum:: CharacterCase
The casing of a character.
.. gql:enum:value:: UPPER
Upper case.
.. gql:enum:value:: LOWER
Lower case.
.. gql:input:: Point2D
A point in a 2D coordinate system.
.. gql:input:field:: x: Float
The ``x`` coordinate of the point.
.. gql:input:field:: y: Float
The ``y`` coordinate of the point.
.. gql:interface:: NamedEntity
An entity with a name.
.. gql:interface:field:: name(lower: Boolean = false): String
The name of the entity.
:argument lower: Whether to lowercase the name or not.
.. gql:type:: Person implements NamedEntity
A human person.
.. gql:type:field:: age: Int
How old the person is in years.
.. gql:type:field:: picture: Url
.. gql:union:: Centre = Person | Point2D
A possible centre of the universe.
Tests are executed through tox.
tox
Code is formatted using black.
You can check your formatting using black's check mode:
tox -e format
You can also get black to format your changes for you:
black graphqldomain.py tests/
We use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the MIT License. See the LICENSE.rst file for details.