[red-knot] Handle pipe-errors gracefully#16354
Conversation
8aeb4f3 to
ff2f412
Compare
carljm
left a comment
There was a problem hiding this comment.
Thank you for fixing this!
I thought @JelleZijlstra mentioned in Discord that this is triggerable by piping the output from red-knot to |
|
That or |
|
Ah that makes sense, yeah I think Jelle ran into it running red-knot on a bigger project that would have triggered lots of diagnostic output. |
|
Let me try
That's why I wanted to get this fixed :) |
|
Yeah I can trigger the panic on |
I think I just did "q" to quit less, but that's effectively the same. |
I tried that but i was never successful at hitting Ctrl+C right when red knot was about to print a diagnostic. |
From my testing on macOS, no particular timing is necessary, just a large amount of output. It may be different on Linux? Output buffer sizes may differ. |
* main: (38 commits) [red-knot] Use arena-allocated association lists for narrowing constraints (#16306) [red-knot] Rewrite `Type::try_iterate()` to improve type inference and diagnostic messages (#16321) Add issue templates (#16213) Normalize inconsistent markdown headings in docstrings (#16364) [red-knot] Better diagnostics for method calls (#16362) [red-knot] Add argfile and windows glob path support (#16353) [red-knot] Handle pipe-errors gracefully (#16354) Rename `venv-path` to `python` (#16347) [red-knot] Fixup some formatting in `infer.rs` (#16348) [red-knot] Restrict visibility of more things in `class.rs` (#16346) [red-knot] Add diagnostic for class-object access to pure instance variables (#16036) Add `per-file-target-version` option (#16257) [PLW1507] Mark fix unsafe (#16343) [red-knot] Add a test to ensure that `KnownClass::try_from_file_and_name()` is kept up to date (#16326) Extract class and instance types (#16337) Re-order changelog entries for 0.9.7 (#16344) [red-knot] Add support for `@classmethod`s (#16305) Update Salsa (#16338) Update Salsa part 1 (#16340) Upgrade Rust toolchain to 1.85.0 (#16339) ...
Summary
This PR removes the use of
printlnfrom the Red Knot CLI in favor of usingwritelnwhich isn't prone to panicking when writing to a broken pipe.This PR also adds some code to exit without an error code if the root cause for erroring is a broken pipe (copied over from Ruff)
Fixes #15586
Test Plan
@carljm tested it