Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

py-graphql-mapper

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

py-graphql-mapper

A python library to call GraphQL APIs without using hardcoded strings

  • 1.1.2
  • PyPI
  • Socket score

Maintainers
1

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

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc