Skip to main content

py-graphql-client

Dead-simple to use GraphQL client over websocket. Using the apollo-transport-ws protocol.

Install

pip install py-graphql-client

Examples

Setup subscriptions super easily

from graphql_client import GraphQLClient

query = """
  subscription {
    notifications {
      id
      title
      content
    }
  }
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:

  sub_id = client.subscribe(query, callback=callback)
  # do other stuff
  # ...
  # later stop the subscription
  client.stop_subscribe(sub_id)

def callback(_id, data):
  print("got new data..")
  print(f"msg id: {_id}. data: {data}")

Variables can be passed

from graphql_client import GraphQLClient

query = """
    subscription ($limit: Int!) {
      notifications (order_by: {created: "desc"}, limit: $limit) {
        id
        title
        content
      }
    }
  """

with GraphQLClient('ws://localhost:8080/graphql') as client:
  sub_id = client.subscribe(query, variables={'limit': 10}, callback=callback)
  # ...

def callback(_id, data):
  print("got new data..")
  print(f"msg id: {_id}. data: {data}")

Headers can be passed too

from graphql_client import GraphQLClient

query = """
    subscription ($limit: Int!) {
      notifications (order_by: {created: "desc"}, limit: $limit) {
        id
        title
        content
      }
    }
  """

with GraphQLClient('ws://localhost:8080/graphql') as client:
  sub_id = client.subscribe(query,
                            variables={'limit': 10},
                            headers={'Authorization': 'Bearer xxxx'},
                            callback=callback)
  ...
  client.stop_subscribe(sub_id)

def callback(_id, data):
  print("got new data..")
  print(f"msg id: {_id}. data: {data}")

Normal queries and mutations work too

from graphql_client import GraphQLClient

query = """
  query ($limit: Int!) {
    notifications (order_by: {created: "desc"}, limit: $limit) {
      id
      title
      content
    }
  }
"""

with GraphQLClient('ws://localhost:8080/graphql') as client:
    res = client.query(query, variables={'limit': 10}, headers={'Authorization': 'Bearer xxxx'})
    print(res)

Without the context manager API

from graphql_client import GraphQLClient

query = """
  query ($limit: Int!) {
    notifications (order_by: {created: "desc"}, limit: $limit) {
      id
      title
      content
    }
  }
"""

client = GraphQLClient('ws://localhost:8080/graphql')
res = client.query(query, variables={'limit': 10}, headers={'Authorization': 'Bearer xxxx'})
print(res)
client.close()

TODO

  • support http as well
  • should use asyncio websocket library?

Download files

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

Source Distribution

py-graphql-client-0.1.2.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_graphql_client-0.1.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file py-graphql-client-0.1.2.tar.gz.

File metadata

  • Download URL: py-graphql-client-0.1.2.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for py-graphql-client-0.1.2.tar.gz
Algorithm Hash digest
SHA256 70484d64457f4868e2f31b0308cc9cb43a4599ed0b546a6042f9af90ab541bbf
MD5 0fc3766cb679f58beb7ff78daf74489e
BLAKE2b-256 51b8bfc6e04091871d2617892c21411d0331fcae95102e80db8eb493641abee7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_graphql_client-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 df5d0ed3151025b959405dd6caed7dcb772a7180e8181abf8cc2a66b6aa8d7bb
MD5 5bf091ae66aff171534f2d1d94f66454
BLAKE2b-256 adfa358c3dd0dd59c36d05bb2fc406b55f30e33e350025d01efb61544333c7f0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page