Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Graphene: Python DSL for GraphQL

Project description

This is a library to use GraphQL in a Pythonic and easy way. It maps the models/fields to internal GraphQLlib objects without effort. Including automatic Django models conversion.

Installation

For instaling graphene, just run this command in your shell

pip install graphene

Usage

Example code of a GraphQL schema using Graphene:

Schema definition

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:

query = '''
    query HeroNameQuery {
      hero {
        name
      }
    }
'''
result = schema.execute(query)

Relay Schema

Graphene also supports Relay, check the Starwars Relay example!

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!

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:

python setup.py install

After developing, the full test suite can be evaluated by running:

python setup.py test # Use --pytest-args="-v -s" for verbose mode

Project details


Release history Release notifications

History Node

2.1.2

History Node

2.1.1

History Node

2.1

History Node

2.0.1

History Node

2.0

History Node

2.0.dev20170802065539

History Node

2.0.dev20170801053013

History Node

2.0.dev20170727061432

History Node

2.0.dev20170727024417

History Node

2.0.dev20170725061556

History Node

2.0.dev20170725043308

History Node

2.0.dev20170724064308

History Node

1.4.2

History Node

1.4.1

History Node

1.4

History Node

1.3

History Node

1.2

History Node

1.1.3

History Node

1.1.2

History Node

1.1.1

History Node

1.1

History Node

1.0.2

History Node

1.0.1

History Node

1.0

History Node

1.0.dev20160922020647

History Node

1.0.dev20160921153356

History Node

1.0.dev20160920070441

History Node

1.0.dev20160920015515

History Node

1.0.dev20160918041239

History Node

1.0.dev20160917190505

History Node

1.0.dev20160911051803

History Node

1.0.dev20160911044410

History Node

1.0.dev20160909055438

History Node

1.0.dev20160909040318

History Node

1.0.dev20160823061102

History Node

1.0.dev20160822080320

History Node

1.0.dev20160816073455

History Node

1.0.dev20160815004752

History Node

0.10.2

History Node

0.10.1

History Node

0.10.0

History Node

0.9.1

History Node

0.9

History Node

0.9b1

History Node

0.8.1

History Node

0.8.0

History Node

0.7.3

History Node

0.7.2

History Node

0.7.1

History Node

0.7.0

History Node

0.6.1

History Node

0.6.0

History Node

0.5.0

History Node

0.4.3

History Node

0.4.2

History Node

0.4.1.1

History Node

0.4.1

History Node

0.4.0.1

History Node

0.4.0

History Node

0.3.0

History Node

0.1.6.1

History Node

0.1.6

History Node

0.1.6.0

History Node

0.1.6a1

History Node

0.1.5.3

History Node

0.1.5.2

History Node

0.1.5.1

History Node

0.1.5

History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

This version
History Node

0.1.1

History Node

0.1.0

History Node

0.0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
graphene-0.1.1.tar.gz (18.5 kB) Copy SHA256 hash SHA256 Source None Oct 7, 2015

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page