--- id: confuse version: "2.2.1" license: MIT license_treatment: permissive maintenance: active --- # confuse — Painless YAML config files License: permissive · Maintenance: active · Downloads: 1.7M/mo ## What it is and what it does Confuse is a configuration library that wraps YAML files with a validation and layering system. It lets you read configuration from multiple sources—built-in defaults, system-wide files, user-specific overrides, environment variables, and command-line arguments—and merge them into a single validated configuration object. The library handles the boilerplate of type checking, file location discovery across different operating systems, and human-readable error messages. You use it by creating a Configuration object, then accessing values through a dictionary-like API that validates types on retrieval. For example, `config['num_goats'].get(int)` fetches the value and ensures it's an integer. It integrates with argparse and optparse from the standard library, supports environment variable substitution with automatic type conversion, and knows where to look for config files on Unix, macOS, and Windows without you having to write platform-specific code. Use it for: - Build a CLI tool that reads user settings from ~/.config on Unix or %APPDATA% on Windows without platform-specific logic. - Layer application defaults with user overrides and command-line flags, where each layer can be specified as YAML. - Validate that configuration values are the correct type (integer, string, list, etc.) and provide clear error messages when they aren't. - Support environment variable configuration for containerized or cloud-deployed applications with automatic type conversion. - Initialize a default configuration file on first run using an in-package YAML template. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Confuse is a YAML configuration library that handles defaults, type validation, layering, platform-specific file locations, and command-line/environment variable integration for Python applications. Yes. Confuse is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a common problem (configuration management) with a clean API. It's suitable for any Python application that needs to read YAML config files with validation and layering. The MIT license poses no restrictions. ## Install pip install confuse uv add confuse poetry add confuse ## Installing confuse Before you install: Low install friction with only two runtime dependencies (pyyaml and typing_extensions). The project is actively maintained with a recent release 26 days ago and steady repository activity since its initial release in 2015. License in practice: MIT license (permissive) means you can use this freely in commercial and private projects with minimal restrictions, requiring only attribution. Quickstart: pip install confuse import confuse config = confuse.Configuration('myapp', read=False) config['num_goats'].get(int) Requires Python 3.10 or later. Verify before relying: - Whether the package's type validation covers all common Python types or only a subset. - Performance characteristics when dealing with large or deeply nested configuration files. - Whether environment variable expansion supports all standard shell syntax. ## Package facts - License: MIT (permissive) - Python support: supports_current - Install friction: low - Maintenance: active - Downloads: 1.7M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags yaml config file library, configuration management python, typed config validation, layered configuration defaults, platform-specific config paths, environment variable config, command-line config override, configuration-management, yaml [View on SkillFed](https://skillfed.io/packages/confuse) · [View on PyPI](https://pypi.org/project/confuse/)