Open epogrebnyak opened 10 months ago
Сейчас внедрено решение по 1, 2 и 3, но решение по 3 выглядит наиболее громоздким. Возможно, если решить 1, по и тестирование в 3 будет единообразным.
python mult.py --deposit ru 100
The amount of 100 (ru) to be added
from typing import Tuple
import typer
from typing_extensions import Annotated
def main(deposit: Annotated[Tuple[str, int], typer.Option()] = (None, None)):
currency, value = deposit
if not value:
print("No value provided")
raise typer.Abort()
print(f"The amount of {value} ({currency}) to be added")
if __name__ == "__main__":
typer.run(main)
Проблема в Typer начинается, когда мы несколько таких ключей делаем:
в тестах есть
bx post --debit ar 120 --credit sales 100 --credit vat 20
Реализация в click:
https://github.com/epogrebnyak/abacus/blob/main/abacus%2Ftyper_cli%2Fpost.py#L34-L36
На типе list[tuple[str, str]] Typer валится
https://github.com/epogrebnyak/abacus/blob/main/tests%2Ftest_typer_cli.py#L125-L134
Вот тест который на Typer не получается сделать
Typer не дает сделать ключ с двумя значениями, как например
--debit ar 100
. Текущее решение: сделана вставка Click в приложенте Typer.Вставку с Click нельзя повесить на команду второго уровня типа
bx ledger post
. Текущее решение - повесили команду Click какbx post
.Даже вставку Click первого уровня нельзя тестировать с CliRunner, он падает: https://github.com/tiangolo/typer/discussions/732. Текущее решение: тестировать именно эту команду с через
subprocess.call
, что делает тесты более кривыми.