Skip to main content

Graphene Pydantic integration

Project description

Graphene Logo graphene-pydantic Build status PyPI version Coverage Status

A Pydantic integration for Graphene.

Installation

pip install "graphene-pydantic"

Examples

Here is a simple Pydantic model:

import pydantic

class PersonModel(pydantic.BaseModel):
    id: uuid.UUID
    first_name: str
    last_name: str

To create a GraphQL schema for it you simply have to write the following:

import graphene
from graphene_pydantic import PydanticObjectType

class Person(PydanticObjectType):
    class Meta:
        model = PersonModel
        # only return specified fields
        only_fields = ("name",)
        # exclude specified fields
        exclude_fields = ("id",)

class Query(graphene.ObjectType):
    people = graphene.List(Person)

    def resolve_people(self, info):
        return get_people()  # function returning `PersonModel`s

schema = graphene.Schema(query=Query)

Then you can simply query the schema:

query = '''
    query {
      people {
        firstName,
        lastName
      }
    }
'''
result = schema.execute(query)

Full Examples

Please see the examples directory for more.

License

This project is under the Apache License.

Third Party Code

This project depends on third-party code which is subject to the licenses set forth in Third Party Licenses.

Contributing

Please see the Contributing Guide. Note that you must sign the CLA.

Caveats

Note that even though Pydantic is perfectly happy with fields that hold mappings (e.g. dictionaries), because GraphQL's type system doesn't have them those fields can't be exported to Graphene types. For instance, this will fail with an error Don't know how to handle mappings in Graphene:

import typing
from graphene_pydantic import PydanticObjectType

class Pet:
  pass

class Person:
  name: str
  pets_by_name: typing.Dict[str, Pet]
  
class GraphQLPerson(PydanticObjectType):  
  class Meta:
    model = Person

However, note that if you use exclude_fields or only_fields to exclude those values, there won't be a problem:

class GraphQLPerson(PydanticObjectType):
  class Meta:
    model = Person
    exclude_fields = ("pets_by_name",)

Project details


Download files

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

Source Distribution

graphene_pydantic-0.0.2.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

graphene_pydantic-0.0.2-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file graphene_pydantic-0.0.2.tar.gz.

File metadata

  • Download URL: graphene_pydantic-0.0.2.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.3 Linux/4.15.0-1035-aws

File hashes

Hashes for graphene_pydantic-0.0.2.tar.gz
Algorithm Hash digest
SHA256 ada41e19b5a7dd7c1fe1126eede49d97d7c9ce49c37b0dd3ad4e19f442a8ed17
MD5 479b544b4a448960c1eaeb4fdbc164f9
BLAKE2b-256 4c0b84fbf3541d518f5c27f4c1270d870ab1eb477257f36d7013b29a05ea15e7

See more details on using hashes here.

File details

Details for the file graphene_pydantic-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: graphene_pydantic-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.17 CPython/3.7.3 Linux/4.15.0-1035-aws

File hashes

Hashes for graphene_pydantic-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a2e01b1576f713d193741766bad1b9b4dc208cebfc421bd59f65a4d498d3258a
MD5 77e1bafcd641397925d5f460e72f5344
BLAKE2b-256 30caa96aae7a41b879586fd4015bfe44682a535e24234db0dbdb729c72da017d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page