-
-
Notifications
You must be signed in to change notification settings - Fork 814
Open
Labels
featureNew feature, enhancement or requestNew feature, enhancement or request
Description
Is your feature request related to a problem
No.
The solution you would like
In a lot of our codebase we pass the typer arguments to a dataclass that we pass around the command-line tool code.
@dataclass
class ToolConfig:
name: str
parent: Optional[str] = None
@app.command(help="Some help")
def change_status(
name: str = typer.Argument(...),
parent: Optional[str] = typer.Argument(..., default=None)
) -> None:
some_function(ToolConfig(name, parent))This results in duplicating a fair bit of function arguments and can lead to mistakes.
It would nice if it was possible to do something like:
@dataclass
class ToolConfig:
name: str = typer.Argument(...) # implementing `field` in some way.
parent: Optional[str] = typer.Argument(..., default=None) # something like `field(default_factory=lambda: None)`
@app.command(help="Some help.")
def change_status(tool_config: ToolConfig) -> None:
some_function(tool_config)Describe alternatives you've considered
Using typer/click context might be a solution, but I am not familiar enough with it all to say.
I am not even sure if this feature would be possible at all really.
ycd, askurihin, conorcamp, blazingsiyan, Yura52 and 57 morePythonFZ, wookayin, joshtree41 and daviddwlee84
Metadata
Metadata
Assignees
Labels
featureNew feature, enhancement or requestNew feature, enhancement or request