Register Typer CLI applications to a main application to make it more pluggable.
Project description
typer-plugins
Register Typer CLI applications to a main root application to make it more pluggable.
This is inspired by click-plugins so I have created a similar package to register Typer CLI based applications in a similar plugin format. It's slightly different how to use and I'm still actively working on this project to improve the process of registering, detecting duplicate plugins. Natively running a plugin with broken code will not break the full application, only when someone attempts to execute that specific command.
How to use
pip install typer-plugins
- Import the package in your main application that you want to register all your plugins into
import typer
from typer_plugins import register_plugins # Import the register_plugins function
app = typer.Typer(invoke_without_command=True)
register_plugins(app=app, entrypoint="exampleapp.plugins") # Run the function after creating your main `app`. This entrypoint should be used by all your applications.
if __name__ == "__main__":
app()
- Create your plugin(s) and ensure you either create an entrypoint, here is an example using pyproject.toml with Poetry:
[tool.poetry.plugins."exampleapp.plugins"]
"plugin-a" = "plugin_a.app:app"
This format assumes your plugin is called plugin_a
and there is a python file called app.py
with the Typer app created assigned to a variable named app
. You can find a working example in the examples directory
- As long as your entrypoint matches up with the poetry plugin configured in the pyproject.toml file, you can now proceed to
pip install <your-plugin>
whether it be locally or via a package distributer. It will then register from your main application where you use theregister_plugins
function.
$ python my-app plugin-a --help
Usage: my-app plugin-a [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
root-command-a
root-command-b
some-commands
some-other-commands
Development / Contributing
TO-DO
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for typer_plugins-0.1.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02c0f4f5329dbdc5f3b632acbe202604dd82924e9a16ff5249281d2cdec8d76d |
|
MD5 | 8570064c108e4fc299695504fb07d2dc |
|
BLAKE2b-256 | 45e5bb39366bf17e02dfd5d5b4e03862955a9732626642d1a91ebb7f004a5b63 |