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

Uploaded Source

Built Distribution

pyhasura-1.0.3-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyhasura-1.0.3.tar.gz
  • Upload date:
  • Size: 7.2 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.3.tar.gz
Algorithm Hash digest
SHA256 78bd96614d5776664de0fa8bbd20ea3e8c3b9cb74e845b9bf5da13103b416390
MD5 fe6262c37e05ce2a2a7f6670aeafbb5e
BLAKE2b-256 4da714989ececd9bfbb10220d9497b1721783cfdd4f4bbbb9ccacf1c6bd1699d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyhasura-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 10.5 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cc48ed6579bd0bd340cf544a7b81bb8f3e3eaca06bcdc29e0f6ab5a13a460b46
MD5 49d25aee67407fd5940bf9f1a1a79956
BLAKE2b-256 8b71d84b2b19984054f67d2a8f062aa13f7eb449e4b7d7d72d8cda84469d98f6

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