Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Три проблемы с Typer #77

Open
epogrebnyak opened this issue Jan 14, 2024 · 6 comments
Open

Три проблемы с Typer #77

epogrebnyak opened this issue Jan 14, 2024 · 6 comments

Comments

@epogrebnyak
Copy link
Owner

epogrebnyak commented Jan 14, 2024

  1. Typer не дает сделать ключ с двумя значениями, как например --debit ar 100. Текущее решение: сделана вставка Click в приложенте Typer.

  2. Вставку с Click нельзя повесить на команду второго уровня типа bx ledger post. Текущее решение - повесили команду Click как bx post.

  3. Даже вставку Click первого уровня нельзя тестировать с CliRunner, он падает: CliRunner fails on app with added Click command fastapi/typer#732. Текущее решение: тестировать именно эту команду с через subprocess.call, что делает тесты более кривыми.

@epogrebnyak
Copy link
Owner Author

Сейчас внедрено решение по 1, 2 и 3, но решение по 3 выглядит наиболее громоздким. Возможно, если решить 1, по и тестирование в 3 будет единообразным.

@s111d
Copy link

s111d commented Jan 23, 2024

python mult.py --deposit ru 100

The amount of 100 (ru) to be added

@s111d
Copy link

s111d commented Jan 23, 2024

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)
    

@epogrebnyak
Copy link
Owner Author

Проблема в 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 валится

@epogrebnyak
Copy link
Owner Author

https://github.com/epogrebnyak/abacus/blob/main/tests%2Ftest_typer_cli.py#L125-L134

Вот тест который на Typer не получается сделать

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants