Fix CLI output directory type - #182
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes a Typer CLI compatibility issue by changing the output_dir command parameter annotation from str | Path to str, avoiding Typer 0.15’s unsupported Union-typed parameters while keeping runtime behavior unchanged (the value is still converted via Path(output_dir)).
Changes:
- Update
output_dirCLI parameter type annotation fromstr | Pathtostrto prevent TyperAssertionErrorduring command construction (e.g.,preprocessor --help).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
MarcelRosier
left a comment
There was a problem hiding this comment.
Thanks for the fix! There's actually a better approach that avoids both the union-type issue and retains the semantic correctness of Path — Typer has native Path support via Click's Path param type.
Instead of reverting to str, you can annotate with Path directly:
output_dir: Annotated[
Path,
typer.Option(
"-o",
"--output_dir",
help="The path to the output directory",
exists=False, # output dir doesn't need to exist yet
file_okay=False, # must be a directory, not a file
dir_okay=True,
resolve_path=True,
),
],Typer/Click handles the str → Path conversion automatically (no union needed), so you can also remove the manual output_dir = Path(output_dir) on line 92.
This gives you the correct type annotation, Typer 0.15 compatibility, and optional path validation for free.
|
@Vbitz please adress @MarcelRosier's comment ;) |
|
Thanks for your review :) Pushed a fix. |
Summary
Restore the CLI-facing
output_dirannotation fromstr | Pathtostr. Typer 0.15 does not support union-typed command parameters and currently raisesAssertionError: Typer Currently doesn't support Union typeswhile constructing the command, including forpreprocessor --help.The function already converts the value with
output_dir = Path(output_dir), so runtime path handling is unchanged.Neurodesk confirmation
This investigation was started with OpenAI Codex CLI while debugging the NeuroContainers BrainLesion image, then confirmed by Neurodesk release CI:
Preprocessor CLI renders helpfulltest executes the installed console entry point.preprocessor --helpas the sole failure.preprocessor --help.Local validation
Tested from this branch under Python 3.10 with the project dependency set and Typer 0.15.4:
preprocessor --helppreprocessor --versionBoth commands exit successfully.