Skip to main content

Python package Codacy Badge

py-graphql-mapper

Code Generation Test Pyhon-GraphQL Mapping Test

A python library to interact with GraphQL APIs with no need of hardcoded strings.

Introduction

This library acts as a mapper between python and GraphQL languages for GraphQL clients, allowing a code-first approach when calling a GraphQL API server. It translates GraphQL entities into python objects and viceversa in order to avoid working with massive "copy&paste"s.

This document contains a quick overview of the functionalities, for more details and options you can read here:

The package does not use any third-party libraries, it relies only on python 3 (3.10+) standard libraries.

Usage in a nutshell

Installation

Available in PyPI, the following command will install the library:

pip install py-graphql-mapper

Generate python code from schema

To generate the code execute the following command:

pgmcodegen generate ./pathToOutputFolder -apiArgs ./<pathToArgsFile>/generatorArgs.json

This command requires a json file containing the parameters needed to get the GraphQL schema

image

A sample is available in the main folder 'cli_args.json'.

The following python files will be generated:

  • enums.py
  • scalars.py
  • gql_simple_types.py
  • gql_types.py
  • type_refs.py
  • queries.py
  • mutations.py

These links show code generated using the library Github GraphQL API, Rapid GraphQL API and GeoDBCities API

More command options are available here

Execution of a query

Choose the query class you want to use from the generated file queries.py (or a mutation from mutations.py):

Instantiate it adding GraphQL arguments if needed:

from .output.gdbc.queries import currencies

my_currencies = currencies(last=7, before='MTE=')

or add them using the field args

my_currencies._args.last = 7
my_currencies._args.before = 'MTE='

Then call export_gql_source property to pass the payload to the HTTP request:

(example using requests library)

import requests

response = requests.request('POST', url='https://geodb-cities-graphql.p.rapidapi.com/',
                            json= { "query": my_currencies.export_gql_source },
                            headers={
                                    "content-type": "application/json",
                                        "X-RapidAPI-Key": '123402mmri02fni230iif32jr420',
                                        "X-RapidAPI-Host": "geodb-cities-graphql.p.rapidapi.com"
                                    }
                            )

More details on how to set a query here

Retrieval of a response

Obtained the response from the GraphQL API the following code will map the received json payload into the python object

from pygqlmap.network import GQLResponse

gqlResponse = GQLResponse(response)

gqlResponse.map_gqldata_to_obj(myCurrenciesQuery.type)

print('Result object: ' + str(gqlResponse.result_obj))

The mapped response from the GraphQL server will be available within gqlResponse object: _gqlResponse.result_obj_

More details here

A suite of use cases here

Release files for py-graphql-mapper 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-graphql-mapper 1.1.2
File Size Uploaded
py-graphql-mapper-1.1.2.tar.gz 37.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-graphql-mapper 1.1.2
File Interpreter ABI Platform
py_graphql_mapper-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 81.2 kB

Release files / py-graphql-mapper-1.1.2.tar.gz

Download URL py-graphql-mapper-1.1.2.tar.gz
Size 37.8 kB
Tags Source
SHA-256 checksum
How to use checksums
808741870d6443db83ae6cdea94d196531286b029eb806abb434dbdabebd06a6
BLAKE2b-256 checksum
How to use checksums
d02a3f13fd714a55e22a950deb07b67204a54877480a78e689ebc77cd09989e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / py_graphql_mapper-1.1.2-py3-none-any.whl

Download URL py_graphql_mapper-1.1.2-py3-none-any.whl
Size 43.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e83ce5935a54304408b73a8cfd5ef0ee6b288b0982f06fa6c20d02585a52114
BLAKE2b-256 checksum
How to use checksums
02b8ed4d294131376f256c6670da3fe7cb12c1a0e47d6687ecfd5c6375d55b37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page