Skip to main content

CI PyPI - Version PyPI - Python Version GitHub License

Durango

Durango is a lightweight configuration management toolkit that layers strongly typed settings, configuration files, environment variables, and programmatic overrides using Pydantic Settings. It is designed for CLI tools and services that need predictable precedence, multi-format config files, and clear error reporting.

Key Features

  • Config precedence: defaults → config file → environment variables → user overrides.
  • Format flexibility: parse YAML, JSON, or TOML files by default with optional extras.
  • Typed settings: describe your configuration with Pydantic models and receive fully validated objects.
  • Reload aware: refresh configuration at runtime and hook into lifecycle callbacks.
  • Extensible: adapt environment prefixes, merge behaviour, and file lookup strategies to fit your application.

Installation

Durango is published on PyPI as durango. Install it with your preferred tool:

# Using uv (recommended)
uv add durango

# Using pip
pip install durango

Durango supports Python 3.9 through 3.12.

Quick Start

from durango import ConfigManager, DurangoSettings


class AppSettings(DurangoSettings):
    debug: bool = False
    api_url: str


manager = ConfigManager(
    settings_type=AppSettings,
    identifier="MYAPP",
    default_file="~/.config/myapp/settings.yaml",
)

settings = manager.load()
print(settings.api_url)

If ~/.config/myapp/settings.yaml does not exist, Durango will create it and populate it with the model defaults before layering environment variables and runtime overrides.

Environment variables take the form MYAPP__API_URL=true. To override a nested section named database, use MYAPP__DATABASE__URL.

Documentation

  • Docs site (WIP): see docs/
  • Architecture notes: ARCH.md
  • Working session notes: notes/STATUS.md

Contributing

See docs/contributing.md for full setup, workflow, and review guidelines. Highlights:

  • Install dependencies with uv sync --all-extras --dev.
  • Run uv run invoke ci before opening a pull request.
  • Publishing and release automation are covered in docs/publishing.md.

License

Durango is available under the MIT License. See LICENSE for details.

Metadata

Release files for durango 0.1.3

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

Source distribution (sdist)

Source distribution for durango 0.1.3
File Size Uploaded
durango-0.1.3.tar.gz 329.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for durango 0.1.3
File Interpreter ABI Platform
durango-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 344.4 kB

Release files / durango-0.1.3.tar.gz

Download URL durango-0.1.3.tar.gz
Size 329.1 kB
Tags Source
SHA-256 checksum
How to use checksums
85727beeddf9c617ccc65b8b46bb7380c9805c5b4a8f085275254a68aa8027ba
BLAKE2b-256 checksum
How to use checksums
bd85ddf76a5c130b8d3b45feed4cfc040f23df3cd3927965cf9e8d6e91575d7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release files / durango-0.1.3-py3-none-any.whl

Download URL durango-0.1.3-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99ed0099cb8ec523202aa2bed3cedd96f3de99e1c80b900ecf71a284a8ae3cc5
BLAKE2b-256 checksum
How to use checksums
2d5d4210d1e37d66717561feedc7de3b86241a465cda7e549651dd720617b10e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

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