confoid 0.2.0

Creator: coderz1093

Last updated:

Add to Cart

Description:

confoid 0.2.0

Confoid
Configuration Management for Python.






Install
$ pip install confoid

Loading a single config file
import confoid

new_settings = confoid.Config("application.yml")

Loading multiple config file
Multiple files can be provided in order and will merge with the previous configuration.
import confoid

config_files = ["application.yml", "application.development.yml"]

new_settings = confoid.Config(
config_files,
base_dir="config",
)

Autoload based on provided environment
import confoid

new_settings = confoid.Config("application.yml", current_env="development")
# this will load application.yml and application.{current_env}.yml

Reading the settings
settings.username == "admin" # dot notation with multi nesting support
settings['password'] == "secret123" # dict like access
settings.get("nonexisting", "default value") # Default values just like a dict
settings.databases.name == "mydb" # Nested key traversing

Config merging
application.yml
default:
prefix:
otp: "user-otp"
auth: "auth-tokens"
type: inmemory
redis:
url:

application.development.yml
default:
type: redis
redis:
url: redis://saviof.com
encoding: "utf8"

Will resolve to the following final config
default:
prefix:
otp: "user-otp"
auth: "auth-tokens"
type: redis
redis:
url: redis://saviof.com
encoding: "utf8"

Config environment vars
All fields can use environment variables with a fallback default value
password: ${TEST_SERVICE_DEFAULT_PASSWORD:test}

Validators can be added for pre checks on loaded config
from confoid import Validator

config_files = ["application.yml", "application.development.yml"]

new_settings = confoid.Config(
config_files,
base_dir="config",
validators=[
Validator("default", "default.redis.password", must_exist=True)
Validator("otp.length", gte=6, lte=20)
Validator("default.type", values=["inmemory", "redis"])
]
)

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.