ruff/crates/red_knot
Andrew Gallant 718b0cadf4 ruff_db: switch diagnostic rendering over to std::fmt::Display
It was already using this approach internally, so this is "just" a
matter of rejiggering the public API of `Diagnostic`.

We were previously writing directly to a `std::io::Write` since it was
thought that this worked better with the linear typing fakery. Namely,
it increased confidence that the diagnostic rendering was actually
written somewhere useful, instead of just being converted to a string
that could potentially get lost.

For reasons discussed in #17130, the linear type fakery was removed.
And so there is less of a reason to require a `std::io::Write`
implementation for diagnostic rendering. Indeed, this would sometimes
result in `unwrap()` calls when one wants to convert to a `String`.
2025-04-02 11:01:16 -04:00
..
docs [red-knot] Add mypy_primer usage documentation (#16679) 2025-03-12 16:47:10 +01:00
src ruff_db: switch diagnostic rendering over to std::fmt::Display 2025-04-02 11:01:16 -04:00
tests red_knot: use Diagnostic inside of red knot 2025-04-02 10:10:01 -04:00
build.rs [red-knot] Add version command (#15823) 2025-02-02 18:56:51 +00:00
Cargo.toml [red-knot] Add argfile and windows glob path support (#16353) 2025-02-25 08:43:13 +01:00
README.md Add red_knot/README.md (#16230) 2025-02-18 23:31:02 -08:00

Red Knot

Red Knot is an extremely fast type checker. Currently, it is a work-in-progress and not ready for user testing.

Red Knot is designed to prioritize good type inference, even in unannotated code, and aims to avoid false positives.

While Red Knot will produce similar results to mypy and pyright on many codebases, 100% compatibility with these tools is a non-goal. On some codebases, Red Knot's design decisions lead to different outcomes than you would get from running one of these more established tools.

Contributing

Core type checking tests are written as Markdown code blocks. They can be found in red_knot_python_semantic/resources/mdtest. See red_knot_test/README.md for more information on the test framework itself.

The list of open issues can be found here.