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.17.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

pyhasura-1.0.17-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyhasura-1.0.17.tar.gz
  • Upload date:
  • Size: 9.5 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.17.tar.gz
Algorithm Hash digest
SHA256 1ae636e217f817bd5a53b3a70538a35b707bbdff9aa6639348c6df171d688179
MD5 ef1d0b4195f48d0ff495332f487dbfd8
BLAKE2b-256 ac187cceeeb131f78b835188fd6d34e9a8dc27e4986e537daf8f0b1bb8edf4e6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyhasura-1.0.17-py3-none-any.whl
  • Upload date:
  • Size: 12.2 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.17-py3-none-any.whl
Algorithm Hash digest
SHA256 3593e54fb279fd0d958a15da6bde58f2e9be4a4defcbcdff897dc4a64a74ff86
MD5 f1559717b78a9c1cbd8ec5db73df3872
BLAKE2b-256 aef3f8ac7827510d440ad85f14edc0c12464bd7d428cd464c688712c9f393cdc

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