Skip to main content

No project description provided

Project description

GraphQL helpers for Python.

Schema definition

PyQL provides a better / cleaner syntax for defining GraphQL schemas.

Using PyQL:

from pyql import Object, Schema

Query = Object('Query')

@Query.field('hello')
def resolve_hello(root, info, name: str = 'world') -> str:
    return 'Hello {}'.format(name)

schema = Schema(query=Query)
compiled = schema.compile()

Equivalent using graphql-core:

from graphql import (
    GraphQLObjectType, GraphQLField, GraphQLArgument, GraphQLString,
    GraphQLSchema)

Query = GraphQLObjectType(
    'Query',
    fields=lambda: {
        'hello': GraphQLField(
            GraphQLString,
            args={
                'name': GraphQLArgument(
                    type=GraphQLString,
                    default_value='world',
                ),
            },
            resolver=lambda root, info, name = 'world': f'Hello, {name}'
        ),
    }
)

schema = GraphQLSchema(query=Query)

Graphene looks slightly better, but it’s quite confusing, and makes use of unncessary objects:

import graphene

class Query(graphene.ObjectType):
    hello = graphene.Field(
        graphene.String,
        name=graphene.Argument(graphene.String))

    def resolve_hello(self, info, name='world'):
        return f'Hello {name}'

schema = graphene.Schema(query=Query)

PyQL uses standard Python introspection when possible to figure out things, so eg. argument definitions can be picked up automatically from a resolver function, etc.

The whole API is currently work in progress and might change in the future.

Documentation coming as soon as things get a bit more well defined.

Contributing: creating a release

  1. Update version number in setup.py

  2. Update version number in docs/conf.py

  3. Commit changes, eg:

    git add setup.py docs/conf.py
    git commit -m '0.2.1 ...'
  4. Tag the version, eg:

    git tag -a -m 'Version 0.2.1' v0.2.1
  5. Push changes to GitHub:

    git push
    git push --tags
  6. Release on PyPI:

    rm -rf dist
    python setup.py sdist bdist_wheel
    twine upload dist/*

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

PyQL-0.2.2.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

PyQL-0.2.2-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file PyQL-0.2.2.tar.gz.

File metadata

  • Download URL: PyQL-0.2.2.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for PyQL-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b2d6ff78f59a1236c24188a4005c1599f8ac2db6ccd66af352b789564408b1b0
MD5 c96c6317b1f138b38837e81ae63aef34
BLAKE2b-256 5967c56494dd9a5d4938d1f6abd1a084a3502168e767690167f0f8f0ee138b73

See more details on using hashes here.

File details

Details for the file PyQL-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: PyQL-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for PyQL-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0b30de57642475ea33c43a1488695dcf5eb0eeb30a8a737581a4b30691cb890d
MD5 bc464df24f0375a83391496d3cdd8afc
BLAKE2b-256 eb4cd3e88c3edb414cc84a2a9c76fe7028d9efc8e8ed2077d9f0043785960b60

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