Leverage the power of `pydantic` to create `click` command line applications! # Getting started Invoke the example module: ``` $ python -m pydanclick.examples --help ``` # Architecture ``` ┌─────────────────────────────────────────────────┐ │ Pydantic Schema │ ├─────────────────────────────────────────────────┤ │ class MainArguments(BaseModel): │ │ verbose: bool │ │ name: str = Field(description="Service name.")│ │ ... │ └──┬──▲───────────────────────────────────────────┘ │ │ │ │ │ │ Reads schema │ │ + generate click interface │ ┌┴────────────────────────┐ │ │ Pydanclick decorator ├─────────────────────────────┐ │ ├─────────────────────────┤ │ │ │ pydanclick.core.command │ │ │ │ pydanclick.core.group │ │ │ └─────────────────────────┘ │ │ │ ┌──▼───────────────────────────────────────────────────────┐ │ │ Click Interface │ │ ├──────────────────────────────────────────────────────────┤ │ │ click.Option("--verbose", required=True, type=click.BOOL)│ │ │ type=click.BOOL) │ │ │ click.Option("--name", required=True, │ │ │ type=click.STR, │ │ │ help="Service Name.") │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌────────────────────────────────────┐ │ │ Entrypoint invocation │◄──────────────────────┘ ├────────────────────────────────────┤ Read annotation(s) │ @command() │ + invoke with arguments │ def main(parameter: MainArguments):│ from click │ ... │ │ │ │ if __name__ == "__main__": │ │ main() │ └────────────────────────────────────┘ ```