Coqpit Configuration Management

0.0.17 · active · verified Fri Apr 17

Coqpit is a lightweight configuration management library built around Python dataclasses. It simplifies defining, loading, and parsing configurations from various sources (JSON, YAML, CLI arguments) by leveraging dataclass features. Developed by Coqui-AI, it has a rapid release cycle with frequent minor updates.

Common errors

Warnings

Install

Imports

Quickstart

Define your configuration by inheriting from `Coqpit` and using Python dataclasses. Fields can have default values. For mutable defaults (lists, dicts), always use `field(default_factory=...)`. Instantiate the config directly or use `parse_args()` to integrate with `argparse`, or `load_json`/`load_yaml` for file-based configuration.

from coqpit import Coqpit
from dataclasses import dataclass, field
import os

@dataclass
class MyConfig(Coqpit):
    # Basic fields with defaults
    project_name: str = "MyProject"
    learning_rate: float = 1e-4
    epochs: int = 100
    is_train: bool = True
    
    # List and dict fields require default_factory for mutable defaults
    data_dirs: list[str] = field(default_factory=lambda: [os.path.join(".", "data")])
    model_params: dict = field(default_factory=lambda: {"layers": 3, "activation": "relu"})

# Instantiate with default values
config_default = MyConfig()
print(f"Default epochs: {config_default.epochs}")

# Instantiate and override values
config_custom = MyConfig(learning_rate=0.001, epochs=200)
print(f"Custom learning rate: {config_custom.learning_rate}, epochs: {config_custom.epochs}")

# Example of loading/saving (requires file I/O)
# config_custom.save_json("my_config.json")
# loaded_config = MyConfig().load_json("my_config.json")
# print(f"Loaded project name: {loaded_config.project_name}")
# os.remove("my_config.json")

# Example of parsing CLI arguments (run with e.g., python your_script.py --project_name NewProject)
# config_cli = MyConfig()
# config_cli.parse_args()
# print(f"CLI parsed project name: {config_cli.project_name}")

view raw JSON →