Open tomgrin10 opened 3 years ago
I was looking to do something similar and had an idea (currently untested).
If you put the various commands into their own files as raw functions, then you can import them into your main.py
. As @app.command()
is just a decorator, you can can just wrap your imported functions using it.
e.g.
from .create import create
from .delete import delete
app = typer.Typer()
app.command()(create)
app.command()(delete)
@lllama I currently just do this
import typer
import create
import delete
app = typer.Typer()
app.registered_commands += create.app.registered_commands + delete.app.registered_commands
I don't currently have the original code, so this may not be exactly what I wrote, but you get the idea.
@lllama I currently just do this
import typer import create import delete app = typer.Typer() app.registered_commands += create.app.registered_commands + delete.app.registered_commands
I don't currently have the original code, so this may not be exactly what I wrote, but you get the idea.
Thanks for this!
I am working on a little Typer app and I wanted to write my commands modularly with the style shown here, since the docs mention that Typer can recognize when a Typer app has only one command
https://typer.tiangolo.com/tutorial/commands/one-or-multiple/
I was hoping to use add_typer
to insert each of these
But loading a 'sub-Typer' with only one command defined just adds a clunky extra layer
using a pattern like in your snippet lets me define my commands in separate files, compose them into the main application, and avoid having redundant nesting in the command hierarchy 👍🏻
I think it would be a great feature if Typer could emulate this directly when it observes that a sub-Typer has only one command. It seems strange that add_typer
will silently accept being called without a 'name' argument at all
possibly related: https://github.com/tiangolo/typer/issues/119
@lllama I currently just do this
import typer import create import delete app = typer.Typer() app.registered_commands += create.app.registered_commands + delete.app.registered_commands
I don't currently have the original code, so this may not be exactly what I wrote, but you get the idea.
This is same same but less typing in the "main.py
" cli module than the solution given by @lllama ?
Is your feature request related to a problem
Currently there's no way to split commands in the same group / subcommand into different files easily.
The solution you would like
I'm thinking of making it so when
app.add_typer()
gets no name argument it will add all commands toregistered_commands
, without creating a subcommand.Example:
create.py
delete.py
main.py
Output:
Additional context
Currently giving no name to
add_typer
results in not adding the commands at all, even not in a subcommand.