v0.20.8 - Fix typer.Exit handling across all example scripts (2026-06-05)¶
What Changed?¶
This release fixes a systematic bug where typer.Exit raised inside try blocks was being caught by except Exception, causing spurious "Unexpected error:" or "Error during analysis:" messages with no meaningful content.
The fix is applied to all affected example scripts: fit_thresholds.py, get_runs.py, get_thresholds.py, and plot_thresholds.py.
What's New¶
Fix: typer.Exit propagates correctly in all example scripts¶
What it does:
Adds except typer.Exit: raise as the first handler in each try/except block where raise typer.Exit(code=1) could be mistakenly caught.
Code example:
# Before (typer.Exit caught by except Exception)
try:
...
raise typer.Exit(code=1)
except Exception as e:
stderr.print(f"Unexpected error: {e}") # printed with empty message
raise typer.Exit(code=1)
# After (typer.Exit propagates correctly)
try:
...
raise typer.Exit(code=1)
except typer.Exit:
raise
except Exception as e:
stderr.print(f"Unexpected error: {e}")
raise typer.Exit(code=1)
Installation¶
Quick Start¶
# Get the release
git checkout v0.20.8
# Setup
task env:setup
# Run CLI
uv run kazunoko --help
What's Different from the Last Version?¶
🐛 Fixed¶
fit_thresholds.py:typer.Exitno longer caught byexcept Exceptionget_runs.py:typer.Exitno longer caught byexcept Exceptionget_thresholds.py:typer.Exitno longer caught byexcept Exceptionplot_thresholds.py:typer.Exitno longer caught byexcept Exception
Is It Safe to Upgrade?¶
Backward Compatible: Yes
- No behavior change for successful runs. Error messages are now accurate when validation fails early.
Tests Passed¶
- ✅ Builds without errors
- ✅ commitizen pre-commit hook passed
Release Details¶
- Date: 2026-06-05
- Version: v0.20.8
- Files Changed: 4
- Commits: 20b8135, 705d927
Next Steps¶
No planned changes at this time.