Minimalistic Python library for your configs.
Project description
Minimalistic Python library for your configs.
Betterconf (better config) is a Python library for project configuration managment. It allows you define your config like a regular Python class.
Features:
- Easy to hack.
- Less boilerplate.
- Minimal code to do big things.
Installation
I recommend you to use poetry:
poetry add betterconf
However, you can use pip:
pip install betterconf
How to?
Try to write a simple config:
from betterconf import field, Config class MyConfig(Config): my_var = field("my_var") cfg = MyConfig() print(cfg.my_var)
Try to run:
my_var=1 python our_file.py
With default values:
from betterconf import field, Config class MyConfig(Config): my_var = field("my_var", default="hello world") my_second_var = field("my_second_var", default=lambda: "hi") # can be callable! cfg = MyConfig() print(cfg.my_var) print(cfg.my_second_var) # hello world # hi
Override values when it's needed (for an example: test cases)
from betterconf import field, Config class MyConfig(Config): my_var = field("my_var", default="hello world") cfg = MyConfig(my_var="WOW!") print(cfg.my_var) # WOW!
By default betterconf gets all values from os.environ
but sometimes we need much.
You can create own field's value provider
in minutes:
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
Also we can cast our values to python objects (or just manipulate them):
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
integer=-500 boolean=true dashes=hello-world python our_file.py
License
This project is licensed under MIT License.
See LICENSE for details.
Made with :heart: by prostomarkeloff and our contributors.
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
Hashes for betterconf-2.6.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e43e1d3411b868acee8b6e4c0cad911febba60c4ff476700ac54c006f6e0fe12 |
|
MD5 | 256843e7cdd7addb5e665282b9e2a6a0 |
|
BLAKE2-256 | 0143ee2a39b860d9ad527bd168267927c5b987240c569b6f36cea8885e8fef9a |