ruff/crates
cake-monotone c6efa93cf7
[red-knot] Handle special case returning `NotImplemented` (#17034)
## Summary

Closes #16661

This PR includes two changes:

- `NotImplementedType` is now a member of `KnownClass`
- We skip `is_assignable_to` checks for `NotImplemented` when checking
return types

### Limitation

```py
def f(cond: bool) -> int:
    return 1 if cond else NotImplemented
```

The implementation covers cases where `NotImplemented` appears inside a
`Union`.
However, for more complex types (ex. `Intersection`) it will not worked.
In my opinion, supporting such complexity is unnecessary at this point.

## Test Plan

Two `mdtest` files were updated:

- `mdtest/function/return_type.md`
- `mdtest/type_properties/is_singleton.md`

To test `KnownClass`, run:
```bash
cargo test -p red_knot_python_semantic -- types::class::
```
2025-03-30 11:06:12 -07:00
..
red_knot [red-knot] Use `web-time` instead of `FileTime::now` (#16967) 2025-03-25 13:03:30 +00:00
red_knot_project [red-knot] Discover local venv folder in cli (#16917) 2025-03-28 17:59:49 +00:00
red_knot_python_semantic [red-knot] Handle special case returning `NotImplemented` (#17034) 2025-03-30 11:06:12 -07:00
red_knot_server [red-knot] Incorporate recent ruff server improvements into red knot's LSP (#17044) 2025-03-28 18:39:18 +00:00
red_knot_test [red-knot] Add line number to mdtest panic message about language tag mismatch (#16906) 2025-03-22 13:05:31 +01:00
red_knot_vendored [red-knot] Allow `CallableTypeFromFunction` to display the signatures of callable types that are not function literals (#17047) 2025-03-28 20:23:04 +00:00
red_knot_wasm [red-knot] Don't check non-python files (#17021) 2025-03-27 19:45:04 +00:00
ruff Check `pyproject.toml` correctly when it is passed via stdin (#16971) 2025-03-27 16:01:45 +00:00
ruff_annotate_snippets Fixing various spelling errors (#16924) 2025-03-23 08:08:40 +00:00
ruff_benchmark [red-knot] Add initial support for `*` imports (#16923) 2025-03-24 17:15:58 +00:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db [red-knot] Use `web-time` instead of `FileTime::now` (#16967) 2025-03-25 13:03:30 +00:00
ruff_dev Pass `ParserOptions` to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_diagnostics Show errors for attempted fixes only when passed `--verbose` (#15237) 2025-01-03 08:50:13 -06:00
ruff_formatter Fixing more spelling errors (#16926) 2025-03-23 10:55:14 -07: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] Single starred assignment target (#17024) 2025-03-29 12:35:47 -04:00
ruff_macros Add knot.toml schema (#15735) 2025-02-07 10:59:40 +01:00
ruff_notebook bump MSRV to 1.83 (#16294) 2025-02-26 06:12:43 -08:00
ruff_python_ast Add `as_group` methods to `AnyNodeRef` (#17048) 2025-03-28 19:42:45 +00:00
ruff_python_ast_integration_tests Pass `ParserOptions` to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_python_codegen Pass `ParserOptions` to the parser (#16220) 2025-02-19 10:50:50 -05:00
ruff_python_formatter Rename `visit_preorder` to `visit_source_order` (#17046) 2025-03-28 19:40:26 +00: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] Single starred assignment target (#17024) 2025-03-29 12:35:47 -04:00
ruff_python_resolver bump MSRV to 1.83 (#16294) 2025-02-26 06:12:43 -08:00
ruff_python_semantic [syntax-errors] Start detecting compile-time syntax errors (#16106) 2025-03-21 14:45:25 -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 Server: Allow `FixAll` action in presence of version-specific syntax errors (#16848) 2025-03-20 05:09:14 -05: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.2 (#16896) 2025-03-21 09:17:07 -04:00
ruff_workspace Fallback to requires-python in certain cases when target-version is not found (#16721) 2025-03-14 09:36:51 +01:00