Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/graphql-python/gql-next
A Python GraphQL Client library providing ability to validate and make type-safe GraphQL calls
https://github.com/graphql-python/gql-next
graphene graphql python python3
Last synced: 7 days ago
JSON representation
A Python GraphQL Client library providing ability to validate and make type-safe GraphQL calls
- Host: GitHub
- URL: https://github.com/graphql-python/gql-next
- Owner: graphql-python
- Created: 2018-12-14T19:41:28.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-09-09T18:55:40.000Z (about 3 years ago)
- Last Synced: 2024-10-30T21:37:53.396Z (14 days ago)
- Topics: graphene, graphql, python, python3
- Language: Python
- Homepage:
- Size: 181 KB
- Stars: 76
- Watchers: 7
- Forks: 7
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
DEPRECATION NOTICE: this package is deprecated in favor of the new changes made in `gql` over at https://github.com/graphql-python/gql
# GQL: Python GraphQL Client Library
[![Build Status](https://travis-ci.org/ekampf/gql-nesxt.svg?branch=master)](https://travis-ci.org/graphql-python/gql-next)
[![Coverage Status](https://coveralls.io/repos/github/ekampf/gql/badge.svg?branch=master)](https://coveralls.io/github/graphql-python/gql?branch=master)## Introduction
GQL is a GraphQL Client Python library intended to help Python application make GraphQL
API call while enjoying the advantages that come with GraphQL.- **Strongly Typed** response objects (dynamically created in build time to match your query)
- **Query Validation** that checks your code's queries against the GraphQL server's schema.## Installation
Simply install from PyPi:
```bash
pip install gql-next
```Then go to your project folder and run `gql init`
## Quick Start
`gql` works by parsing query files (`**/*.graphql` by default) into their own Python module where
an class, named after the operation defined in the file, allows you to make that query and get a typed
response.For example, given the following file `get_film.graphql` file:
```
query GetFilm($id: ID!) {
film(id: $id) {
title
director
}
}
```A `get_film.py` will be created defining a `GetFilm` class:
```python
# AUTOGENERATED file. Do not Change!
from typing import Any, Callable, Mapping, List
from enum import Enum
from dataclasses import dataclass
from dataclasses_json import dataclass_json
from gql.clients import Client, AsyncIOClient@dataclass_json
@dataclass
class GetFilm:
@dataclass_json
@dataclass
class GetFilmData:
@dataclass_json
@dataclass
class Film:
title: str
director: str
film: Film = Nonedata: GetFilmData = None
errors: Any = None@classmethod
def execute(cls, id: str, on_before_callback: Callable[[Mapping[str, str], Mapping[str, str]], None] = None) -> GetFilm:
...@classmethod
async def execute_async(cls, id: str, on_before_callback: Callable[[Mapping[str, str], Mapping[str, str]], None] = None) -> GetFilm:
...
```Allowing you to make the GraphQL query:
```python
from .get_film import GetFilmresult = GetFilm.execute('meaning_of_life')
film = result.data.film
```*Important notes:*
* Operations defined in graphql query __must be named__ so that we can name the relevant Python Class which you can then import in your code## How it works
### The `gql` client
#### `gql init`
Initializes a project to use GQL as client - writes a .gql.json configuration file.#### `gql run`
Run through your project's files and compile GraphQL queries into into Python types.
#### `gql watch`
Useful during development. Listen to file changes in your project's folder and continuously
builds GraphQL queries as they change.
This allows you to:
* Immediately verify query changes you make are valid.
* Enjoy your IDE's autocomplete features on GraphQL auto-generated objects while developing
as `watch` will auto-update them as you change queries.# Sponsors