Skip to main content

Skit utils package for ML Services

Project description

Handyman

Common utility framework for ML Services

Install

  1. To install the handyman library, please use the following command in case of pip:
    pip install handyman
  • Or add handyman as a poetry dependency.
    handyman = 0.3.9

Requires Python 3.7 or greater

Usage

The handyman library currently consists of the following packages:

  • exceptions
  • io
  • json_utils
  • log
  • prometheus
  • sentry
  • crypto
  • events

To use any of the packages stated above, please use:

from handyman import <package name>

Crypto Module

Full example of new client onboarding to encryption/decryption to deletion of the client

Generate data key for client (onboarding)
    from handyman.crypto import generate_new_data_key

    # Random client uuid for example usage purpose
    client_uuid = '6a624995-a0f4-43e1-b331-1716457962ce'

    # Generate data key for new client (while onboarding)
    generate_new_data_key(client_uuid)
    # Output - ('vault:v1:tXZ4nHIs3G8xhbLWMuMM8kzdLDgG7pr8B/uyNTz8svK2maNFZM8tkwU/ribGQQO6/5K7Pg2TeOSLia2b', None)

    # Store the variable for example usage purpose
    encrypted_data_key = 'vault:v1:tXZ4nHIs3G8xhbLWMuMM8kzdLDgG7pr8B/uyNTz8svK2maNFZM8tkwU/ribGQQO6/5K7Pg2TeOSLia2b'
Encrypt data with newly created client
    from handyman.crypto import encrypt_string

    # Encrypt plaintext
    encrypt_string("hello world", client_uuid, encrypted_data_key)
    # Output - ('GICD7oOmX0KbaBzeqzvOxtmK2ntjRH7kiFMmgKH8F6FYbvibASCM', None)

    # Store the variable for example usage purpose
    encrypted_data = 'GICD7oOmX0KbaBzeqzvOxtmK2ntjRH7kiFMmgKH8F6FYbvibASCM'
Decrypt data with the same client
    from handyman.crypto import decrypt_base64_string

    # Decrypt data (2nd return parameter is an exception if any)
    decrypt_base64_string(encrypted_data, client_uuid, encrypted_data_key)
    # Output - (b'hello world', None)
    # Decrypt data to string (2nd return parameter is an exception if any)
    decrypt_base64_string(encrypted_data, client_uuid, encrypted_data_key, decode_to_str=True)
    # Output - ('hello world', None)
Delete client (offboarding)
    from handyman.crypto import transit_delete_key

    # Delete client (offboarding)
    transit_delete_key(client_uuid)

Events Module

The purpose of this module is to seamlessly integrate usage of event driven systems for python codebases.

Example usage -

    from handyman.events import send_messages, Events, use_credentials

    # Set custom aws credentials (from env/file)
    use_credentials("<aws_access_key_id>", "<aws_secret_access_key>", "<aws_region>")

    # Send messages
    (success, failed_messages), err = send_messages('<queue_name>', ["hello", "world"], Events.<event_type>)
    # success - bool
    # failed_messages - messages failed to send with message id
    # err - Exceptions captured

To send a cost event:

import handyman.events as events

events.send_cost_event(
    events.Service.ASR, events.Vendor.GOOGLE, "client_uuid", "flow_uuid", "call_uuid", "conversation_uuid"
)

# if you want to count single event as multiple hits
events.send_cost_event(
    events.Service.ASR, events.Vendor.GOOGLE, "client_uuid", "flow_uuid", "call_uuid", "conversation_uuid", num_hits=2
)

Publish

Create a distribution package:

python setup.py sdist

Publish to PyPi:

pip install twine

twine upload dist/*

You will be prompted to enter username and password, if you don't have credentials contact @devops.

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

handyman-0.3.9.tar.gz (21.2 kB view details)

Uploaded Source

File details

Details for the file handyman-0.3.9.tar.gz.

File metadata

  • Download URL: handyman-0.3.9.tar.gz
  • Upload date:
  • Size: 21.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.2

File hashes

Hashes for handyman-0.3.9.tar.gz
Algorithm Hash digest
SHA256 5e1206198c03b953209d0d2f533b0d6931585f7382d35160ddbe110e7641f1df
MD5 2275210bd47bcdf12aa5bf5bde8042e9
BLAKE2b-256 f02d0d2dfcdc2b12db125d95dbe707cb013ee3458b8ead450fec1c8914116044

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