Привет, dev.to!
Сегодня я хочу рассказать вам о моей библиотеке для конфигов ( BetterConf ). У меня уже есть статья об этом Но я реализовал некоторые особенности, которые не были.
Хорошо, давайте начнем!
Сначала теперь вы можете получить значения не только от Env vars. По умолчанию это так Но вы можете редактировать.
from betterconf import field, Config from betterconf.config import AbstractProvider class NameProvider(AbstractProvider): def get(self, name: str): return name class Cfg(Config): my_var = field("my_var", provider=NameProvider()) cfg = Cfg() print(cfg.my_var) # my_var
И … Вы можете сделать кастинг своих объектов простым и прозрачным синтаксисом:
from betterconf import field, Config # out of the box we have `to_bool` and `to_int` from betterconf.caster import to_bool, to_int, AbstractCaster class DashToDotCaster(AbstractCaster): def cast(self, val: str): return val.replace("-", ".") to_dot = DashToDotCaster() class Cfg(Config): integer = field("integer", caster=to_int) boolean = field("boolean", caster=to_bool) dots = field("dashes", caster=to_dot) cfg = Cfg() print(cfg.integer, cfg.boolean, cfg.dots) # -500, True, hello.world
Эта библиотека легкая и без зависимости. Я использую его в моем производственном среде и порекомендую вас тоже!
Вы можете увидеть больше в Github: https://github.com/prostomarkeloff/betterconf.
Оригинал: “https://dev.to/prostomarkeloff/python-configs-for-humans-part-2-4269”