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)