1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
from dataclasses import dataclass
from typing import Annotated
from graphql.utilities import print_schema
from apischema import alias, schema
from apischema.graphql import graphql_schema, resolver
@dataclass
class Foo:
@resolver
def bar(
self, param: Annotated[int, alias("arg") | schema(description="argument")]
) -> int:
return param
def foo() -> Foo:
return Foo()
schema_ = graphql_schema(query=[foo])
# Notice that bar is Int while baz is Int!
schema_str = '''\
type Query {
foo: Foo!
}
type Foo {
bar(
"""argument"""
arg: Int!
): Int!
}'''
assert print_schema(schema_) == schema_str
|