No project description provided
Project description
ConfManager
Описание
Данная библиотека служит для удобного и гибкого управления конфигурациями приложения.
Примеры
Создание конфигурации
from simplest_conf_manager.base_config import BaseConfig
from *.brokers.broker_config
import BrokerConfig
from *.databases
import Databases
class Config(BaseConfig):
databases: Databases
broker: BrokerConfig
В примере выше в качестве * используйте свои собственные валидаторы, унаследованные от BaseModel из Pydantic. Описание в файле конфигурации может выглядеть примерно так:
[databases]
[databases.main]
host="localhost"
port=1234
username="username"
password="secret"
name="db_name"
[broker]
host="localhost"
port=1234
username="guest"
password="guest"
driver="driver_name"
Можно создавать сразу несколько конфигурационных файлов различных форматов (вплоть до отдельных конфигурационных серверов). Объединяются они следующим образом:
conf.toml
[connection]
host="localhost"
port=1234
username="from secrets"
password="from secrets" # тут может быть любой текст или это может отсутствовать вовсе
secrets.toml
[connection]
username="username"
password="pwd"
config.py
from simplest_conf_manager.utils.data_providers.file_data_provider import FileDataProvider
from simplest_conf_manager.utils.parsers.toml_parser import TomlParser
from simplest_conf_manager.utils.dictionaries.deep_merge import deep_merge
from simplest_conf_manager import BaseConfig
from pydantic import BaseModel
class Connection(BaseModel):
host: str
port: int
username: str
password: str
class Config(BaseConfig):
connection: Connection
config_path = 'config/conf.toml'
secret_path = 'config/secrets.toml'
conf_provider = FileDataProvider(path=config_path)
secret_provider = FileDataProvider(path=secret_path)
conf_parser = TomlParser(conf_provider)
secret_parser = TomlParser(secret_provider)
config = Config(**deep_merge(conf_parser.parse(), secret_parser.parse()))
Здесь следует обратить внимание на то, что при наличии одинаковых ключей в нескольких словарях (при использовании функции deep_merge) значение будет взято из последнего.
Данную библиотеку можно использовать для перевода на разные языки небольших приложений:
from pydantic import BaseModel
from simplest_conf_manager import BaseStrings, Translator
from simplest_conf_manager.utils.data_providers import FolderDataProvider
from simplest_conf_manager.utils.parsers import TomlParser
class Phrases(BaseModel):
hi: str
how_are_you: str
class Strings(BaseStrings):
langs: dict[str, Phrases]
strings_path = 'tests/test_proj/config/strings'
strings_provider = FolderDataProvider(path=strings_path)
strings_parser = TomlParser(strings_provider)
strings = Strings(**{'langs': strings_parser.parse()})
translator = Translator(strings=strings, lang='ru')
print(translator.hi)
<style>
p {
font-size: 14pt;
}
</style>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simplest_conf_manager-0.1.2.1.tar.gz.
File metadata
- Download URL: simplest_conf_manager-0.1.2.1.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
108ff50b301d50159c8a4b40c88b63e01b6d3b95ebd0b793074742b6c82031b3
|
|
| MD5 |
6ec4ab4558e9884016825337b39f6f2a
|
|
| BLAKE2b-256 |
a6c5c6675e16994dc306c72feccc0215aa5686f95d41b8fe2769df427298b8b9
|
File details
Details for the file simplest_conf_manager-0.1.2.1-py3-none-any.whl.
File metadata
- Download URL: simplest_conf_manager-0.1.2.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dddfcdb72a756d58515bb747a5deed81784d5318b26efc1311e26ac928581ee
|
|
| MD5 |
734adcc509ed871cd97e2e1e9eb693f7
|
|
| BLAKE2b-256 |
0f8c887e6d52153d37eafb61fbf8322ec51939fcff9a47e2bd0e778a1dc68f72
|