Skip to main content

clearskies bindings for Apollo GQL

Project description

clearskies-gql

clearskies bindings for Graph QL. While this may eventually include handlers to create GQL servers, the current focus is just on a backend to interact with GQL servers.

Installation, Documentation, and Usage

To install:

pip3 install clear-skies-gql

Usage

Example

Include this in your binding modules, extend it if you need to specify authentication, and then use it in your models.

import clearskies
import clearskies_gql

def process_pets_from_gql(pets):
    for pet in pets.where('name=fido'):
        print(pet.species)

class GqlBackendWithAuth(clearskies_gql.backends.GqlBackend):
    def __init__(self, requests, environment, logging, my_auth_method):
        super().__init__(requests, environment, logging)
        self.configure(
            url='https://gql.server.example.com',
            auth=my_auth_method,
        )

class Pet(clearskies.Model):
    def __init__(self, gql_backend_with_auth, columns):
        super().__init__(gql_backend_with_auth, columns)

    def columns_configuration(self):
        return OrderedDict([
            clearskies.column_types.string('name'),
            clearskies.column_types.string('species'),
        ])

process_pets = clearskies.Application(
    clearskies.handlers.Callable,
    {'callable': process_pets_from_gql},
    binding_modules=[clearskies_gql],
    binding_classes=[Pet, GqlBackendWithAuth],
)

Then just wire up your application to a context and you're ready to go!

Record name

clear-skies-gql will use the pluralized and snake_case version of the model class name as the descriptor of the records in GQL, e.g. the above model class results in this query:

query Query {
  pets {
    name
    species
  }
}

But you can override this behavior by specifying the table name for your model, e.g.:

class Pet(clearskies.Model):
    def __init__(self, gql_backend_with_auth, columns):
        super().__init__(gql_backend_with_auth, columns)

    @classmethod
    def table_name(cls):
        return 'whateverYouWant'

    def columns_configuration(self):
        return OrderedDict([
            clearskies.column_types.string('name'),
            clearskies.column_types.string('species'),
        ])

results in this query:

query Query {
  whateverYouWant {
    name
    species
  }
}

Server URL

You can also specify the URL to the GQL server by setting the gql_server_url environment variable. If your gql server doesn't require authentication, then you can use the graphql backend directly:

# note: requires the gql_server_url environment variable to point to the server

class Pet(clearskies.Model):
    def __init__(self, gql_backend, columns):
        super().__init__(gql_backend, columns)

    def columns_configuration(self):
        return OrderedDict([
            clearskies.column_types.string('name'),
            clearskies.column_types.string('species'),
        ])

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

clear-skies-gql-0.1.2.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

clear_skies_gql-0.1.2-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file clear-skies-gql-0.1.2.tar.gz.

File metadata

  • Download URL: clear-skies-gql-0.1.2.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for clear-skies-gql-0.1.2.tar.gz
Algorithm Hash digest
SHA256 442f70e878bda25ce17f58ced012705a012a9a6ed3ef8eee0d2a548824751483
MD5 2a0e3206d8736fb0cf80c1d0d41146b7
BLAKE2b-256 7c3a68a231e11e0c71eef535cb968be7cccfaeb96772f095231f8131976e74a0

See more details on using hashes here.

File details

Details for the file clear_skies_gql-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for clear_skies_gql-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7b26e5cf6bf785d9e2d14ba5f378256ae0303a662ebc3fd8159d656ba3e92aa3
MD5 9dec67634e8c7ea5861cab983de48c23
BLAKE2b-256 3da993ed2ed73fdf3cba8b84ad423bd50d9b5c4132e5ecf3bcc0417eb00b9129

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