datek_app_utils

Utilities for building applications


License
MIT
Install
pip install datek_app_utils==0.3.6

Documentation

codecov Code style: black License: MIT

Utilities for building applications.

Contains:

  • Config loading from environment
  • Bootstrap for logging
  • Base class for creating async workers
  • Async timeout decorator, which is very useful for writing async tests

Examples:

Env config

import os

from datek_app_utils.env_config.base import BaseConfig

os.environ["COLOR"] = "RED"
os.environ["TEMPERATURE"] = "50"


class Config(BaseConfig):
    COLOR: str
    TEMPERATURE: int


assert Config.COLOR == "RED"
assert Config.TEMPERATURE == 50

The Config class casts the values automatically. Moreover, you can test whether all the mandatory variables have been set or not.

import os

from datek_app_utils.env_config.base import BaseConfig
from datek_app_utils.env_config.utils import validate_config
from datek_app_utils.env_config.errors import ValidationError

os.environ["COLOR"] = "RED"


class Config(BaseConfig):
    COLOR: str
    TEMPERATURE: int
    AMOUNT: int = None


try:
    validate_config(Config)
except ValidationError as error:
    for attribute_error in error.errors:
        print(attribute_error)

Output:

TEMPERATURE: Not set. Required type: <class 'int'>

Async timeout decorator

from asyncio import sleep, run
from datek_app_utils.async_utils import async_timeout


@async_timeout(0.1)
async def sleep_one_sec():
    await sleep(1)

    
run(sleep_one_sec())

Output:

TimeoutError