Tool classes and functions for Guiosoft projects
Project description
PY-GSTOOLS
Tool classes and functions for Guiosoft projects
Installing
pip install py-gstools
Cache
Cache wrapper for multiple providers.
Usage:
from datetime import timedelta
from gs.cache import get_cache
cache = get_cache('memory')
# connection string can be:
# - memory
# - path:/path/to/cache/directory
# - redis://host:port/db_number
cache.set(key='key',
value='This is an cached data',
ttl=timedelta(seconds=600))
value = cache.get('key')
print(value)
DotEnv
Read environment variables from .env file
(Yeah, I know there is a py-dotenv package, but this is small and better to my needs)
Usage:
import os
from gs.dotenv import load_env
# .env file
# CONFIGURATION_ONE=some_nasty_thing
# LOG_LEVEL=debug
load_env(verbose=True)
2022-06-28 15:59:05,052 INFO load_env(file_name=.env - {'CONFIGURATION_ONE': 'some_nasty_thing', 'LOG_LEVEL': 'debug'})
Config
Configuration classes from files or environment variables
Read data from environment variables
from gs.config import BaseConfig
class EnvConfig(BaseConfig):
"""Environment based config"""
TESTING_ALPHA: str = 'alpha' # ENV:TEST_ALPHA
TESTING_BETA: str = 'beta'
TESTING_GAMMA: bool = False # ENV:TEST_GAMMA
# Here, the environment variables must be available by the OS (by os.environ)
# TESTING_ALPHA field maps to TEST_ALPHA environment var (defined in the comment)
# TESTING_BETA field maps to TESTING_BETA (default behavior, same to field name)
# TESTING_GAMMA fiels maps to TEST_GAMMA
cfg = EnvConfig.load_from_env()
print(cfg.sample_dict())
{'TESTING_BETA': 'beta', 'TEST_ALPHA': 'alpha', 'TEST_GAMMA': False}
Read data from file
config.json file
{
"TESTING_BETA": "beta",
"TEST_ALPHA": "alpha",
"TEST_GAMMA": true
}
config.yaml file
TESTING_BETA: beta
TEST_ALPHA: alpha
TEST_GAMMA: true
from gs.config import BaseConfig
class EnvConfig(BaseConfig):
"""Environment based config"""
TESTING_ALPHA: str = 'alpha' # ENV:TEST_ALPHA
TESTING_BETA: str = 'beta'
TESTING_GAMMA: bool = True # ENV:TEST_GAMMA
cfg = EnvConfig.load_from_file('config.json')
print(cfg.sample_dict())
{'TESTING_BETA': 'beta', 'TEST_ALPHA': 'alpha', 'TEST_GAMMA': True}
Composite configurations
config.json file
{
"INT_ARG": 2,
"LIST_ARG": ["1", "2", "3", "4"],
"STR_ARG": "1234ABCD",
"SUB_CONFIG": {
"ARG_1": 10,
"ARG_2": "abc"
},
"INT_ARG_2": 10,
"SUB_CONFIGS": [
{
"ARG_1": 2,
"ARG_2": "EFGH"
},
{
"ARG_1": 3,
"ARG_2": "IJKL"
}
]
}
config.yaml file
INT_ARG: 2
INT_ARG_2: 10
LIST_ARG:
- '1'
- '2'
- '3'
- '4'
STR_ARG: 1234ABCD
SUB_CONFIG:
ARG_1: 10
ARG_2: ABCD
SUB_CONFIGS:
- ARG_1: 2
ARG_2: EFGH
- ARG_1: 3
ARG_2: IJKL
from gs.config import BaseConfig
class SubConfig(BaseConfig):
"""Sample configuration class"""
ARG_1: int = 10
ARG_2: str = 'abc'
class Config(BaseConfig):
"""Sample configuration class"""
INT_ARG: int = 1 # DOCUMENT FOR INT_ARG
INT_ARG_2: int
STR_ARG = 'abcd' # DOCUMENT FOR STR_ARG
LIST_ARG: List[str] = ['a', 'b', 'c', 'd']
SUB_CONFIG: SubConfig
SUB_CONFIGS: List[SubConfig]
cfg = EnvConfig.load_from_file('config.json')
print(cfg.to_dict())
{'LIST_ARG': ['1', '2', '3', '4'], 'INT_ARG': 2, 'STR_ARG': '1234ABCD', 'SUB_CONFIG': {'ARG_2': 'abc', 'ARG_1': 2}, 'INT_ARG_2': 10, 'SUB_CONFIGS': [{'ARG_2': 'EFGH', 'ARG_1': 2}, {'ARG_2': 'IJKL', 'ARG_1': 3}]}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py-gstools-0.1.7.tar.gz
(12.4 kB
view hashes)
Built Distribution
py_gstools-0.1.7-py3-none-any.whl
(11.2 kB
view hashes)
Close
Hashes for py_gstools-0.1.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb804af3e6fd0c0b34e2b2ed2369fa49b5dc8563cc7cd0bd3668f543fc0d5175 |
|
MD5 | 50c251e8e905328b224c4d59f4ac3f30 |
|
BLAKE2b-256 | ffbb6919b5706a67667e2682c6d6c1883f9b52c491a8ee6889e87b201ac22e00 |