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?
Release files for py-graphql-client 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py-graphql-client-0.1.2.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_graphql_client-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.6 kB
Release files / py-graphql-client-0.1.2.tar.gz
| Download URL | py-graphql-client-0.1.2.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70484d64457f4868e2f31b0308cc9cb43a4599ed0b546a6042f9af90ab541bbf
|
|
BLAKE2b-256 checksum How to use checksums |
51b8bfc6e04091871d2617892c21411d0331fcae95102e80db8eb493641abee7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / py_graphql_client-0.1.2-py3-none-any.whl
| Download URL | py_graphql_client-0.1.2-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
df5d0ed3151025b959405dd6caed7dcb772a7180e8181abf8cc2a66b6aa8d7bb
|
|
BLAKE2b-256 checksum How to use checksums |
adfa358c3dd0dd59c36d05bb2fc406b55f30e33e350025d01efb61544333c7f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|