-
Notifications
You must be signed in to change notification settings - Fork 38
Closed
Description
It seemed like Optional[str] argument with None as its default value breaks the specified argument alias.
See the minimal example below where the --vid alias for vendor_id fails to be recognized while the --pid alias for product-id works.
from typing import Annotated, Optional
import tyro
def detect_usb_device(
vendor_id: Annotated[Optional[str], tyro.conf.arg(aliases=["--vid"])] = None,
product_id: Annotated[Optional[str], tyro.conf.arg(aliases=["--pid"])] = "",
) -> None:
"""
Detect connected USB device by vendor_id + product_id.
:param vendor_id: vendor_id of a specific USB device.
:param product_id: product_id of a specific USB device.
"""
print(f"{vendor_id=} {product_id=}")
if __name__ == "__main__":
tyro.cli(detect_usb_device)
root@machine:/scripts# python3 test.py -h
usage: test.py [-h] [--vendor-id {None}|{None}|STR] [--product-id {None}|STR]
Detect connected USB device by vendor_id + product_id.
╭─ options ─────────────────────────────────────────────────────────────╮
│ -h, --help show this help message and exit │
│ --vendor-id {None}|{None}|STR │
│ vendor_id of a specific USB device. (default: None) │
│ --product-id {None}|STR, --pid {None}|STR │
│ product_id of a specific USB device. (default: '') │
╰───────────────────────────────────────────────────────────────────────╯
root@machine:/scripts# python3 test.py --vid 1234
╭─ Unrecognized options ────────────────╮
│ Unrecognized options: --vid │
│ ───────────────────────────────────── │
│ For full helptext, run test.py --help │
╰───────────────────────────────────────╯
Metadata
Metadata
Assignees
Labels
No labels