Skip to main content

A Python library to simplify Hasura, GraphQL and Machine Learning

Project description

PyHasura

A library for conveniently working with Hasura, GraphQL, File Formats, and some basic Machine Learning.

Getting Started

HasuraClient

# Create Hasura Client
import os
from dotenv import load_dotenv
from pyhasura import gql_client, HasuraClient, ExportFormat
from pprint import pprint

load_dotenv()  # Load environment variables from .env

hasura_client = HasuraClient(uri=os.environ.get("HASURA_URI"), admin_secret=os.environ.get("HASURA_ADMIN_SECRET"))

Query for a Result

result = hasura_client.execute("""
        query findCarts {
            carts {
                is_complete
                cart_items {
                    quantity
                    product {
                        price
                    }
                }
            }
            cart_items {
                id
            }
        }
    """)

pprint(result)

Convert Results to a Dictionary of Alternate Formats

result = hasura_client.convert_output_format(ExportFormat.ARROW)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.CSV)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.PARQUET)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.DATAFRAME)
pprint(result)
result = hasura_client.convert_output_format(ExportFormat.FLAT)
pprint(result)

Write Results, one file for each root entry in the query

result = hasura_client.write_to_file(output_format=ExportFormat.ARROW)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.CSV)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.PARQUET)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.FLAT)
pprint(result)
result = hasura_client.write_to_file(output_format=ExportFormat.NATURAL)
pprint(result)

Detect Anomalies

Uses DictVectorizer. Assumes text is categorical, or enumerators. To Do - allow an alternate vectorizer - e.g. Word2Vec. To include more semantic meaning in anomaly detection.

result = hasura_client.anomalies()
pprint(result)
result = hasura_client.anomalies(threshold=.03)
pprint(result)

Train and Serialize then Re-Use for Anomaly Detection

Typically, do this to train on some historical dataset and then search for anomalies in an alternate (maybe current) dataset.

result = hasura_client.anomalies_training()
pprint(result)
result = hasura_client.anomalies(training_files=result, threshold=0)
pprint(result)

Clustering

Uses KMedoids clustering. You are always working on a dictionary of datasets. You need to define the number of clusters for each dataset in a corresponding input dictionary. You can auto-generate the optimal number of clusters and use that as the input.

result = hasura_client.optimal_number_of_clusters(1,8)
pprint(result)
result = hasura_client.clusters(result)
pprint(result)

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

pyhasura-1.0.7.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

pyhasura-1.0.7-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file pyhasura-1.0.7.tar.gz.

File metadata

  • Download URL: pyhasura-1.0.7.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for pyhasura-1.0.7.tar.gz
Algorithm Hash digest
SHA256 7602bbe3c72c976102f48df1229c130bbacc9a3ff3116f3640e5c06b2341b37d
MD5 36417fb511af51729649b102c0820784
BLAKE2b-256 8199fe7437756a1ceead6dff9a1e4c6e210a26e22326745492716780655fd1e0

See more details on using hashes here.

File details

Details for the file pyhasura-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: pyhasura-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for pyhasura-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 dcf89de83cc9e7b37d834cd61752b9c14838659dacf9709a9f6b4e6efc9d38e9
MD5 889da465c10b169ac8162132ae653684
BLAKE2b-256 877ed013257f970027b3b0d417cfb9058e4a639a5b2d24e622411efbb0e479a9

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