Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
View this page
Toggle table of contents sidebar

# Maison

Read configuration settings from configuration files.

## Motivation

When developing a `python` package, e.g a command-line tool, it can be helpful to allow the user to set their own configuration options to allow them to tailor the tool to their needs. These options are typically set in files in the root of a user’s directory that uses the tool, for example in a `pyproject.toml` or an `{project_name}.ini` file.

`maison` aims to provide a simple and flexible way to read and validate those configuration options so that they may be used in the package.

### Features

- Supports multiple config files and multiple config filetypes.

- Optional merging of multiple configs.

- Optional config validation with pydantic.

- Caching of config files for quick access.

- Fully tested and typed.

## Installation

    pip install maison

## Usage

Suppose the following `pyproject.toml` lives somewhere in a user’s directory:

    [tool.acme]
    enable_useful_option = true

`maison` exposes a `UserConfig` class to retrieve values from config files like so:

    from maison import UserConfig

    from my_useful_package import run_useful_action

    config = UserConfig(package_name="acme")

    if config.values["enable_useful_option"]:
        run_useful_action()

## Help

See the documentation for more details.

## Licence

MIT