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.0
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.0.tar.gz | 17.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| egos_helpers-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.4 kB
Release files / egos_helpers-1.4.0.tar.gz
| Download URL | egos_helpers-1.4.0.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dacd443e3172f6e5492e1f4b5c0ef5610e9a8a84c43842733d6c6a1f20880ff2
|
|
BLAKE2b-256 checksum How to use checksums |
c1e205e58eaac01df16e38eb25598f7aa2d23c800e46a4b037c2bb040e84b13a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.5 Linux/7.0.0-28-generic
|
Release files / egos_helpers-1.4.0-py3-none-any.whl
| Download URL | egos_helpers-1.4.0-py3-none-any.whl |
|---|---|
| Size | 17.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6584bb2ba3b81306b851b28d39daa0f8c013532c46da607c3d6292a96eb2e9da
|
|
BLAKE2b-256 checksum How to use checksums |
e3b4d040a00cc3857b91e63489c623e7ee234580e0171f05320ad34813f0f820
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.5 Linux/7.0.0-28-generic
|