egos-helpers
A python library for helper functions. Used in the egos-tech projects.
Functions
gather_environ: Return a dict of environment variables correlating to the keys dict.get_environ_value: Resolve a single value from an environment variable or its_FILEcompanion (file-based secrets).short_msg: Truncates the message tocharscharacters and adds two dots at the end.strtobool: Converts a string to a booleanredact: Replaces inmessagetheparamstring withreplace_valuekey_to_title: Converts a key in the forma_is_bto a title in the formA Is Bslugify: Converts a string to a URL-safe slug of at mostmax_lengthcharacterssetup_logger: Sets up and returns a logger, optionally with a GELF handlerget_formatter: Builds the log record formatter, which adds source locations atDEBUG
See egos_helpers/core.py for the full description of each function.
egos_helpers.crypto encrypts values an application has to store. It lives behind
the crypto extra, so a plain install does not pull it in. See
docs/crypto.md.
Usage example
Install egos-helpers:
python3 -m venv .venv
source .venv/bin/activate
# if you don't have a requirements.txt file
pip install -U egos-helpers
# if you do have a requirements.txt file
pip install -U -r requirements.txt
In your python project:
from egos_helpers import gather_environ
class MyClass:
keys = {
"key_one": {
"default": ["one", 2],
"type": "list",
},
"key_two": {
"hidden": True,
"default": False,
"type": "boolean",
},
"key_three": {
"default": {},
"type": "filter",
},
"key_four": {
"default": None,
"redact": True,
"type": "string",
},
"key_five": {
"default": 12,
"type": "int",
},
"key_six": {
"default": "INFO",
"type": "enum",
"values": ["DEBUG", "INFO", "WARNING", "ERROR"],
},
"key_seven": {
"default": "12",
"deprecated": True,
"replaced_by": "key_five",
"type": "int",
},
}
def __init__(self):
envkeys = gather_environ(keys=MyClass.keys)
print(envkeys)
With KEY_ONE=one, KEY_THREE=foo=bar, KEY_FOUR=super_secret_string, KEY_FIVE=33,
KEY_SIX=WARNING and the rest unset, gather_environ returns:
{
"key_one": ["one"],
"key_two": False,
"key_three": {"foo": "bar"},
"key_four": "super_secret_string",
"key_five": 33,
"key_six": "WARNING",
}
key_seven is deprecated and unset, so it is left out. A key that is unset returns its
default exactly as declared, without being converted to the key's type.
File-based secrets
Use get_environ_value to resolve a value from either an environment variable or a
<NAME>_FILE file path (the container secrets convention). It reads <NAME>_FILE
first (returning the file contents stripped of surrounding whitespace), falls back
to <NAME>, and returns None when neither is set. Setting both raises an error.
So does an unreadable <NAME>_FILE path.
from egos_helpers import get_environ_value
# MYAPP_TOKEN=secret123 -> "secret123"
# MYAPP_TOKEN_FILE=/run/secrets/t -> contents of the file, stripped
token = get_environ_value("MYAPP_TOKEN")
Encrypted values
A secret the application mints while it runs has to be persisted somewhere, and
egos_helpers.crypto keeps it from landing in the store in the clear. Install the extra
with pip install -U "egos-helpers[crypto]".
from egos_helpers.crypto import decode_encryption_key, decrypt_secret_text, encrypt_secret
key = decode_encryption_key(get_environ_value("MYAPP_SECRET_KEY"))
blob = encrypt_secret(key, "the-token") # bytes, safe to store
token = decrypt_secret_text(key, blob) # "the-token"
Each blob names the key that wrote it, so you can encrypt with a new key and keep the old one around for reads until nothing needs it. docs/crypto.md covers key replacement, binding a value to where it is stored, and the blob format.
Metadata
Release files for egos-helpers 1.4.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| egos_helpers-1.4.7.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| egos_helpers-1.4.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.6 kB
Release files / egos_helpers-1.4.7.tar.gz
| Download URL | egos_helpers-1.4.7.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f09087cc770908f4d9e07fbf38c34bccb28cdf3c2c94616cefaf5451c1d00810
|
|
BLAKE2b-256 checksum How to use checksums |
df9ab5e4ec4dcbba2a02f5ea9e1fa99d5637fb5e991bf5f74a2b96c7f192d8f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.7 Linux/7.0.0-31-generic
|
Release files / egos_helpers-1.4.7-py3-none-any.whl
| Download URL | egos_helpers-1.4.7-py3-none-any.whl |
|---|---|
| Size | 17.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c57ef443a0864f884a217cfeaf8fb7b3d0ee11e0ea20bc6b2b6af76ba34b6820
|
|
BLAKE2b-256 checksum How to use checksums |
dbfebc8f3cfaeeae1b7969a9abfd3f2eaccd62d4a227fd481586b7df7f9b4bf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.7 Linux/7.0.0-31-generic
|