Skip to content

usage-spec-typer does not work with typer >= 0.26.0Β #2

Description

@twelvelabs

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 😞.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions