Skip to main content

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

concoction-0.1.4.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

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

concoction-0.1.4-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

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

Hashes for concoction-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a9eabddefa069bbfeb2e605f509d741315c4f1ba1a4064e56eaaf3dbfcfda95a
MD5 d6109be49301fa02417b5851f706a8ff
BLAKE2b-256 f4206429967141be0c63ad6cc063179235d40d23f859569c6bed0eea04098108

See more details on using hashes here.

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

Hashes for concoction-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9193120d631ad88ff73916eb30e91179c61ae089b674c9ecef37366aa1fd4b7e
MD5 ea54ded00cd8d88297bfff62d7311d7a
BLAKE2b-256 78f798942731ccf471c8b8833a0cbb4d2503bf814da81d0b031b073d989ace77

See more details on using hashes here.

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