Comprehensive Introduction to Confme for Effective Configuration Management

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

Leave a Reply

Your email address will not be published. Required fields are marked *