Skip to main content

Use [pydantic](https://docs.pydantic.dev/latest/) to manage persistent config for your [Typer](https://typer.tiangolo.com/) CLI apps!

Project description

Typer Pydantic Config

This package helps you quickly build python CLI applications with a persistent config using typer & pydantic.

minimal_example.gif

See minimal.py and example.py for two simple examples.

Installation

Install it from pypi using your preferred method, e.g. through uv:

uv pip install typer-pydantic-config

Usage

  1. Implement config object as pydantic class
  2. Use get_config where every you need the config object
  3. Build your typer app
  4. Start the app with start_config_app(app, <YourConfigPydanticClass>)

On the first invocation, prompts the user to set all values in the config file.

Your app now has an additional config command with the following signature:

$ python example.py config --help
Usage: example.py config [OPTIONS] COMMAND [ARGS]...

  Interact with config: (delete | init | path | set | show).

Options:
  --help  Show this message and exit.

Commands:
  delete  Delete config file on disk.
  init    Interactively prompt for every field in the config.
  path    Print config path.
  set     Set one or more config fields via flags.
  show    Print content of config file.

⚠ Current Limitations ⚠

  • The package is still an early draft and not yet thoroughly tested
  • Only default_factory without arguments is supported
  • Does not support optional fields yet
  • The following types are supported as attributes of your config class:
    • int
    • float
    • bool
    • str
    • datetime
    • Path
    • another subclass of pydantic's BaseModel
  • Config values are available as ctx.obj["config"] (see click docs: Context).
    • This is only available when one of the endpoint functions is called.
    • Do not overwrite the ctx.obj (at least not the "config" key).
  • Unique app name required:
    • Set a unique name: app = typer.Typer(name="<some_unique_name>")
    • This name is used by platformdirs to construct the path of the config.

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

typer_pydantic_config-0.5.0.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

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

typer_pydantic_config-0.5.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file typer_pydantic_config-0.5.0.tar.gz.

File metadata

File hashes

Hashes for typer_pydantic_config-0.5.0.tar.gz
Algorithm Hash digest
SHA256 68fd3b6ea6bdf13bcd064270a6140dfdf876195c3f3c163338c305c66b7f3130
MD5 188e9771d0eff98cd2d61ce2edc6b838
BLAKE2b-256 f4c9020d3bc9fe687c8ea1555c72acd568bd6585afb77e297801c22833750243

See more details on using hashes here.

File details

Details for the file typer_pydantic_config-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for typer_pydantic_config-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20a12ee7656ca7d26263b8957f107d9ad65980f3895ae30fc70900fb1b5bfdec
MD5 3d4a3fcccbd50d62739eaf10c9016043
BLAKE2b-256 3d70796a57cdaf08725d3426199a6d573e7cee065418d8d74815ad85889f166e

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