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.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| egos_helpers-1.4.13.tar.gz | 17.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| egos_helpers-1.4.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.6 kB
Release files / egos_helpers-1.4.13.tar.gz
| Download URL | egos_helpers-1.4.13.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6916002ea04fa097ac45c6ec3a2013439ea7de882e0a3fa96213f0a8098fb1aa
|
|
BLAKE2b-256 checksum How to use checksums |
4aacd549664ec25369a85ac57b7f1b3bbf7d6f3d60cafdbc6d437f0b468882f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.8 Linux/7.0.0-38-generic
|
Release files / egos_helpers-1.4.13-py3-none-any.whl
| Download URL | egos_helpers-1.4.13-py3-none-any.whl |
|---|---|
| Size | 17.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
863549a5009d7950fa365dff78c651990b76dacbef6fcfa86b0935f5a3bffc89
|
|
BLAKE2b-256 checksum How to use checksums |
b0056716dd47f6e763729d12cedc4c8d0554995880d437e7c0cf5b46c0f19164
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.3 CPython/3.14.8 Linux/7.0.0-38-generic
|
Security for egos-helpers 1.4.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.