Skip to main content

Settings management, pluggable secrets, and run-scoped logging for Python applications.

Project description

Konfig

Quality Gate Status Reliability Rating Security Rating Maintainability Rating Vulnerabilities Bugs Lines of Code Duplicated Lines (%)

Settings management, pluggable secrets, and run-scoped logging for Python applications.

Konfig provides three foundational capabilities every Python application needs, with an optional lightweight app lifecycle context manager that ties them together. It is a clean-sheet replacement for dtPyAppFramework.

Features

  • Layered settings with system/user/env/runtime precedence and persistent writes
  • Pluggable secrets with OS keyring, AES-encrypted file, and AWS Secrets Manager backends
  • Run-scoped logging with historical retention, structured JSON mode, and stdio-safe output
  • Platform-aware defaults for config, data, and log directories (macOS, Linux, Windows)
  • Optional app lifecycle via a sync/async context manager — no inheritance required
  • Python 3.10+

Installation

pip install konfig

For AWS Secrets Manager support:

pip install konfig[aws]

Secrets

AWS Secrets Manager (designated secret)

Point konfig at a single AWS secret that holds a JSON bundle of your secrets (the secret must already exist):

export KONFIG_AWS_SECRETS_MANAGER=arn:aws:secretsmanager:eu-west-1:123456789012:secret:myapp/secrets-AbCdEf
from konfig import Secrets

secrets = Secrets()               # env var selects the AWS bundle backend
api_key = secrets.get("api_key")
secrets.set("api_key", "sk-new")  # read-modify-write back to the bundle

Requires pip install konfig[aws].

Running the LocalStack integration test

The AWS bundle backend has an opt-in integration test that runs against a local LocalStack container (no AWS account needed). It auto-skips when LocalStack is not running, so it never affects the normal test run.

docker compose up -d         # start LocalStack
pip install -e ".[dev,aws]"  # boto3 + dev tools
pytest -m localstack         # run only the integration test
docker compose down          # stop LocalStack

Quick Start

from konfig import AppContext

with AppContext(
    name="My Application",
    version="1.0.0",
    config_file="config.yaml",
    env_prefix="MYAPP",
) as ctx:
    host = ctx.settings.get("database.host", "localhost")
    api_key = ctx.secrets.get("api_key")
    ctx.logger.info("Starting with host=%s", host)

For async applications:

async with AppContext(name="My Server", version="2.0.0") as ctx:
    await run_server(ctx.settings)

Config file format

The config file format is chosen by the KONFIG_CONFIG_FORMAT environment variable (yaml, json, or sqlite). When unset, the format is detected from the file extension, defaulting to YAML. Reading, updating, and creating settings work in every format. (TOML config files are still supported by extension detection, but are read-only and cannot be selected via KONFIG_CONFIG_FORMAT.)

export KONFIG_CONFIG_FORMAT=sqlite   # store settings in a SQLite database file
from konfig import Settings

settings = Settings(config_file="config.db")
settings.set("database.host", "localhost", persist="user")  # written to SQLite
settings.set("debug", True)                                  # omit persist: in-memory only
host = settings.get("database.host")

Each subsystem (Settings, Secrets, LogManager) can also be used independently. See the full documentation in the docs/ directory:

Samples

Working examples are provided in the samples/ directory:

File Description
basic_settings.py Config files, defaults, env vars, overrides
secrets_usage.py Store, retrieve, and delete secrets
logging_demo.py Run-scoped logging with retention
app_context.py Full lifecycle with all subsystems
async_app.py Async context manager usage
custom_backend.py Implementing a custom SecretBackend

Development

pip install -e ".[dev]"
pytest
pytest --cov=konfig
mypy src/konfig
black src/ tests/
isort src/ tests/

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cognisn_konfig-0.2.0.tar.gz (73.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cognisn_konfig-0.2.0-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file cognisn_konfig-0.2.0.tar.gz.

File metadata

  • Download URL: cognisn_konfig-0.2.0.tar.gz
  • Upload date:
  • Size: 73.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cognisn_konfig-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8002cd7f9477e1ccae3dac37e0e1091053b23669aa4e2f94941f3029a7dcaa29
MD5 2617e7c3e30e5c030d900e47ec25e1bd
BLAKE2b-256 b5c03df27ae0c8226515647447c5b5d8b1f8a1a5edb1bef917820d214285900b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cognisn_konfig-0.2.0.tar.gz:

Publisher: publish.yml on Cognisn/konfig

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cognisn_konfig-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cognisn_konfig-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cognisn_konfig-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2bd3e609a6553bb76f2c39fe72bc7f32a56b30b5e837392283f655191edcfda
MD5 72c9dec66f29fcfa5cead58d60402a6d
BLAKE2b-256 1379aa6d6338af5c85b7a66c7e09596ce7dbb44bf82a78bbf4ad333f15fbe587

See more details on using hashes here.

Provenance

The following attestation bundles were made for cognisn_konfig-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Cognisn/konfig

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page