Hello, dev.to!
Today, I want to tell you about my library for configs (betterconf). I have already article about it but I have implemented some features which weren't.
Okay, let's start!
At first, now you can get values not only from env vars. By default it's so but you can edit.
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
And... you can do casting of your objects by simple and clear syntax:
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
This library is lightweight and dependency-free. I'm using it in my production environments and recommend you too!
You can see more at Github: https://github.com/prostomarkeloff/betterconf
Top comments (0)