# Path: tests/starwars/fixtures.py
# class Character:
# class Human(Character):
# class Droid(Character):
#     def __init__(self, id, name, friends, appearsIn, homePlanet):
#     def __init__(self, id, name, friends, appearsIn, primaryFunction):
# def get_character(id):
# def get_characters(ids):
# def get_friends(character):
# def get_hero(episode):
# async def get_hero_async(episode):
# def get_human(id):
# def get_droid(id):
# def create_review(episode, review):


import asyncio
from graphql import (
    GraphQLArgument,
    GraphQLEnumType,
    GraphQLEnumValue,
    GraphQLField,
    GraphQLInputField,
    GraphQLInputObjectType,
    GraphQLInt,
    GraphQLInterfaceType,
    GraphQLList,
    GraphQLNonNull,
    GraphQLObjectType,
    GraphQLSchema,
    GraphQLString,
    get_introspection_query,
    graphql_sync,
    print_schema,
)
from .fixtures import (
    create_review,
    get_characters,
    get_droid,
    get_friends,
    get_hero_async,
    get_human,
    reviews,
)



episode_enum = GraphQLEnumType(
    "Episode",
    {
        "NEWHOPE": GraphQLEnumValue(4, description="Released in 1977.",),
        "EMPIRE": GraphQLEnumValue(5, description="Released in 1980.",),
        "JEDI": GraphQLEnumValue(6, description="Released in 1983.",),
    },
    description="One of the films in the Star Wars Trilogy",
)


human_type: GraphQLObjectType
droid_type: GraphQLObjectType

character_interface = GraphQLInterfaceType(
    "Character",

# Path: tests/starwars/fixtures.py
# class Character:
# class Human(Character):
# class Droid(Character):
#     def __init__(self, id, name, friends, appearsIn, homePlanet):
#     def __init__(self, id, name, friends, appearsIn, primaryFunction):
# def get_character(id):
# def get_characters(ids):
# def get_friends(character):
# def get_hero(episode):
# async def get_hero_async(episode):
# def get_human(id):
# def get_droid(id):
# def create_review(episode, review):


# Path: tests/starwars/schema.py
import asyncio
from graphql import (
    GraphQLArgument,
    GraphQLEnumType,
    GraphQLEnumValue,
    GraphQLField,
    GraphQLInputField,
    GraphQLInputObjectType,
    GraphQLInt,
    GraphQLInterfaceType,
    GraphQLList,
    GraphQLNonNull,
    GraphQLObjectType,
    GraphQLSchema,
    GraphQLString,
    get_introspection_query,
    graphql_sync,
    print_schema,
)
from .fixtures import (
    create_review,
    get_characters,
    get_droid,
    get_friends,
    get_hero_async,
    get_human,
    reviews,
)




episode_enum = GraphQLEnumType(
    "Episode",
    {
        "NEWHOPE": GraphQLEnumValue(4, description="Released in 1977.",),
        "EMPIRE": GraphQLEnumValue(5, description="Released in 1980.",),
        "JEDI": GraphQLEnumValue(6, description="Released in 1983.",),
    },
    description="One of the films in the Star Wars Trilogy",
)


human_type: GraphQLObjectType
droid_type: GraphQLObjectType

character_interface = GraphQLInterfaceType(
    "Character",

    lambda: {