-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[red-knot] Handle pipe-errors gracefully #16354
Conversation
8aeb4f3
to
ff2f412
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for fixing this!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
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
println
from the Red Knot CLI in favor of usingwriteln
which 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