diff --git a/README.rst b/README.rst index e3f0fdf5..eaec71fd 100644 --- a/README.rst +++ b/README.rst @@ -1,9 +1,13 @@ -Graphene |Build Status| |Coverage Status| -========================================= +|Graphene Logo| `Graphene `__ |Build Status| |PyPI version| |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. +Graphene is a Python library for building GraphQL schemas/types fast and +easily. \* **Easy to use:** It maps the models/fields to internal +GraphQL objects without effort. \* **Relay:** Graphene has builtin +support for Relay \* **Django:** Automatic *Django model* mapping to +Graphene Types. *See an `example +Django `__ +implementation* Installation ------------ @@ -13,89 +17,46 @@ For instaling graphene, just run this command in your shell .. code:: bash pip install graphene + # Or in case of need Django model support + pip install graphene[django] -Usage ------ +Examples +-------- -Example code of a GraphQL schema using Graphene: - -Schema definition -~~~~~~~~~~~~~~~~~ +Here is one example for get you started: .. 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) + hello = graphene.StringField(description='A typical hello world') + ping = graphene.StringField(description='Ping someone', + to=graphene.Argument(graphene.String)) + + def resolve_hello(self, args, info): + return 'World' + + def resolve_ping(self, args, info): + return 'Pinging {}'.format(args.get('to')) schema = graphene.Schema(query=Query) -Querying -~~~~~~~~ - -Querying ``graphene.Schema`` is as simple as: +Then Querying ``graphene.Schema`` is as simple as: .. code:: python query = ''' - query HeroNameQuery { - hero { - name - } + query SayHello { + hello + ping(to:'peter') } ''' result = schema.execute(query) -Relay Schema -~~~~~~~~~~~~ +If you want to learn even more, you can also check the following +examples: -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() +- Relay Schema: `Starwars Relay example `__ +- Django: `Starwars Django example `__ Contributing ------------ @@ -112,11 +73,10 @@ After developing, the full test suite can be evaluated by running: 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 - +.. |Graphene Logo| image:: http://graphene-python.org/favicon.png .. |Build Status| image:: https://travis-ci.org/graphql-python/graphene.svg?branch=master :target: https://travis-ci.org/graphql-python/graphene +.. |PyPI version| image:: https://badge.fury.io/py/graphene.svg + :target: https://badge.fury.io/py/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 diff --git a/bin/convert_documentation b/bin/convert_documentation new file mode 100755 index 00000000..b55d5dab --- /dev/null +++ b/bin/convert_documentation @@ -0,0 +1,3 @@ +#!/bin/bash + +pandoc README.md --from markdown --to rst -s -o README.rst