{"id":28084,"library":"pydantic-cli","title":"pydantic-cli","description":"Turn Pydantic defined data models into CLI tools with automatic argument parsing, help generation, and validation. Current version 10.0.0, requires Python >=3.10. Releases follow pydantic major versions with breaking changes.","status":"active","version":"10.0.0","language":"python","source_language":"en","source_url":"https://github.com/pydantic/pydantic-cli","tags":["cli","pydantic","argument-parsing","validation"],"install":[{"cmd":"pip install pydantic-cli","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core dependency; pydantic-cli 10.x requires pydantic v2","package":"pydantic","optional":false}],"imports":[{"note":"run_and_exit was moved to top-level package in v10","wrong":"from pydantic_cli.app import run_and_exit","symbol":"run_and_exit","correct":"from pydantic_cli import run_and_exit"},{"note":"AppConfig is now exported from pydantic_cli","wrong":"from pydantic_cli.config import AppConfig","symbol":"AppConfig","correct":"from pydantic_cli import AppConfig"}],"quickstart":{"code":"import sys\nfrom pydantic import BaseModel\nfrom pydantic_cli import run_and_exit\n\nclass Options(BaseModel):\n    name: str\n    count: int = 1\n\ndef runner(opts: Options) -> None:\n    for _ in range(opts.count):\n        print(f'Hello {opts.name}')\n\nif __name__ == '__main__':\n    run_and_exit(Options, runner, description='A simple greeting app')","lang":"python","description":"Basic example: define a Pydantic model as CLI arguments and a runner function."},"warnings":[{"fix":"If using pydantic v1, pin pydantic-cli<10.","message":"pydantic-cli v10 drops support for pydantic v1. Your models must use pydantic v2 syntax.","severity":"breaking","affected_versions":">=10.0.0"},{"fix":"Use a separate entry point per command or consider another library like typer or click.","message":"Subcommands are not natively supported. Each script should handle a single command.","severity":"gotcha","affected_versions":"all"},{"fix":"Replace 'CLI().run()' with 'run_and_exit()'.","message":"The old pattern 'from pydantic_cli import CLI' is deprecated. Use run_and_exit instead.","severity":"deprecated","affected_versions":"==10.0.0"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Run 'pip install pydantic-cli' (hyphen, not underscore).","cause":"Library not installed or installed with different capitalization.","error":"ModuleNotFoundError: No module named 'pydantic_cli'"},{"fix":"Upgrade to v10: 'pip install -U pydantic-cli'. For v9, use 'from pydantic_cli.app import CLI'.","cause":"Using pydantic-cli v9 or earlier where the function was named differently or in a submodule.","error":"AttributeError: module 'pydantic_cli' has no attribute 'run_and_exit'"},{"fix":"Ensure validators use @field_validator decorator from pydantic v2.","cause":"Using pydantic v2 validators incorrectly; pydantic-cli v10 expects pydantic v2 model validation.","error":"pydantic.errors.PydanticUserError: A custom validator must be a classmethod"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}