graphql-query 1.4.0

Creator: rpa-with-ash

Last updated:

Add to Cart

Description:

graphqlquery 1.4.0

graphql-query





graphql_query is a complete Domain Specific Language (DSL) for GraphQL query in Python. With this package
you can to

generate a correct GraphQL query string from a python classes;
use and share similar Arguments, Variables and e.t.c between different queries;
easily add new fields to your query;
add Fragments and Directives to queries;
generate graphql_query classes from pydantic data-model;

The documentation for graphql_query can be found at https://denisart.github.io/graphql-query/.
Quickstart
Install with pip
pip install graphql_query

Simple query
Code for the simple query
{
hero {
name
}
}

it is
from graphql_query import Operation, Query

hero = Query(name="hero", fields=["name"])
operation = Operation(type="query", queries=[hero])

print(operation.render())
"""
query {
hero {
name
}
}
"""

The render method for the graphql_query.Operation object
just returns the final string with a query. Inside the fields array of the graphql_query.Query object
you can use

str (a field name);
object of graphql_query.Field type;
graphql_query.Fragment and graphql_query.InlineFragment.

Arguments, Variables and Directives
For generation of the following query
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}

we can use the following python code
from graphql_query import Argument, Directive, Field, Operation, Query, Variable

episode = Variable(name="episode", type="Episode")
withFriends = Variable(name="withFriends", type="Boolean!")

arg_episode = Argument(name="episode", value=episode)
arg_if = Argument(name="if", value=withFriends)

hero = Query(
name="hero",
arguments=[arg_episode],
fields=[
"name",
Field(
name="friends",
fields=["name"],
directives=[Directive(name="include", arguments=[arg_if])]
)
]
)
operation = Operation(
type="query",
name="Hero",
variables=[episode, withFriends],
queries=[hero]
)
print(operation.render())
"""
query Hero(
$episode: Episode
$withFriends: Boolean!
) {
hero(
episode: $episode
) {
name
friends @include(
if: $withFriends
) {
name
}
}
}
"""

You can find other examples in the documentation.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.