Skip to main content

tyro-based CLI with TOML/YAML config file support for ML

Project description

Pydantic Config

A drop-in replacement for tyro.cli with TOML/YAML/JSON config file support.

# Instead of:
from tyro import cli

# Use:
from pydantic_config import cli

Built on top of tyro for type-safe CLI parsing and Pydantic for validation.

Install

pip install git+https://github.com/samsja/pydantic_config

For TOML support (recommended):

pip install "pydantic_config[toml] @ git+https://github.com/samsja/pydantic_config"

Quick Start

from pydantic_config import cli, BaseConfig

class TrainConfig(BaseConfig):
    lr: float = 1e-4
    batch_size: int = 32

class ModelConfig(BaseConfig):
    hidden_size: int = 256
    num_layers: int = 4

class Config(BaseConfig):
    train: TrainConfig = TrainConfig()
    model: ModelConfig = ModelConfig()
    hello: int

if __name__ == "__main__":
    config = cli(Config)

Help output

python train.py --help

Help output

Missing required argument

python train.py

Missing required argument

Config file validation error

python train.py --train @ train_config.toml

Config validation error

Config file not found

python train.py @ nonexistent.toml

Config file not found

Config Files

Load config from TOML/YAML/JSON files using the @ syntax:

# Load config file
python train.py @ config.toml

# Override values from CLI
python train.py @ config.toml --train.lr 0.001

# Load nested configs from separate files
python train.py --model @ model.toml --train @ train.toml

Example config.toml:

[train]
lr = 0.0003
batch_size = 64

[model]
hidden_size = 512

CLI arguments always override config file values.

Development

uv sync --extra all
uv run pytest

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

prime_pydantic_config-0.3.0.dev79.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

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

prime_pydantic_config-0.3.0.dev79-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file prime_pydantic_config-0.3.0.dev79.tar.gz.

File metadata

  • Download URL: prime_pydantic_config-0.3.0.dev79.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prime_pydantic_config-0.3.0.dev79.tar.gz
Algorithm Hash digest
SHA256 9d3031c02e8cf98c411e04a551e94d3d84c1c8d4e77352d28a9cd4984498e38a
MD5 af2fbf4f4268da178d9a4c9ffe179b50
BLAKE2b-256 254252c18c9981f0e8ababee0d74c34e783080fda9b6dd5d6b1c5937cb853c9b

See more details on using hashes here.

File details

Details for the file prime_pydantic_config-0.3.0.dev79-py3-none-any.whl.

File metadata

  • Download URL: prime_pydantic_config-0.3.0.dev79-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for prime_pydantic_config-0.3.0.dev79-py3-none-any.whl
Algorithm Hash digest
SHA256 be7cbec59b5fe779686481bc2d5a97a32564bce8d75b62101718cd5ab2c814a6
MD5 28743e1e6112d569a51c10d17b1d11a6
BLAKE2b-256 cea1debf8f4156e5ffd952cdb61af1a1e20eb32e6c828d821811bdb4e5579457

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