Skip to main content

An asyncio GraphQL client built on top of aiohttp and graphql-core-next

Project description

Asynchronous GraphQL Client

PyPI version Python Versions License: MIT Documentation Status Code style: black Sonarcloud Status

An asynchronous GraphQL client built on top of aiohttp and graphql-core-next. The client by default introspects schemas and validates all queries prior to dispatching to the server.

Documentation

For the most recent project documentation, you can visit https://aiographql-client.readthedocs.io/.

Installation

pip install aiographql-client

Example Usage

Here are some example usages of this client implementation. For more examples, and advanced scenarios, see Usage Examples section in the documentation.

Simple Query

async def get_logged_in_username(token: str) -> GraphQLResponse:
    client = GraphQLClient(
        endpoint="https://api.github.com/graphql",
        headers={"Authorization": f"Bearer {token}"},
    )
    request = GraphQLRequest(
        query="""
            query {
              viewer {
                login
              }
            }
        """
    )
    return await client.query(request=request)
>>> import asyncio
>>> response = asyncio.run(get_logged_in_username("<TOKEN FROM GITHUB GRAPHQL API>"))
>>> response.data
{'viewer': {'login': 'username'}}

Query Subscription

async def print_city_updates(client: GraphQLClient, city: str) -> None:
    request = GraphQLRequest(
        query="""
            subscription ($city:String!) {
              city(where: {name: {_eq: $city}}) {
                description
                id
              }
            }
        """,
        variables={"city": city},
    )
    # subscribe to data and error events, and print them
    await client.subscribe(
        request=request, on_data=print, on_error=print, wait=True
    )

For custom event specific callback registration, see Callback Registry Documentation.

Query Validation Failures

If your query is invalid, thanks to graphql-core-next, we get a detailed exception in the traceback.

aiographql.client.exceptions.GraphQLClientValidationException: Query validation failed

Cannot query field 'ids' on type 'chatbot'. Did you mean 'id'?

GraphQL request (4:13)
3:           chatbot {
4:             ids, bot_names
               ^
5:           }

Cannot query field 'bot_names' on type 'chatbot'. Did you mean 'bot_name' or 'bot_language'?

GraphQL request (4:18)
3:           chatbot {
4:             ids, bot_names
                    ^
5:           }

Query Variables & Operations

Support for multi-operation requests and variables is available via the client. For example, the following request contains multiple operations. The instance specifies default values to use.

request = GraphQLRequest(
    query="""
    query get_bot_created($id: Int) {
      chatbot(where: {id: {_eq: $id}}) {
        id, created
      }
    }
    query get_bot_name($id: Int) {
      chatbot(where: {id: {_eq: $id}}) {
        id, bot_name
      }
    }
    """,
    variables={"id": 109},
    operation="get_bot_name"
)

The default values can be overridden at the time of making the request if required.

await client.query(request=request, variables={"id": 20}, operation="get_bot_created")

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

aiographql-client-1.0.2.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

aiographql_client-1.0.2-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file aiographql-client-1.0.2.tar.gz.

File metadata

  • Download URL: aiographql-client-1.0.2.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.0b2 CPython/3.8.5 Linux/5.4.0-1023-azure

File hashes

Hashes for aiographql-client-1.0.2.tar.gz
Algorithm Hash digest
SHA256 150a4cf48e5e14128bd51a9c7965f5a53e8279c27e1c55711fc6b1cc68b40203
MD5 96a031ee08fca6e00d98760a100df8cd
BLAKE2b-256 2848a0f7d694848e9ced3445956cbb4ed8e922cc06b4ac376a7d1aa62418ddba

See more details on using hashes here.

File details

Details for the file aiographql_client-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: aiographql_client-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.0b2 CPython/3.8.5 Linux/5.4.0-1023-azure

File hashes

Hashes for aiographql_client-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c6c2510b9da6635bcd0c6a0dc49a0e5485d869958012e92925af63ee005f13d
MD5 54e23cb1770c82f7650d114c3d194389
BLAKE2b-256 56892d10493fc8a443d3c4a2837f3949315ac78e7a1a76715d56a507f52997ab

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