Repo steps:
touch ./mise-tasks/demo.py
chmod +x ./mise-tasks/demo.py
Create a simple hello world using typer 0.25.1 (last known good):
#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "typer==0.25.1",
# "usage-spec-typer==1.2.0",
# ]
# ///
from typing import Annotated
import typer
from rich import print
from typer_usage import generate
app = typer.Typer()
@app.command(name="my-bin", help="My help text")
def main(
name: Annotated[
str,
typer.Option(
help="The name to greet.",
),
] = "World",
):
print(generate(app))
if __name__ == "__main__":
app()
Usage spec renders as expected...
$ mise run demo
[demo] $ ~/src/demo/mise-tasks/demo.py
// @generated by usage-spec-typer from Typer metadata
name my-bin
bin my-bin
about "My help text"
flag --name help="The name to greet." default=World {
arg <NAME>
}
Now bump the typer version to 0.26.0. All the args and flags disappear:
$ mise run demo
[demo] $ ~/src/demo/mise-tasks/demo.py
// @generated by usage-spec-typer from Typer metadata
name my-bin
bin my-bin
about "My help text"
Looks like they now wrap click's Option and Argument classes, so these comparisons are no longer returning true π.
Repo steps:
Create a simple hello world using
typer0.25.1 (last known good):Usage spec renders as expected...
Now bump the
typerversion to 0.26.0. All the args and flags disappear:Looks like they now wrap click's
OptionandArgumentclasses, so these comparisons are no longer returning true π.