pitstop lets you move tightly coupled configuration file parsing, secrets retrieval, and other configuration related administrivia logic out of your application, improving maintainability, reducing complexity, and encouraging better configuration management practices.
The purpose of pitstop is to facilitate application configuration management best practices, which are:
- Storing environment-specific configuration outside source control. Environment variables, the filesystem, and KV stores are all viable alternatives.
- Storing secrets in a proper secrets management tool, i.e. Vault, AWS SSM Parameter Store, and AWS Secrets Manager, among others.
pitstop provides a Python 3.7+ library and command line utility,
pitstop
(obviously). The CLI provides the ability to leverage
pitstop's functionality without being restricted to writing Python
applications, by reading configuration backends and strategy
configuration from a local file, and emitting a JSON encoded snapshot of
the aggregated application configuration.
pitstop stands on the shoulders of mature, feature-rich, and well tested Python libraries, and merely provides a convenience layer so you don't have to write the same configuration parsing and normalization scaffolding with every new library or application.
pitstop's main features:
- Schema-driven configuration validation and normalization, powered by Cerberus.
- Nested, path-based key access and transformation, powered by glom.
- Multi-tiered, prioritized configuration loading strategies.
- Easily extensible backends and encoding providers via entry points.