Graphene |Build Status| |Coverage Status| ========================================= Graphene is a Python library for creating GraphQL schemas/types easly. It maps the models/fields to internal GraphQL objects without effort. Including automatic `Django models`_ conversion. Installation ------------ For instaling graphene, just run this command in your shell .. code:: bash pip install graphene Usage ----- Example code of a GraphQL schema using Graphene: Schema definition ~~~~~~~~~~~~~~~~~ .. code:: python class Character(graphene.Interface): id = graphene.IDField() name = graphene.StringField() friends = graphene.ListField('self') def resolve_friends(self, args, *_): return [Human(f) for f in self.instance.friends] class Human(Character): homePlanet = graphene.StringField() class Query(graphene.ObjectType): human = graphene.Field(Human) schema = graphene.Schema(query=Query) Querying ~~~~~~~~ Querying ``graphene.Schema`` is as simple as: .. code:: python query = ''' query HeroNameQuery { hero { name } } ''' result = schema.execute(query) Relay Schema ~~~~~~~~~~~~ Graphene also supports Relay, check the `Starwars Relay example`_! .. code:: python class Ship(relay.Node): '''A ship in the Star Wars saga''' name = graphene.StringField(description='The name of the ship.') @classmethod def get_node(cls, id): return Ship(getShip(id)) class Query(graphene.ObjectType): ships = relay.ConnectionField(Ship, description='The ships used by the faction.') node = relay.NodeField() @resolve_only_args def resolve_ships(self): return [Ship(s) for s in getShips()] Django+Relay Schema ~~~~~~~~~~~~~~~~~~~ If you want to use graphene with your Django Models check the `Starwars Django example`_! .. code:: python class Ship(DjangoNode): class Meta: model = YourDjangoModelHere # only_fields = ('id', 'name') # Only map this fields from the model # excluxe_fields ('field_to_excluxe', ) # Exclude mapping this fields from the model class Query(graphene.ObjectType): node = relay.NodeField() Contributing ------------ After cloning this repo, ensure dependencies are installed by running: .. code:: sh python setup.py install After developing, the full test suite can be evaluated by running: .. code:: sh python setup.py test # Use --pytest-args="-v -s" for verbose mode .. _Django models: #djangorelay-schema .. _Starwars Relay example: tests/starwars_relay .. _Starwars Django example: tests/starwars_django .. |Build Status| image:: https://travis-ci.org/graphql-python/graphene.svg?branch=master :target: https://travis-ci.org/graphql-python/graphene .. |Coverage Status| image:: https://coveralls.io/repos/graphql-python/graphene/badge.svg?branch=master&service=github :target: https://coveralls.io/github/graphql-python/graphene?branch=master