https://github.com/datek/datek-app-utils
https://github.com/datek/datek-app-utils
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/datek/datek-app-utils
- Owner: DAtek
- License: mit
- Created: 2021-11-14T12:48:03.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-27T18:58:11.000Z (almost 2 years ago)
- Last Synced: 2025-02-24T00:05:28.076Z (over 1 year ago)
- Language: Python
- Size: 119 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://codecov.io/gh/DAtek/datek-app-utils)
[](https://github.com/astral-sh/ruff)

# Utilities for building applications.
## Contains:
- Config loading from environment
- Bootstrap for logging
- Async timeout decorator, which is very useful for writing async tests
## Examples:
### Env config
```python
import os
from datek_app_utils.env_config.base import BaseConfig
# Just for demonstration, of course env vars shouldn't be set in python
os.environ["COLOR"] = "RED"
os.environ["TEMPERATURE"] = "50"
os.environ["DISABLE_AUTOTUNE"] = "y"
class Config(BaseConfig):
COLOR: str
TEMPERATURE: int
DISABLE_AUTOTUNE: bool
assert Config.COLOR == "RED"
assert Config.TEMPERATURE == 50
assert Config.DISABLE_AUTOTUNE is True
```
The `Config` class casts the values automatically.
Moreover, you can test whether all the mandatory variables have been set or not.
```python
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"
os.environ["DISABLE_AUTOTUNE"] = "I can't sing but I pretend to be a singer"
class Config(BaseConfig):
COLOR: str
TEMPERATURE: int
AMOUNT: int = None
DISABLE_AUTOTUNE: bool = None
try:
validate_config(Config)
except ValidationError as error:
for attribute_error in error.errors:
print(attribute_error)
```
Output:
```
DISABLE_AUTOTUNE: Invalid value. Required type:
TEMPERATURE: Not set. Required type:
```
### Async timeout decorator
```python
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
```