you can use the following package graphql-query
For example, for the query
{
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
appearsIn
friends {
name
}
}
we have the following code
from graphql_query import Argument, Operation, Query, Fragment, Field
comparisonFields = Fragment(
name="comparisonFields",
type="Character",
fields=["name", "appearsIn", Field(name="friends", fields=["name"])]
)
leftComparison = Query(
name="hero",
alias="leftComparison",
arguments=[Argument(name="episode", value="EMPIRE")],
fields=[comparisonFields]
)
rightComparison = Query(
name="hero",
alias="rightComparison",
arguments=[Argument(name="episode", value="JEDI")],
fields=[comparisonFields]
)
operation = Operation(
type="query",
queries=[leftComparison, rightComparison],
fragments=[comparisonFields]
)
print(operation.render())
# query {
# leftComparison: hero(
# episode: EMPIRE
# ) {
# ...comparisonFields
# }
#
# rightComparison: hero(
# episode: JEDI
# ) {
# ...comparisonFields
# }
# }
#
# fragment comparisonFields on Character {
# name
# appearsIn
# friends {
# name
# }
# }