Library to inject configurations
Project description
Concoction
Concoction is a simple configuration injection library that allows you to easily inject configuration values into your
Python applications. It supports both pydantic and dataclasses for defining configuration models. Unlike traditional
configuration management tools, Concoction does not parse or layer configurations; it only works with a dictionary
object as an input.
Inspiration
Concoction is inspired by the @ConfigurationProperties and @Value annotations from Spring Boot. These annotations
allow for easy injection of configuration properties into Java applications, and Concoction aims to provide a similar
experience for Python developers.
Key Features
- Flexibility with Plain Dictionaries: Simple and flexible configuration management using plain dictionaries.
- Injecting Whole Configuration Blocks: Inject entire configuration blocks for modular and decoupled settings.
- Injecting Individual Fields: Granular control with the ability to inject specific configuration fields.
- Merging Parent Configurations: Option to bind inherited configuration fields to parent configuration block
Installation
To install Concoction, run the following command:
pip install concoction
Usage
Here is an example of config.yaml file:
app:
service:
host: 0.0.0.0
port: 8000
and injecting service block into our config
import yaml # pip install pyyaml
from pydantic import BaseModel
from concoction import Configuration, set_global_config
# define config with injection
@Configuration("app.service")
class ServiceConfig(BaseModel):
host: str
port: int
# Load configuration from a YAML file
with open("config.yaml") as f:
config = yaml.safe_load(f)
set_global_config(config)
# Create an instance of the configuration model
app_config = ServiceConfig()
or field-wise
from concoction.values.pydantic import Value
class ServiceConfig(BaseModel):
host: str = Value("app.service.host")
port: int = Value("app.service.port")
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file concoction-0.1.4.tar.gz.
File metadata
- Download URL: concoction-0.1.4.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.1 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9eabddefa069bbfeb2e605f509d741315c4f1ba1a4064e56eaaf3dbfcfda95a
|
|
| MD5 |
d6109be49301fa02417b5851f706a8ff
|
|
| BLAKE2b-256 |
f4206429967141be0c63ad6cc063179235d40d23f859569c6bed0eea04098108
|
File details
Details for the file concoction-0.1.4-py3-none-any.whl.
File metadata
- Download URL: concoction-0.1.4-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.1 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9193120d631ad88ff73916eb30e91179c61ae089b674c9ecef37366aa1fd4b7e
|
|
| MD5 |
ea54ded00cd8d88297bfff62d7311d7a
|
|
| BLAKE2b-256 |
78f798942731ccf471c8b8833a0cbb4d2503bf814da81d0b031b073d989ace77
|