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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: panaetius-2.3.1.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.1.tar.gz
Algorithm Hash digest
SHA256 d1bed74a35c14936bce71de04347ea16c8ab09185b024830b855c286e0858409
MD5 f23e49bf36b875c8e43f3e9b9548b728
BLAKE2b-256 b9d26b2d97d7a5de9aa5a76cfa6dcf04cdd7badd798ec8e830b9bac32fe1308c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: panaetius-2.3.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8e2bcaf38f4401172fa9c6fb8f263ba8cbc5ef29c6e7caf4be7035f593bfd330
MD5 d3ad3db1280c1608e694ea69b9da201f
BLAKE2b-256 49c758126d1feafdc8ecf3b9857400b5506a1a3cceccf401405bb451cb721c23

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