Как я могу поместить команды типографа в отдельные модули, не становясь при этом подкомандами?Python

Программы на Python
Ответить
Anonymous
 Как я могу поместить команды типографа в отдельные модули, не становясь при этом подкомандами?

Сообщение Anonymous »

Вот подделка, которая работает, но вызывает проблемы с гибкостью позиции опционов и помогает:
main.py:
< pre class="lang-py Prettyprint-override">

Код: Выделить всё

import typer
import mycommand
app = typer.Typer()
app.add_typer(mycommand.app, name='mycommand')
@app.command()
def othercmd():
pass
if __name__ == '__main__':
app()
mycommand.py:

Код: Выделить всё

from typing import List
import typer
app = typer.Typer()
@app.callback(invoke_without_command=True)   # Not a sub command - run this by default
def mycommand(files: List[str] = typer.Argument(...), name: str = typer.Option(None)):
if name: print(f'Hello {name}')
print(files)
Вы можете запустить это сейчас с помощью python main.py mycommand --name Butty myfile.txt.
Однако попытка запустить с помощью python main.py mycommand myfile .txt --name Butty загрузит параметр в аргумент files.
Выполнение main.py mycommand --help показывает, почему; после опций и аргументов обратного вызова ожидается дополнительная команда и аргументы:

Код: Выделить всё

Usage: main.py mycommand [OPTIONS] FILES... COMMAND [ARGS]...

Arguments:
FILES...  [required]

Options:
--name TEXT
--help       Show this message and exit.
Есть ли способ добавить команду для ввода в отдельный модуль в качестве команды «по умолчанию», которая будет реагировать так же, как при использовании @app.command()?< /п>

Подробнее здесь: https://stackoverflow.com/questions/731 ... b-commands
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»