Welcome to Confme
Confme is a powerful configuration management library designed to make your life easier when working with configurations in your applications.
Whether you are developing a small script or a large-scale system, Confme provides a flexible and simple way to handle configurations.
Getting Started
To get started with Confme, you first need to install the package via pip:
pip install confme
Basic Usage
Here is a basic example of using Confme to load configurations from a yaml file:
import confme
config = confme.load("config.yaml")
print(config)
Defining a Configuration Model
With Confme, you can define a configuration model using dataclasses to ensure type safety:
from dataclasses import dataclass
import confme
@dataclass
class AppConfig:
host: str
port: int
config = confme.load("config.yaml", schema=AppConfig)
print(config.host, config.port)
Environment Variable Overrides
Confme allows you to override configuration parameters via environment variables:
import os
import confme
os.environ["APP_HOST"] = "localhost"
os.environ["APP_PORT"] = "8080"
@dataclass
class AppConfig:
host: str
port: int
config = confme.load("config.yaml", schema=AppConfig)
env_config = confme.from_environment(config, prefix="APP_")
print(env_config.host, env_config.port) # Output: localhost 8080
Multi-file Configuration
You can easily load configurations from multiple files and merge them:
import confme
base_config = confme.load("base_config.yaml")
override_config = confme.load("override_config.yaml")
config = confme.merge(base_config, override_config)
print(config)
Server Example
Let’s combine the above concepts into a small server application example:
from flask import Flask
from dataclasses import dataclass
import os
import confme
@dataclass
class ServerConfig:
host: str
port: int
app = Flask(__name__)
def create_app(config_path):
config = confme.load(config_path, schema=ServerConfig)
env_config = confme.from_environment(config, prefix="APP_")
@app.route("/")
def index():
return f"Server running on {env_config.host}:{env_config.port}"
app.run(host=env_config.host, port=env_config.port)
if __name__ == "__main__":
create_app("server_config.yaml")
Hash: 9eaf68efedb7ec59210a02335af0d060007001b5fc30a2a3bbe2f753aafff650