ruff/crates
Andrew Gallant 7d11ef1564 red_knot_python_semantic: make `TextRange` required for reporting a lint diagnostic
This commit shuffles the reporting API around a little bit such that a
range is required, up front, when reporting a lint diagnostic. This in
turn enables us to make suppression checking eager.

In order to avoid callers needing to provide the range twice, we create
a primary annotation *without* a message inside the `Diagnostic`
encapsulated by the guard. We do this instead of requiring the message
up front because we're concerned about API complexity and the effort
involved in creating the message.

In order to provide a means of attaching a message to the primary
annotation, we expose a convenience API on `LintDiagnosticGuard` for
setting the message. This isn't generally possible for a `Diagnostic`,
but since a `LintDiagnosticGuard` knows how the `Diagnostic` was
constructed, we can offer this API correctly.

It strikes me that it might be easy to forget to attach a primary
annotation message, btu I think this the "least" bad failure mode. And
in particular, it should be somewhat obvious that it's missing once one
adds a snapshot test for how the diagnostic renders.

Otherwise, this API gives us the ability to eagerly check whether a
diagnostic should be reported with nearly minimal information. It also
shouldn't have any footguns since it guarantees that the primary
annotation is tied to the file in the typing context. And it keeps
things pretty simple: callers only need to provide what is actually
strictly necessary to make a diagnostic.
2025-04-11 12:36:36 -04:00
..
red_knot ruff_db: tweak how the revealed type diagnostic is rendered 2025-04-10 13:21:00 -04:00
red_knot_ide [red-knot] Add inlay type hints (#17214) 2025-04-10 09:21:40 +00:00
red_knot_project [red-knot] Default `python-platform` to current platform (#17183) 2025-04-09 12:05:18 +02:00
red_knot_python_semantic red_knot_python_semantic: make `TextRange` required for reporting a lint diagnostic 2025-04-11 12:36:36 -04:00
red_knot_server [red-knot] Refresh diagnostics when changing related files (#17350) 2025-04-11 15:50:28 +02:00
red_knot_test red_knot_python_semantic: update revealed type snapshots 2025-04-10 13:21:00 -04:00
red_knot_vendored Use python.typing.org for typing documentation links (#17323) 2025-04-09 20:38:20 +02:00
red_knot_wasm [red-knot] Add inlay type hints (#17214) 2025-04-10 09:21:40 +00:00
ruff Bump 0.11.5 (#17337) 2025-04-10 11:57:44 -05:00
ruff_annotate_snippets ruff_annotate_snippets: address unused code warnings 2025-04-07 08:24:08 -04:00
ruff_benchmark red_knot: use `Diagnostic` inside of red knot 2025-04-02 10:10:01 -04:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db red_knot_python_semantic: make `TextRange` required for reporting a lint diagnostic 2025-04-11 12:36:36 -04:00
ruff_dev Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_diagnostics Show errors for attempted fixes only when passed `--verbose` (#15237) 2025-01-03 08:50:13 -06:00
ruff_formatter Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_graph Pass `ParserOptions` to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_index [red-knot] Don't use separate ID types for each alist (#16415) 2025-02-28 14:55:55 -05:00
ruff_linter [syntax-errors] `yield`, `yield from`, and `await` outside functions (#17298) 2025-04-11 10:16:23 -04:00
ruff_macros Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_notebook Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_ast Add `Checker::import_from_typing` (#17340) 2025-04-11 13:37:55 +00:00
ruff_python_ast_integration_tests Visit `Identifier` node as part of the `SourceOrderVisitor` (#17110) 2025-04-01 16:58:09 +02:00
ruff_python_codegen Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_formatter Don't add chaperone space after escaped quote in triple quote (#17216) 2025-04-11 10:21:47 +02:00
ruff_python_index Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_literal Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_parser [syntax-errors] `yield`, `yield from`, and `await` outside functions (#17298) 2025-04-11 10:16:23 -04:00
ruff_python_resolver Upgrade to Rust 1.86 and bump MSRV to 1.84 (#17171) 2025-04-03 15:59:44 +00:00
ruff_python_semantic Refactor semantic syntax error scope handling (#17314) 2025-04-09 14:23:29 -04:00
ruff_python_stdlib Revert "Add all PEP-585 names to UP006 rule" (#15250) 2025-01-04 12:23:53 +01:00
ruff_python_trivia [red-knot] Ignore surrounding whitespace when looking for `<!-- snapshot-diagnostics -->` directives in mdtests (#16380) 2025-02-27 13:25:31 +00:00
ruff_python_trivia_integration_tests Pass `ParserOptions` to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_server [red-knot] Don't use latency-sensitive for handlers (#17227) 2025-04-08 08:33:30 +02:00
ruff_source_file [`pyupgrade`] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (`UP009`) (#14728) 2024-12-11 10:30:41 +00:00
ruff_text_size [`ruff`] `itertools.starmap(..., zip(...))` (`RUF058`) (#15483) 2025-01-16 15:18:12 +01:00
ruff_wasm Bump 0.11.5 (#17337) 2025-04-10 11:57:44 -05:00
ruff_workspace Use python.typing.org for typing documentation links (#17323) 2025-04-09 20:38:20 +02:00