ruff/crates/ruff_python_ast/src
Charlie Marsh bf2cc3f520
Add autotyping-like return type inference for annotation rules (#8643)
## Summary

This PR adds (unsafe) fixes to the flake8-annotations rules that enforce
missing return types, offering to automatically insert type annotations
for functions with literal return values. The logic is smart enough to
generate simplified unions (e.g., `float` instead of `int | float`) and
deal with implicit returns (`return` without a value).

Closes https://github.com/astral-sh/ruff/issues/1640 (though we could
open a separate issue for referring parameter types).

Closes https://github.com/astral-sh/ruff/issues/8213.

## Test Plan

`cargo test`
2023-11-13 23:34:15 -05:00
..
visitor Compare formatted and unformatted ASTs during formatter tests (#8624) 2023-11-13 17:43:27 +00:00
all.rs Split `Constant` to individual literal nodes (#8064) 2023-10-30 12:13:23 +05:30
call_path.rs Store call paths rather than stringified names (#6102) 2023-08-05 15:21:50 +00:00
comparable.rs Treat `class C: ...` and `class C(): ...` equivalently (#8659) 2023-11-13 18:03:04 +00:00
docstrings.rs Move Python whitespace utilities into new `ruff_python_whitespace` crate (#4993) 2023-06-10 00:59:57 +00:00
expression.rs Introduce `LiteralExpressionRef` for all literals (#8339) 2023-10-31 12:56:11 +00:00
hashable.rs Pull in RustPython parser (#6099) 2023-07-27 09:29:11 +00:00
helpers.rs Add autotyping-like return type inference for annotation rules (#8643) 2023-11-13 23:34:15 -05:00
identifier.rs Move `Ranged` into `ruff_text_size` (#6919) 2023-08-27 14:12:51 -04:00
imports.rs Include alias when formatting import-from structs (#5786) 2023-07-15 15:53:21 -04:00
int.rs Include radix base prefix in large number representation (#7700) 2023-09-28 20:38:06 +00:00
lib.rs Move {AnyNodeRef, AstNode} to ruff_python_ast crate root (#8030) 2023-10-18 00:01:18 +00:00
node.rs Split `Constant` to individual literal nodes (#8064) 2023-10-30 12:13:23 +05:30
nodes.rs [TRIO] Add TRIO109 rule (#8534) 2023-11-07 17:13:01 -05:00
parenthesize.rs Comments outside expression parentheses (#7873) 2023-10-19 09:24:11 +00:00
relocate.rs Use AST transformer for `relocate` (#8660) 2023-11-13 13:24:27 -05:00
statement_visitor.rs Remove `Stmt::TryStar` (#6566) 2023-08-14 13:39:44 -04:00
stmt_if.rs Move `Ranged` into `ruff_text_size` (#6919) 2023-08-27 14:12:51 -04:00
str.rs Replace dynamic implicit concatenation detection with parser flag (#6513) 2023-08-14 10:27:17 -04:00
traversal.rs [refurb] Implement `repeated-append` rule (`FURB113`) (#6702) 2023-08-28 22:51:59 +00:00
types.rs Remove `RefEquality` (#6393) 2023-08-07 16:04:50 +00:00
visitor.rs Compare formatted and unformatted ASTs during formatter tests (#8624) 2023-11-13 17:43:27 +00:00
whitespace.rs Move `Ranged` into `ruff_text_size` (#6919) 2023-08-27 14:12:51 -04:00