Skip to main content

A python library with Aether Python functionality

Project description

Aether Python Library

This is the official Python Library with Aether functions.

Table of contents

Requirements

This library requires Python 3.6 and above.

Python libraries:

  • eha-jsonpath Provides new Extensions to the jsonpath_ng python library to provide commonly requested functions
  • jsonschema An implementation of JSON Schema validation for Python
  • redis Python client for Redis key-value store
  • requests HTTP for Humans.
  • spavro An Avro library, Spavro is a (sp)eedier avro implementation using Cython

Extra dependencies (based on settings):

  • test
    • coverage A tool for measuring code coverage of Python programs.
    • fakeredis Fake implementation of redis API for testing purposes.
    • flake8 Tool For Style Guide Enforcement.
    • flake8-quotes Flake8 extension for checking quotes in python.
    • tblib Traceback serialization library.

Return to TOC

Installation

# standalone
pip3 install aether.python

Return to TOC

Distribution

How to create the package distribution

Execute the following command:

python3 setup.py bdist_wheel

or

./scripts/build.sh

Return to TOC

Tests

How to test the library

First install dependencies (execute it only once):

./scripts/install.sh

After that execute the following command:

source ./venv/bin/activate
./scripts/test.sh

The file scripts/test.ini contains the environment variables used in the tests.

Return to TOC

Usage

Redis Tools

This provides an interface to a Redis server via supplied redis parameters.

It makes available a number of CRUD redis operation which include but not limited to: - Formats document keys into _{type}:{tenant}:{id} before being cached on redis. - Retrieves documents based on preformated keys. - Removes documents based on preformated keys. - Subscribes to key based channels with a callback function.

Usage

from aether.python.redis.task import TaskHelper

REDIS_TASK = TaskHelper(settings, redis_instance)

# Settings must have the following properties:
# REDIS_HOST str - Redis server host,
# REDIS_PORT int - Redis server port,
# REDIS_PASSWORD str - Redis server password,
# REDIS_DB str - Redis database name

# redis_instance (Optional) - Pass an existing redis connection
# (If provided, ignores all settings and uses redis_instance)

document = {
    'id': 'document_id',
    'name': 'document name'
}

document_type = 'test_document'
aether_tenant = 'prod'

# add document to redis
REDIS_TASK.add(task=document, type=document_type, tenant=aether_tenant)

# retrieve document from redis
REDIS_TASK.get(_id=document['id'], type=document_type, tenant=aether_tenant)

# subcribe to a key based channel

CHANNEL = '_test_document*' # listens for messages published to all channels starting with '_test_document'

def handle_callback(msg):
    print(msg) # handle returned message

REDIS_TASK.subscribe(callback=handle_callback, pattern=CHANNEL, keep_alive=True)


# publish document
REDIS_TASK.publish(task=document, type=document_type, tenant=aether_tenant) # this will trigger the 'handle_callback' function with the published document to all subscribed clients

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aether.python-1.0.6-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

File details

Details for the file aether.python-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: aether.python-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 30.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.1

File hashes

Hashes for aether.python-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 fc43cb7d3460b162344cb0a977384c3dabb623315a519e2ef57252dda2892135
MD5 0ef83804ec5724c7d7fb4e8a79ef7df5
BLAKE2b-256 c8be4498697051a51f89352f68a35d78828bcea0375305417db746e109bd2828

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page