Skip to main content

Confoid

Configuration Management for Python.

image image GitHub license

GitHub Actions (Python package)

Average time to resolve an issue Percentage of issues still open

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"])
    ]
)

Release files for confoid 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for confoid 0.2.0
File Size Uploaded
confoid-0.2.0.tar.gz 9.7 kB Details

Release files / confoid-0.2.0.tar.gz

Download URL confoid-0.2.0.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
185c77b98d54567ac71f8d71a79ff1c989c8548446d37e5483b5d1a2c36e0804
BLAKE2b-256 checksum
How to use checksums
0a1d932f45670f6108bff2df778e94fff07dc04e203be11c2b0aab8e3641c289
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page