Skip to main content

Python module to gracefully handle a .config file/environment variables for scripts, with built in masking for sensitive options. Provides a Splunk friendly formatted logger instance.

Project description

Panaetius

This package provides:

  • Functionality to read user variables from a config.yml or environment variables.
  • A convenient default logging formatter printing json that can save to disk and rotate.
  • Utility functions.

Config

options

skip_header_init

If skip_header_init=True then the config_path will not use the header_variable as the sub-directory in the config_path.

E.g

CONFIG = panaetius.Config("tembo", "~/tembo/.config", skip_header_init=True)

Will look in ~/tembo/config/config.yml.

If skip_header_init=False then would look in ~/tembo/config/tembo/config.yml.

Module

Convenient to place in a package/sub-package __init__.py.

See Tembo for an example: https://github.com/tembo-pages/tembo-core/blob/main/tembo/cli/__init__.py

Example snippet to use in a module:

import os

import panaetius
from panaetius.exceptions import LoggingDirectoryDoesNotExistException


if (config_path := os.environ.get("TEMBO_CONFIG")) is not None:
    CONFIG = panaetius.Config("tembo", config_path, skip_header_init=True)
else:
    CONFIG = panaetius.Config("tembo", "~/tembo/.config", skip_header_init=True)


panaetius.set_config(CONFIG, "base_path", "~/tembo")
panaetius.set_config(CONFIG, "template_path", "~/tembo/.templates")
panaetius.set_config(CONFIG, "scopes", {})
panaetius.set_config(CONFIG, "logging.level", "DEBUG")
panaetius.set_config(CONFIG, "logging.path")

try:
    logger = panaetius.set_logger(
        CONFIG, panaetius.SimpleLogger(logging_level=CONFIG.logging_level)
    )
except LoggingDirectoryDoesNotExistException:
    _LOGGING_PATH = CONFIG.logging_path
    CONFIG.logging_path = ""
    logger = panaetius.set_logger(
        CONFIG, panaetius.SimpleLogger(logging_level=CONFIG.logging_level)
    )
    logger.warning("Logging directory %s does not exist", _LOGGING_PATH)

This means in ./tembo/cli/cli.py you can

import tembo.cli

# access the CONFIG instance + variables from the config.yml
tembo.cli.CONFIG

Utility Functions

Squasher

Squashes a json object or Python dictionary into a single level dictionary.

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

panaetius-2.3.2.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

panaetius-2.3.2-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file panaetius-2.3.2.tar.gz.

File metadata

  • Download URL: panaetius-2.3.2.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.7.12 Darwin/20.3.0

File hashes

Hashes for panaetius-2.3.2.tar.gz
Algorithm Hash digest
SHA256 ec6c279c07ae45913862280d161dad3af61967182276ed39e22f8e54c5e07f11
MD5 f117be07ff99a67267cd17568d0ccf60
BLAKE2b-256 98b5db95cc5ec1b7b14e72d1f271c847ab09c7c3c1941da8a14f72bba96314e0

See more details on using hashes here.

File details

Details for the file panaetius-2.3.2-py3-none-any.whl.

File metadata

  • Download URL: panaetius-2.3.2-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.7.12 Darwin/20.3.0

File hashes

Hashes for panaetius-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 17b7face7607c82db090a63a958167da28f84b3068dff8a07dd3a9556b1e41fd
MD5 349709d020602a2e1701d99d21f7cb8f
BLAKE2b-256 38f7d2a5067194750d2e0da3523ab9abc60e87bc01ab2637eb30d3c91805b700

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