ruff/crates/ty_project/resources/test/corpus
Shunsuke Shibayama 0858896bc4
[ty] type narrowing by attribute/subscript assignments (#18041)
## Summary

This PR partially solves https://github.com/astral-sh/ty/issues/164
(derived from #17643).

Currently, the definitions we manage are limited to those for simple
name (symbol) targets, but we expand this to track definitions for
attribute and subscript targets as well.

This was originally planned as part of the work in #17643, but the
changes are significant, so I made it a separate PR.
After merging this PR, I will reflect this changes in #17643.

There is still some incomplete work remaining, but the basic features
have been implemented, so I am publishing it as a draft PR.
Here is the TODO list (there may be more to come):
* [x] Complete rewrite and refactoring of documentation (removing
`Symbol` and replacing it with `Place`)
* [x] More thorough testing
* [x] Consolidation of duplicated code (maybe we can consolidate the
handling related to name, attribute, and subscript)

This PR replaces the current `Symbol` API with the `Place` API, which is
a concept that includes attributes and subscripts (the term is borrowed
from Rust).

## Test Plan

`mdtest/narrow/assignment.md` is added.

---------

Co-authored-by: David Peter <sharkdp@users.noreply.github.com>
Co-authored-by: Carl Meyer <carl@astral.sh>
2025-06-04 17:24:27 -07:00
..
00_const.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
00_empty.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
00_expr_discard.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
00_expr_var1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
01_expr_unary.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_attr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_attr_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_attr_multiline_assign.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_bin_bool.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_binary.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_bool_op_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_bool_op_multiline2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_rel.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_rel_multiple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
02_expr_subscr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_dict.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_dict_ex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_dict_literal_large.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_dict_unpack_huge.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_list.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_list_ex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_list_large.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_set.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_set_multi.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_slice.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_slice_ext.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
03_tuple_ex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_attr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_attr_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_invalid_target.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_named_expr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_named_expr_invalid_target.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_subscr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_unpack.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_unpack_ex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_assign_unpack_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_aug_assign.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_aug_assign_attr_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_aug_assign_attr_sub.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
04_aug_assign_invalid_target.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_in_multiline_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_kw.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_kw_many.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_kw_pos.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
05_funcall_method_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_kwargs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_many_args.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_starargs_ex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_varargs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_varargs_kwargs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
06_funcall_varargs_kwargs_mixed.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
07_ifexpr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
07_ifexpr_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
07_ifexpr_multiline2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
08_del.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
08_del_multi.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
09_pass.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if_chained_compare.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if_false.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if_invalid.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if_true.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
10_if_with_named_expr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
11_if_else.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
11_if_else_deeply_nested_for.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
11_if_else_false.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
11_if_else_true.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
12_if_elif.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
12_if_elif_else.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
13_ifelse_complex1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
13_ifelse_many.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break_in_finally.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break_invalid_in_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break_invalid_in_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break_non_empty.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_break_non_exit.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_continue.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_false.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_infinite.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
15_while_true.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_break.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_break_invalid_in_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_break_invalid_in_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_continue.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_else.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_invalid.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_list_literal.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
16_for_nested_ifs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
20_lambda.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
20_lambda_const.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
20_lambda_default_arg.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
20_lambda_ifelse.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
21_func1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
21_func1_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
21_func_assign.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
21_func_assign2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
22_func_arg.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
22_func_vararg.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
23_func_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
23_func_ret_val.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
24_func_if_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
24_func_ifelse_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
24_func_ifnot_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
25_func_annotations.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
25_func_annotations_nested.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
25_func_annotations_same_name.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
25_func_annotations_scope.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
25_func_annotations_starred.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
26_func_const_defaults.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
26_func_defaults_same_name.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_bound.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_constraint.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_paramspec.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_paramspec_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
27_func_generic_tuple_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
30_func_enclosed.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
30_func_enclosed_many.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
31_func_global.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
31_func_global_annotated_later.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
31_func_nonlocal.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
32_func_global_nested.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
33_func_with_docstring_optimizable_tuple_and_return.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
40_import.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
41_from_import.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
42_import_from_dot.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
50_yield.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
51_gen_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
51_gen_comp2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
52_gen_comp_if.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
53_dict_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
53_list_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
53_list_comp_method.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
53_set_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
54_list_comp_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
54_list_comp_lambda.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
54_list_comp_lambda_listcomp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
54_list_comp_recur_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
55_list_comp_nested.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
56_yield_from.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
57_await.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_break.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_continue.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_dict_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_else.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_gen_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_list_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
58_async_for_set_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
59_async_with.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
59_async_with_nested_with.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_except.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_except2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_except_bare.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_finally.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_finally_codeobj.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_finally_cond.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_finally_for.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
60_try_finally_ret.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
61_try_except_finally.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
62_try_except_as.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
62_try_except_break.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
62_try_except_cond.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
62_try_except_double_nested_inside_if_else.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
62_try_except_return.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
63_raise.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
63_raise_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
63_raise_x.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
63_raise_x_from_y.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
64_assert.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_as.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_as_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_cond_return.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_inside_try_finally_multiple_terminal_elif.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_inside_try_finally_preceding_terminal_except.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_multi_exit.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_non_name_target.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
67_with_return.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
68_with2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
69_for_try_except_continue1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
69_for_try_except_continue2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
69_for_try_except_continue3.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
70_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
70_class_base.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
70_class_doc_str.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
71_class_meth.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
71_class_var.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
72_class_mix.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_bounds.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_constraints.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_defaults.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_paramspec.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_paramspec_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
73_class_generic_tuple_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
74_class_kwargs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
74_class_kwargs_2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
74_class_super.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
74_class_super_nested.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
74_just_super.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
75_classderef.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
75_classderef_no.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
76_class_nonlocal1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
76_class_nonlocal2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
76_class_nonlocal3.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
76_class_nonlocal4.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
76_class_nonlocal5.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__nested.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__no_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__nonlocals.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__nonlocals_2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__param.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
77_class__class__param_lambda.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
78_class_body_cond.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
78_class_dec.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
78_class_dec_member.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
78_class_dec_member_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
79_metaclass.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
80_func_kwonlyargs1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
80_func_kwonlyargs2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
80_func_kwonlyargs3.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
81_func_kwonlyargs_defaults.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
83_jupyter_notebook_ipython_magic.ipynb Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_as.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_attr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_default.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_guard.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_guard_with_named_expr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_in_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_in_func_with_rest.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_in_func_with_star.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_invalid.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_mapping.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_mapping_subpattern.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_or.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_sequence.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_sequence_wildcard.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
85_match_singleton.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
88_regression_generic_method_with_nested_function.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
88_regression_issue_17792.py [ty] Fix standalone expression type retrieval in presence of cycles (#17849) 2025-05-05 13:52:08 +02:00
88_regression_tuple_type_short_circuit.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
89_type_alias.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
89_type_alias_invalid_bound.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
90_docstring_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
90_docstring_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
90_docstring_mod.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers1.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers2.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers2_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers3.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers4.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers_dict.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
91_line_numbers_dict_comp.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
92_qual_class_in_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
92_qual_class_in_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
93_deadcode.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
94_strformat.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
94_strformat_complex.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
94_strformat_conv.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
94_strformat_conversion.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
94_strformat_spec.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_assign_subscript_no_rhs.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_assign_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_class.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_class_multiline.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_class_no_value.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_fstring_invalid.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_func.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_func_future.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_global.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_global_simple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_local_attr.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_module.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_string_tuple.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
95_annotation_union.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
96_debug.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
97_global_nonlocal_store.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
98_ann_assign_annotation_future_annotations.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
98_ann_assign_annotation_wrong_future.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
98_ann_assign_invalid_target.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
98_ann_assign_simple_annotation.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
99_empty_jump_target_insts.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
cycle_narrowing_constraints.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
cycle_negative_narrowing_constraints.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
except_handler_with_Any_bound_typevar.py [ty] Raise `invalid-exception-caught` even when exception is not captured (#18202) 2025-05-19 18:13:34 -04:00
self_referential_function_annotation.py Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
sub_exprs_not_found_in_evaluate_expr_compare.py [ty] type narrowing by attribute/subscript assignments (#18041) 2025-06-04 17:24:27 -07:00
ty_extensions.py [ty] Infer types for ty_extensions.Intersection[A, B] tuple expressions (#18321) 2025-05-26 17:08:52 +02:00