我在同一个打字机应用程序中有几个命令获得相同的参数或至少其中一些参数(例如数据库连接参数),但它们不是彼此的子命令。
我想避免为每个命令复制粘贴这些参数,而是定义某种继承或参数分组。
奖励点 - typer 中是否有类似于 argparse 互斥 组的东西?
来自此线程:https://github.com/tiangolo/typer/issues/153
from dataclasses import dataclass
from typer import Typer, Option, Argument
app = Typer()
@dataclass(kw_only=True)
class common:
verbose: Annotated[bool, Option()] = False
@app.command()
@dataclass(kw_only=True)
class foo(common):
x: Annotated[str, Argument()]
y: bool = False
def __post_init__(self):
print(f"Foo cmd {self.x=}, {self.y=}, {self.verbose=}")
@app.command()
@dataclass(kw_only=True)
class bar(common):
z: str
def __post_init__(self):
print(f"Bar cmd {self.z=}, {self.verbose=}")
if __name__ == "__main__":
app()