4-line Usage: when using Literal type #1362
-
First Check
Commit to Help
Example Codeimport typer from typing import Literal, get_args # Does not work: # type ALL_PRODUCT_TYPES_T = Literal[ ALL_PRODUCT_TYPES_T = Literal[ "Longlonglongname1:more_long_things_here", "Longname2:NUM1ABC", "Longname2:NUM1ABC_delete", "Longname2:NUM2ABC", "Longname2:NUM2ABC_delete", "Longname3:NU_3_ABC___", "Longname3:NU_2_CDE___", "Longname3:NU_2_CDE____delete", ] ALL_PRODUCT_TYPES: tuple[ALL_PRODUCT_TYPES_T, ...] = get_args(ALL_PRODUCT_TYPES_T) app = typer.Typer() @app.command() def main( product_type: ALL_PRODUCT_TYPES_T = typer.Argument(...), # Type should really be list[ALL_PRODUCT_TYPES_T]. more_products: list[str] = typer.Argument(..., help=" ".join(ALL_PRODUCT_TYPES)) ) -> None: pass if __name__ == "__main__": app()DescriptionI find the help text from the new I think the 4 line Is there some toggle to avoid making a multi-line Usage-line or similar? I also get a failure in Typer if I use Operating SystemLinux Operating System DetailsNo response Typer Version0.19.2 Python Version3.12 Additional ContextNo response |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
| You can configure import typer from typing import Literal, get_args ALL_PRODUCT_TYPES_T = Literal[ "Longlonglongname1:more_long_things_here", "Longname2:NUM1ABC", "Longname2:NUM1ABC_delete", "Longname2:NUM2ABC", "Longname2:NUM2ABC_delete", "Longname3:NU_3_ABC___", "Longname3:NU_2_CDE___", "Longname3:NU_2_CDE____delete", ] app = typer.Typer() def get_help_for_literal(literal_type: type) -> str: values = get_args(literal_type) return "\n\n".join(f"'{value}'" for value in values) @app.command() def main( product_type: ALL_PRODUCT_TYPES_T = typer.Argument( ..., metavar="PRODUCT_TYPE", help=get_help_for_literal(ALL_PRODUCT_TYPES_T) ), ) -> None: pass if __name__ == "__main__": app()Result: As for |
Beta Was this translation helpful? Give feedback.
You can configure
Usageusingmetavarparameter: