{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D38","name":"OSV Dependency Vulnerabilities","shortDescription":{"text":"OSV Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D38","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"expression::expression (cyclomatic 504): expression::expression has cyclomatic complexity 504 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/expression.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba23959449fc3a4466979f7838ebadc8526fa997a0b0fa6e2f16d60bc584ad2e"}},{"ruleId":"D1","level":"warning","message":{"text":"statement::statement (cyclomatic 414): statement::statement has cyclomatic complexity 414 (threshold 15). Of this number, 412 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/statement.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"074cdbebecfd4b73961bfd214286733bc4584c64c5fe3c8db4d83894b8df0d0b"}},{"ruleId":"D1","level":"warning","message":{"text":"Bindings::evaluate_known_cases (cyclomatic 214): Bindings::evaluate_known_cases has cyclomatic complexity 214 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bc9aacffa5ce06ed64dd95b532b34e2263af24222ea17825719eb20994de5e7"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRelationChecker::check_type_pair (cyclomatic 194): TypeRelationChecker::check_type_pair has cyclomatic complexity 194 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"e437314404608a0882df7c699fb05fb24f8953b1f4d8ec60f00c679f46430ce4"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRelationChecker::check_signature_pair_inner (cyclomatic 180): TypeRelationChecker::check_signature_pair_inner has cyclomatic complexity 180 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":2175}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda0d0f4faaab9910f5c4b654bd43c6b2a52dca7b1fedad50ff0ab0b4d810055"}},{"ruleId":"D1","level":"warning","message":{"text":"static_class::check_static_class_definitions (cyclomatic 154): static_class::check_static_class_definitions has cyclomatic complexity 154 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3a5de10f98f7e4b8779e4f7e952479164fbd3039cd528329949004ca9927f8"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticIndexBuilder::visit_stmt_impl (cyclomatic 147): SemanticIndexBuilder::visit_stmt_impl has cyclomatic complexity 147 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":2953}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd440958ec3561540174499b55eaafaab3e941c4ada19f5e5ff56906819f7c46"}},{"ruleId":"D1","level":"warning","message":{"text":"Checker::visit_expr (cyclomatic 114): Checker::visit_expr has cyclomatic complexity 114 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":1672}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d0edbae2542f97fb05be439832bf9ec27747a771cb77ffab708155830527af2"}},{"ruleId":"D1","level":"warning","message":{"text":"moved_to_provider_in_3::check_names_moved_to_provider (cyclomatic 111): moved_to_provider_in_3::check_names_moved_to_provider has cyclomatic complexity 111 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"40cb3db4c372ff33ad8908b7e2d39a7bde4fa018beffe75b6bd2a7790187eafa"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_type_expression_no_store (cyclomatic 111): TypeInferenceBuilder::infer_type_expression_no_store has cyclomatic complexity 111 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a5ba877455edbc1a3dbaa274bd50c1e5828cd446dab783d2c816da2f0b4c57"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_parameterized_special_form_type_expression (cyclomatic 105): TypeInferenceBuilder::infer_parameterized_special_form_type_expression has cyclomatic complexity 105 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1981}}}],"partialFingerprints":{"codehealthFindingId/v1":"0217f5e7be7448cc334d3135496d1965cad40d4749c8742f71ebdcd8d24f3c49"}},{"ruleId":"D1","level":"warning","message":{"text":"DisjointnessChecker::check_type_pair (cyclomatic 105): DisjointnessChecker::check_type_pair has cyclomatic complexity 105 (threshold 15). Of this number, 104 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":2695}}}],"partialFingerprints":{"codehealthFindingId/v1":"388027f9eefd69c975c1f7f365907ceed60c809b7d57cfab4b99bfc97a63a187"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_call_expression_impl (cyclomatic 97): TypeInferenceBuilder::infer_call_expression_impl has cyclomatic complexity 97 (threshold 15). Of this number, 93 points are the body\u0027s own statements and 4 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":8419}}}],"partialFingerprints":{"codehealthFindingId/v1":"176c883a5483ace70caf2671585c2e19eec94dd2c818322e58c5fa537dee62d3"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::member_lookup_with_policy_and_receiver::member_lookup_with_policy_impl (cyclomatic 96): Type::member_lookup_with_policy_and_receiver::member_lookup_with_policy_impl has cyclomatic complexity 96 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":3790}}}],"partialFingerprints":{"codehealthFindingId/v1":"c683ad19b28b896fcaec15c273e4fa1739bae8a8006e25290e9075f3b59a5e00"}},{"ruleId":"D1","level":"warning","message":{"text":"Checker::visit_stmt (cyclomatic 90): Checker::visit_stmt has cyclomatic complexity 90 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8a2aff7c44242230f99647374b84dd05dcb66716bce4c1b699e5e6163f1f20"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayRepresentation::fmt_detailed (cyclomatic 89): DisplayRepresentation::fmt_detailed has cyclomatic complexity 89 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9b5e30ba2b1bc4c07d74185e7e199e35779f2c72e9770da9bad1364eb2e7b1"}},{"ruleId":"D1","level":"warning","message":{"text":"SpecializationBuilder::infer_map_impl (cyclomatic 82): SpecializationBuilder::infer_map_impl has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":2833}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1c11ddb2dc3be692e493fc27aaf3fa3a3475792469f80542367299a7763757"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportStatement::detect (cyclomatic 77): ImportStatement::detect has cyclomatic complexity 77 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":2502}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62283c7a5f174e06198bdd69ddc9d65ac494bc69b03d4b338b9ffdc38cfddcc"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_binary_expression_type_impl (cyclomatic 75): TypeInferenceBuilder::infer_binary_expression_type_impl has cyclomatic complexity 75 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/binary_expressions.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"37677753531773f07e9075ae9ea530bf0a473f4aff2ed96319abfc1ee57b711c"}},{"ruleId":"D1","level":"warning","message":{"text":"overrides::check_class_declaration (cyclomatic 74): overrides::check_class_declaration has cyclomatic complexity 74 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/overrides.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44fa6cb3237ad668ef462dedb2645c3d3fef8c0679b9188c992627970135dec"}},{"ruleId":"D1","level":"warning","message":{"text":"render::render_source_line (cyclomatic 72): render::render_source_line has cyclomatic complexity 72 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"830bbab0e821ddd0f926937e0a22368ad9e3cf265837519358b02e43aa124ad9"}},{"ruleId":"D1","level":"warning","message":{"text":"removal_in_3::check_name (cyclomatic 72): removal_in_3::check_name has cyclomatic complexity 72 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"80bb8ccb429222a4892c35708bb8a8c0e46ead36ddfd960bb56029f8e1b24253"}},{"ruleId":"D1","level":"warning","message":{"text":"UnionBuilder::add_in_place_impl (cyclomatic 72): UnionBuilder::add_in_place_impl has cyclomatic complexity 72 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c28e874f58c0c697362a60b18da73479a5058a8f567e9a8678e0314ab5d0fa3"}},{"ruleId":"D1","level":"warning","message":{"text":"comparisons::infer_binary_type_comparison_inner (cyclomatic 72): comparisons::infer_binary_type_comparison_inner has cyclomatic complexity 72 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/comparisons.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ecffb93b90a7b0b63b8a095010c85f584a1aa50e7c31ee7c5e96d703c9db64"}},{"ruleId":"D1","level":"warning","message":{"text":"GotoTarget::from_covering_node (cyclomatic 71): GotoTarget::from_covering_node has cyclomatic complexity 71 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/goto.rs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d7589c67810b79751969f1c94b348fbd679022a63200caaf287950c494c6a2"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::own_synthesized_member (cyclomatic 71): StaticClassLiteral::own_synthesized_member has cyclomatic complexity 71 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"93a833dad03638a23c6f17ebad31c669417d96c795d4714432352ba21d33efe1"}},{"ruleId":"D1","level":"warning","message":{"text":"Lexer::consume_ascii_character (cyclomatic 70): Lexer::consume_ascii_character has cyclomatic complexity 70 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"3246f43d0e9ff3ed7216fb56b05b24a8fb55d3b90a9b377329de488a075f8302"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_explicit_callable_specialization_impl (cyclomatic 69): TypeInferenceBuilder::infer_explicit_callable_specialization_impl has cyclomatic complexity 69 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7a2deb7b1d3f9dc30a585550e74f633833e8c3c51cdbfec2d8b8a4632ce4ef"}},{"ruleId":"D1","level":"warning","message":{"text":"definition::definition (cyclomatic 68): definition::definition has cyclomatic complexity 68 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"83554231377fe0b13d62a2633fa2fda76b62df64334608c380ff573c321885cf"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subscript_type_expression (cyclomatic 67): TypeInferenceBuilder::infer_subscript_type_expression has cyclomatic complexity 67 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1472}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6905c055a655053bf52bae967de960f45c85d9f7c0a5592024680bd9cb6c28e"}},{"ruleId":"D1","level":"warning","message":{"text":"BindingError::report_diagnostic (cyclomatic 66): BindingError::report_diagnostic has cyclomatic complexity 66 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":7885}}}],"partialFingerprints":{"codehealthFindingId/v1":"c51f0898607b6127007a7cb28f5061118e8b6881cea30f1e2f72de94f4ae0c21"}},{"ruleId":"D1","level":"warning","message":{"text":"BoundSuperType::build (cyclomatic 64): BoundSuperType::build has cyclomatic complexity 64 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bound_super.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c17c7492f3228abc7a59abb205cbcd1ea56f664e4d7a3285223d0c78f35517"}},{"ruleId":"D1","level":"warning","message":{"text":"NarrowingConstraintsBuilder::evaluate_expr_compare (cyclomatic 64): NarrowingConstraintsBuilder::evaluate_expr_compare has cyclomatic complexity 64 (threshold 15). Of this number, 54 points are the body\u0027s own statements and 10 belong to 2 function items declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":3152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6b94a72dce668cf21e0fab1435092a357b16455adf9b0683c51eab9db38c508"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_namedtuple_call_expression (cyclomatic 62): TypeInferenceBuilder::infer_namedtuple_call_expression has cyclomatic complexity 62 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/named_tuple.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b059cd796f39566ded3fe23f2c5bca5e5195b1751df503c697bcfb847352921c"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolvedPythonType::from (cyclomatic 61): ResolvedPythonType::from has cyclomatic complexity 61 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/type_inference.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff024eac1842607a01ca7bf3cbbe7882a2e8c519d27784af145911a7a759c678"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::subscript (cyclomatic 61): Type::subscript has cyclomatic complexity 61 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/subscript.rs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcfb3fa0da060d5773753ae2429976aefa3de5d0422f8db519b52ff0e2bdf0f"}},{"ruleId":"D1","level":"warning","message":{"text":"KnownFunction::check_call (cyclomatic 59): KnownFunction::check_call has cyclomatic complexity 59 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":2380}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd84e6b4bf21a7d56b667fedfa150bbde90d2634de06ac41f33eca8b7cf05766"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotated_assignment_definition (cyclomatic 58): TypeInferenceBuilder::infer_annotated_assignment_definition has cyclomatic complexity 58 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":4138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb3be827e37624d2f84834fb3e6dc2205c67c423c619b2376b0b198e696b2d2"}},{"ruleId":"D1","level":"warning","message":{"text":"Generator::unparse_expr (cyclomatic 57): Generator::unparse_expr has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"53623f767935697d227dae86922f19754777f61b1b0ee8205da10cb918e61850"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleTokenizer::next_token_inner (cyclomatic 57): SimpleTokenizer::next_token_inner has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/tokenizer.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"abcb3abdf5b829e144b5b435a25fc115591c763790b318997242e349b5017ac5"}},{"ruleId":"D1","level":"warning","message":{"text":"placement::handle_enclosed_comment (cyclomatic 56): placement::handle_enclosed_comment has cyclomatic complexity 56 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"8308bc4c28a7d50eab06440244bac0ef20496113cfb1e2b2adf043d74abce125"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::try_bool_impl (cyclomatic 54): Type::try_bool_impl has cyclomatic complexity 54 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bool.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c45291eedd7d5a4d21fe3ca4ea339525fd9d98c827c2064ff06f1ba9266866f"}},{"ruleId":"D1","level":"warning","message":{"text":"transformer::walk_expr (cyclomatic 53): transformer::walk_expr has cyclomatic complexity 53 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/transformer.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6225490ce8654adf42df19b80a360259ec482c73f1a6d1459784e82870060a1"}},{"ruleId":"D1","level":"warning","message":{"text":"visitor::walk_expr (cyclomatic 53): visitor::walk_expr has cyclomatic complexity 53 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e1588499bfb35868ed9f9978bc12f8c9346655927a7493993eb984c4445e3e5"}},{"ruleId":"D1","level":"warning","message":{"text":"suspicious_imports::suspicious_imports (cyclomatic 52): suspicious_imports::suspicious_imports has cyclomatic complexity 52 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/suspicious_imports.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"1683439570cc0a4940e56e7a860b7df182656828fb0759920d91e9acc6cba04f"}},{"ruleId":"D1","level":"warning","message":{"text":"LintConfiguration::as_rule_table (cyclomatic 52): LintConfiguration::as_rule_table has cyclomatic complexity 52 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/configuration.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"f552b9a2a9401987dab2e9b22f5e14a29550b16b311e4d548a05d013d7d16e23"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRelationChecker::check_typeddict_pair (cyclomatic 51): TypeRelationChecker::check_typeddict_pair has cyclomatic complexity 51 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4d6c76b5d19b2ab0828c753159d358eaaf0cdaff8b70350e830b59f4d02f79"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_element (cyclomatic 50): Printer::print_element has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4f83eb7859bedfdac4a2c7455bbb2b245d3741ca2d388d930efab6b67f5b911"}},{"ruleId":"D1","level":"warning","message":{"text":"deferred_scopes::deferred_scopes (cyclomatic 50): deferred_scopes::deferred_scopes has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/deferred_scopes.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a6e9986823895b46bc3b4553384fa5eeedb6496f60be0e1ff606b75ab6a2c8"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::apply_type_mapping_impl (cyclomatic 50): Type::apply_type_mapping_impl has cyclomatic complexity 50 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6507}}}],"partialFingerprints":{"codehealthFindingId/v1":"25370e3f4f1a237b0fac7f590a910dccfe68a9f3bf939e868401692ac94021f2"}},{"ruleId":"D1","level":"warning","message":{"text":"FitsMeasurer::fits_element (cyclomatic 49): FitsMeasurer::fits_element has cyclomatic complexity 49 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5827eac04a37b15468913315c84782037c3650d888b4f4754200b071661cc9"}},{"ruleId":"D1","level":"warning","message":{"text":"suspicious_function_call::suspicious_function (cyclomatic 49): suspicious_function_call::suspicious_function has cyclomatic complexity 49 (threshold 15). Of this number, 40 points are the body\u0027s own statements and 9 belong to 4 function items declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/suspicious_function_call.rs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19f45632c4a969e7164f9074ba471ef88f35cae8aea24b6598b389345fdcf14"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatSuite::fmt (cyclomatic 49): FormatSuite::fmt has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/suite.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4df46006f8b92d0d0efcecfdef837379c9dda2d72ed2e366e9454d49eedbbe"}},{"ruleId":"D1","level":"warning","message":{"text":"Lexer::lex_identifier (cyclomatic 49): Lexer::lex_identifier has cyclomatic complexity 49 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4b088efd5614cd9b71b0d3ec0e106e54cf5969a631f4de75aad97cb475b2fd"}},{"ruleId":"D1","level":"warning","message":{"text":"ProjectDatabase::apply_changes (cyclomatic 49): ProjectDatabase::apply_changes has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/db/changes.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"34be55d200070ebf871d85548e4fdcf380a714b8cc29cf34c57460b6ecad1378"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticIndexBuilder::visit_expr (cyclomatic 49): SemanticIndexBuilder::visit_expr has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":4597}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e51ed1a5aa2f63f79ea2126edb87d2416b870b007c6e77f7f958e46e38cdca"}},{"ruleId":"D1","level":"warning","message":{"text":"configuration::warn_about_deprecated_top_level_lint_options (cyclomatic 47): configuration::warn_about_deprecated_top_level_lint_options has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/configuration.rs"},"region":{"startLine":1479}}}],"partialFingerprints":{"codehealthFindingId/v1":"414c21c820399392456d5d29fb87174aa52354e3a75f839e0dea9fdcef1ac7d9"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_collection_literal_impl (cyclomatic 47): TypeInferenceBuilder::infer_collection_literal_impl has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6967}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac2361a39c0811c374f9ab02c960ca3b2feb66743930003d42a2ccf28034905a"}},{"ruleId":"D1","level":"warning","message":{"text":"noqa::check_noqa (cyclomatic 46): noqa::check_noqa has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/noqa.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f3898e841e2bfb24189426a2b36eddde610a1e5fe502ad764454c5f3844f7c"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::validate_subscript_assignment_impl (cyclomatic 46): TypeInferenceBuilder::validate_subscript_assignment_impl has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":1630}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ed68b22a7f435659c66070d82bc5df742cec6791d0dea3aa7e41077fd7bcf1"}},{"ruleId":"D1","level":"warning","message":{"text":"InnerIntersectionBuilder::add_positive (cyclomatic 46): InnerIntersectionBuilder::add_positive has cyclomatic complexity 46 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":1452}}}],"partialFingerprints":{"codehealthFindingId/v1":"e598e63992bf6d7ae6961d44fced876051361d81bc4b6b37486ab336e1563c76"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticSyntaxError::fmt (cyclomatic 44): SemanticSyntaxError::fmt has cyclomatic complexity 44 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc88c888f59900444169615c1e464210230454a05d499a70aff392c2f97f4e6"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::bindings (cyclomatic 44): Type::bindings has cyclomatic complexity 44 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":4551}}}],"partialFingerprints":{"codehealthFindingId/v1":"f061063c618bf503a9f43b161ebf51980097aaa535befb3d5e396346d641bb66"}},{"ruleId":"D1","level":"warning","message":{"text":"helpers::any_over_stmt::inner (cyclomatic 43): helpers::any_over_stmt::inner has cyclomatic complexity 43 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e95a881a42af3cd76866fff2ff137f96c5c19e26092324b5beab06b0190acec"}},{"ruleId":"D1","level":"warning","message":{"text":"visitor::walk_stmt (cyclomatic 43): visitor::walk_stmt has cyclomatic complexity 43 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"c126313a301926f9b9e88a2cb25df32f27f9cf8c48a9596b1574135c6246277b"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticTokenVisitor::visit_stmt (cyclomatic 43): SemanticTokenVisitor::visit_stmt has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8edf7f49489784f655a8b89830e073124b7ede7d2f9c5f573e124f89ad7fbc"}},{"ruleId":"D1","level":"warning","message":{"text":"AllMembers::extend_with_type (cyclomatic 43): AllMembers::extend_with_type has cyclomatic complexity 43 (threshold 15). Of this number, 41 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/list_members.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fcb1f1d87f06d4f7b6c86a273c45da119c6f0294271d32cbaa6410947b459d3"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::in_type_expression (cyclomatic 43): Type::in_type_expression has cyclomatic complexity 43 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6041}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c01a6804439032330a28809cc45ff843c10141164e025fb1686e52d53fbd7a"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportReplacer::without_renames (cyclomatic 42): ImportReplacer::without_renames has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_import.rs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56d820f26122455ec1bf1285282e4fdf369c77c1ae5f0bb2976d561684e32f6"}},{"ruleId":"D1","level":"warning","message":{"text":"check_docstring::check_docstring (cyclomatic 42): check_docstring::check_docstring has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":1230}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0853b14dad2e979977d5f0fce13d3bb23f5afb580ffc3f6ce76ef83b14d286"}},{"ruleId":"D1","level":"warning","message":{"text":"transformer::walk_stmt (cyclomatic 42): transformer::walk_stmt has cyclomatic complexity 42 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/transformer.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49467dc182a94878210e62929d52fe946eebbfcedda9508f7c3c8019821ded2"}},{"ruleId":"D1","level":"warning","message":{"text":"render::render_snippet_annotations (cyclomatic 41): render::render_snippet_annotations has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a239e3ccfb4f6bfeb289112daa31cc5419e1375427a8639b03f4f76a96f812"}},{"ruleId":"D1","level":"warning","message":{"text":"SequentMap::add_nested_typevar_sequents (cyclomatic 41): SequentMap::add_nested_typevar_sequents has cyclomatic complexity 41 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":5720}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a692dc9652d9fcf981425d77d18421e7fbd20df06c820cd52aa27b5923f0f0"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typeddict_call_expression (cyclomatic 41): TypeInferenceBuilder::infer_typeddict_call_expression has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typed_dict.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e9b0c5cd243f05f2db285c378cdd9fdd49194562062be39d103d4b175587d1"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::implicit_attribute_inner (cyclomatic 40): StaticClassLiteral::implicit_attribute_inner has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f70133ac5d98198da613ad302dfcb078d2bcbc54c59f3beb4ed423a728c6cdd"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_function_definition (cyclomatic 40): TypeInferenceBuilder::infer_function_definition has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"2429110e825305975546de7926fd4c0626c2181dd0386914ba2dbf669f6688ab"}},{"ruleId":"D1","level":"warning","message":{"text":"ruff::check (cyclomatic 39): ruff::check has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/lib.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7441e6a990b6a71aac6ad4b9ba12f60e4940ba6ef6972a0cd5b41cbcd09a66"}},{"ruleId":"D1","level":"warning","message":{"text":"hardcoded_sql_expression::is_explicit_concatenation (cyclomatic 39): hardcoded_sql_expression::is_explicit_concatenation has cyclomatic complexity 39 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba3dcb6b98a37d7e3747f3b52445159b616d95bcf855afb5536045d8b2c9f9d"}},{"ruleId":"D1","level":"warning","message":{"text":"runtime_value_in_dag_or_task::find_runtime_varying_call (cyclomatic 39): runtime_value_in_dag_or_task::find_runtime_varying_call has cyclomatic complexity 39 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/runtime_value_in_dag_or_task.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"06fb2ffa49bbe9a0662722b985bf05369ce3289a680c5ca1af021b50e2843330"}},{"ruleId":"D1","level":"warning","message":{"text":"Generator::unparse_stmt (cyclomatic 39): Generator::unparse_stmt has cyclomatic complexity 39 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ad6ad135c83deaa0bfe319437f54b11c165d1a4ac549126e0cd9e743fbc730"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatExpr::fmt (cyclomatic 39): FormatExpr::fmt has cyclomatic complexity 39 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"6efb4b169dba3b8de9f81354d445886358d6a2d7477dbd7f76d4b6aaf07aba79"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticSyntaxChecker::check_stmt (cyclomatic 38): SemanticSyntaxChecker::check_stmt has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f2ddd3363d2e5325e083dc59bd89eb0df52fc86ff49c14ebc3c3bc975c57b1"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::try_upcast_to_callable_with_policy_and_context (cyclomatic 38): Type::try_upcast_to_callable_with_policy_and_context has cyclomatic complexity 38 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/callable.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f03ab9f6e62ccb05c0ec5c8652195a13bf170c5a23f624316df21ba4a673ec"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::find_legacy_typevars_impl (cyclomatic 38): Type::find_legacy_typevars_impl has cyclomatic complexity 38 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6858}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7e37546aa9dcbeca06eb78db4635d5c85e27007f96e5caf6c71320ae0f829a"}},{"ruleId":"D1","level":"warning","message":{"text":"definitions::definitions (cyclomatic 37): definitions::definitions has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/definitions.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b438a1bc828f6bfa94196635d0f9b8ce08ed0e4847e5aed16cce04cf1449d063"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subscript_load_impl (cyclomatic 37): TypeInferenceBuilder::infer_subscript_load_impl has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e376354bf74abd5fab30017a933bfaac786f3fad29d76c2807a5dd3170ba7141"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_attribute_load_impl (cyclomatic 37): TypeInferenceBuilder::infer_attribute_load_impl has cyclomatic complexity 37 (threshold 15). Of this number, 34 points are the body\u0027s own statements and 3 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":10011}}}],"partialFingerprints":{"codehealthFindingId/v1":"1adc2b48e5867091d273345925558c5478119a40f021b9150aea585465895859"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotation_expression_impl (cyclomatic 36): TypeInferenceBuilder::infer_annotation_expression_impl has cyclomatic complexity 36 (threshold 15). Of this number, 28 points are the body\u0027s own statements and 8 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/annotation_expression.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"55e4a425ba62ab23b09b3c53ee2bab1d87ca7628f540fb5e08335b870da73313"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_class_definition (cyclomatic 36): TypeInferenceBuilder::infer_class_definition has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/class.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"88bfc09aa7f7325470641f1dd1877c01cae0b0640910316ef48274eebec06d02"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::validate_attribute_deletion (cyclomatic 36): TypeInferenceBuilder::validate_attribute_deletion has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2813}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87b09e5f937d7d6e45fcdccd6f306afc4f6d75e3d25cd66343c6e63c5a30d39"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorContext::render (cyclomatic 36): ErrorContext::render has cyclomatic complexity 36 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation_error.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"45647a90f97b05d6fbfd7873138e803f3079a8783daf4a039cce3973e30b02a0"}},{"ruleId":"D1","level":"warning","message":{"text":"overloaded_function::check_overloaded_function (cyclomatic 36): overloaded_function::check_overloaded_function has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/overloaded_function.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"614045de11bed0a7bbfae9514b9504bf9fa4b9f2e8e8e3b20b950ef75c35eee0"}},{"ruleId":"D1","level":"warning","message":{"text":"extraneous_whitespace::extraneous_whitespace (cyclomatic 35): extraneous_whitespace::extraneous_whitespace has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"2889e6e405e8e3c1e35714c5ee7a38218022196225bc7863fe4adb443763403c"}},{"ruleId":"D1","level":"warning","message":{"text":"Truthiness::from_expr (cyclomatic 35): Truthiness::from_expr has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed64f477cd2380b743e30c58724362de8e917e753293c6976d7a1a188c949052"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassBase::try_from_type (cyclomatic 35): ClassBase::try_from_type has cyclomatic complexity 35 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class_base.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"205aebc95488effecd4c89d8464c8fb0c1185c1e25dde7515e3b25a88f417f4f"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_typevar (cyclomatic 35): TypeInferenceBuilder::infer_legacy_typevar has cyclomatic complexity 35 (threshold 15). Of this number, 34 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2bbc09802f1fe83ebbea26538e81b44c12fcab25cbcb7949b59e749305f02c0"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_place_load (cyclomatic 35): TypeInferenceBuilder::infer_place_load has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":9583}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dcd6640c2959e21cb0456fcdf38f1208aaad18e9d4f635ea14cf21a2cdfc07a"}},{"ruleId":"D1","level":"warning","message":{"text":"equality::evaluate_structural_comparison (cyclomatic 35): equality::evaluate_structural_comparison has cyclomatic complexity 35 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f52795526812e8466596fb4dfb51185a03e6f5d99f5298f0e747ecd947155d"}},{"ruleId":"D1","level":"warning","message":{"text":"pydantic::lax_input_type_impl (cyclomatic 35): pydantic::lax_input_type_impl has cyclomatic complexity 35 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/dedicated/pydantic.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5327fcd38bca0b6088cfc86292355f3e81586ccd473824bd317d3a260d3ca20"}},{"ruleId":"D1","level":"warning","message":{"text":"linter::check_path (cyclomatic 34): linter::check_path has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/linter.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"486ce39671f2f801d0256dae3ab76a942e48727b0b27dbb3023aaa24707f11b7"}},{"ruleId":"D1","level":"warning","message":{"text":"IterationError::report_diagnostic (cyclomatic 34): IterationError::report_diagnostic has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf0fe8d43b71e5440f4c5306a65945ee5b31228a04bdc82b88f4c2d1ad7300d1"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatStatementsLastExpression::fmt (cyclomatic 33): FormatStatementsLastExpression::fmt has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/stmt_assign.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f52e5e836cb0451e9346ff0fe88d64aac4abd025912227a0a4f56dd663e0042"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse_parameters (cyclomatic 33): Parser::parse_parameters has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":3310}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c1c634af7c244921db86fe56aea309dd063d95c4b5a41fe8768063ef760e01"}},{"ruleId":"D1","level":"warning","message":{"text":"DunderAllNamesCollector::visit_stmt (cyclomatic 33): DunderAllNamesCollector::visit_stmt has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/dunder_all.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"3be8fc6931c347046c67ebfbe94a2d2cc90d2850aa01741a1b7877bd6036ff99"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::validate_typevar_default (cyclomatic 33): TypeInferenceBuilder::validate_typevar_default has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e154883da1fa5f7f6a1fd295489396e29cb924b5dff1795cdea1d96163fc8f87"}},{"ruleId":"D1","level":"warning","message":{"text":"InnerIntersectionBuilder::add_negative (cyclomatic 33): InnerIntersectionBuilder::add_negative has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d9f15dbc2bc89685326a046eb96cbf2fba4f38fa626a47254142d1295e3ab8"}},{"ruleId":"D1","level":"warning","message":{"text":"helpers::any_over_expr::inner (cyclomatic 32): helpers::any_over_expr::inner has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0246d1bea43197fee168c883b2579f676d71bbc27c06a7e63ff330a142acdf9"}},{"ruleId":"D1","level":"warning","message":{"text":"RecoveryContext::from_kind (cyclomatic 32): RecoveryContext::from_kind has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"89254086f890e41469aa424b845e9b069d0d614197f2058c3c80f965a01d73cc"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolVisitor::visit_stmt (cyclomatic 32): SymbolVisitor::visit_stmt has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/symbols.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ed3f402808e72136763e921e3e8de64ac9334f9ed0edc7e792f4e890f9c618b"}},{"ruleId":"D1","level":"warning","message":{"text":"CallableBinding::check_types (cyclomatic 32): CallableBinding::check_types has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":3439}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39173757b64caf8d1a669478be433828fbdaa34f7929bc9d091b7b52bdd4fee"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayKnownInstanceRepr::fmt_detailed (cyclomatic 32): DisplayKnownInstanceRepr::fmt_detailed has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":3253}}}],"partialFingerprints":{"codehealthFindingId/v1":"2092248d3e18f614c6bfd4a7642859c7b5878df0edeb90614aba8ac45fe5664d"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_typevartuple (cyclomatic 32): TypeInferenceBuilder::infer_legacy_typevartuple has cyclomatic complexity 32 (threshold 15). Of this number, 31 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"73b3d03f524307d2c112e38f84646b4d6b2f705117d3d2c3bc4bec6abc63e497"}},{"ruleId":"D1","level":"warning","message":{"text":"enums::enum_metadata (cyclomatic 32): enums::enum_metadata has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/enums.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d11781d923bd1c407f7e9df9073eb6b0b57894754bdf7cfda7812fde2570190"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse_impl (cyclomatic 31): Parser::parse_impl has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/parser.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f843de79d99499889183bc4a5a2432a956ddb36e0401ab09032adf38d81957"}},{"ruleId":"D1","level":"warning","message":{"text":"compound_statements::compound_statements (cyclomatic 31): compound_statements::compound_statements has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/compound_statements.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d00e11a145cbf99acd2407ae7225c25df2333926dd2c32d9c420e48bd096bf7"}},{"ruleId":"D1","level":"warning","message":{"text":"redefined_while_unused::redefined_while_unused (cyclomatic 31): redefined_while_unused::redefined_while_unused has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/redefined_while_unused.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"09107f39dabd87e9bb4e9963bc8dd3c1292468e9fdbec30844948caf70b9c2f5"}},{"ruleId":"D1","level":"warning","message":{"text":"non_slot_assignment::is_attributes_not_in_slots (cyclomatic 31): non_slot_assignment::is_attributes_not_in_slots has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf388dff02391172661780cb36454400a5f1922a64ab5cca205add03e6f4d1b"}},{"ruleId":"D1","level":"warning","message":{"text":"outdated_version_block::outdated_version_block (cyclomatic 31): outdated_version_block::outdated_version_block has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f192c024c8710f4f5a71ba6fef4947313241bc735f1be1241002d1d8c8faa4"}},{"ruleId":"D1","level":"warning","message":{"text":"normalize::normalize_imports (cyclomatic 31): normalize::normalize_imports has cyclomatic complexity 31 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/normalize.rs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"596da25d417e5e65bd4bd5fb9bc8eed552e600c361ecfcbbe6368912f8b5daeb"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassInfoConstraintFunction::generate_constraint (cyclomatic 31): ClassInfoConstraintFunction::generate_constraint has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d09686f29137b1098c9d58513db960300dfaca93239405fadb9103fa9c43670"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRelationChecker::check_variable_length_vs_tuple_spec (cyclomatic 31): TypeRelationChecker::check_variable_length_vs_tuple_spec has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c50e98ad42f5a0fa1664758cb8731cd9917decda748c23a988c759d3d374ff"}},{"ruleId":"D1","level":"warning","message":{"text":"BlockBuilder::visit_stmt (cyclomatic 30): BlockBuilder::visit_stmt has cyclomatic complexity 30 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/block.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0690ea53e55e74c538b04ac659c59f5a1d9c6c35240b91fbb76c807d55095d"}},{"ruleId":"D1","level":"warning","message":{"text":"whitespace_around_named_parameter_equals::whitespace_around_named_parameter_equals (cyclomatic 30): whitespace_around_named_parameter_equals::whitespace_around_named_parameter_equals has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"64eb0399031205a2de34abba5082913dc50fd57f7d14a6491a1bac173ca44f8a"}},{"ruleId":"D1","level":"warning","message":{"text":"removal_in_3::check_method (cyclomatic 30): removal_in_3::check_method has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b805d30f37c5d677ad517e3ac12de80484e6408a25023a191db67dd640bf731"}},{"ruleId":"D1","level":"warning","message":{"text":"RecoveryContextKind::list_terminator_kind (cyclomatic 30): RecoveryContextKind::list_terminator_kind has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"427fb10f3d10da039e41536d4ddfc594a46ee4510c0c1ab8bf66e59cde5204c5"}},{"ruleId":"D1","level":"warning","message":{"text":"format::warn_incompatible_formatter_settings (cyclomatic 29): format::warn_incompatible_formatter_settings has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e827085cfd5151d8c1645e034c9fa67381ff17a49ec4d688d6755ff0372cab"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceMap::annotated_lines (cyclomatic 29): SourceMap::annotated_lines has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/source_map.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"500c83cbb69a4ccc12c1cf35e91fa831a6d67932670b1ecc3b3277fc87e98f42"}},{"ruleId":"D1","level":"warning","message":{"text":"literal_comparisons::literal_comparisons (cyclomatic 29): literal_comparisons::literal_comparisons has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb23ae04889cd608d7763b429a00e1bcc6817e1f85206171f6d66ba33ed8359"}},{"ruleId":"D1","level":"warning","message":{"text":"sections::blanks_and_section_underline (cyclomatic 29): sections::blanks_and_section_underline has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c94d8ab7d6956a2dfd3e42c254545ae102a3643d697117351976279ec9a717"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalReferencesFinder::enter_node (cyclomatic 29): LocalReferencesFinder::enter_node has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/references.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"fefb0a37a9d01a205488b14c6d82da6fa15992b1d291b2357810e4849ca45c8e"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::validate_subscript_deletion_impl (cyclomatic 29): TypeInferenceBuilder::validate_subscript_deletion_impl has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"19df682643325e293d2112855c68b42ffb0f781c928111caec4d8a459bb4e022"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_paramspec (cyclomatic 29): TypeInferenceBuilder::infer_legacy_paramspec has cyclomatic complexity 29 (threshold 15). Of this number, 28 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"654bc14baa64c9eea36cec4cc302053bb59c2f514269a5849b04788f400d7c17"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceMap::splice_lines (cyclomatic 28): SourceMap::splice_lines has cyclomatic complexity 28 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 5 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/source_map.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e51cdee4f7e6a75b21bb8711ea9f864b026e1d843155d9213fdc0affb8756c5"}},{"ruleId":"D1","level":"warning","message":{"text":"render::emit_suggestion_default (cyclomatic 28): render::emit_suggestion_default has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5050382700633971fabc8d7e95f2d19b4083e7988e2d13c9b3a8a07fcffc325"}},{"ruleId":"D1","level":"warning","message":{"text":"BlankLinesChecker::check_line (cyclomatic 28): BlankLinesChecker::check_line has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ae54620746c9f5c394a19f23b8fd1bdcdee0c7de9c5241180fbd54ca0b9d7a"}},{"ruleId":"D1","level":"warning","message":{"text":"bad_generator_return_type::bad_generator_return_type (cyclomatic 28): bad_generator_return_type::bad_generator_return_type has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/bad_generator_return_type.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed5bd11ab4decf15f943e1ae13bbb565720caf03a36401ad675c799e63a8cfa9"}},{"ruleId":"D1","level":"warning","message":{"text":"missing_whitespace_around_operator::missing_whitespace_around_operator (cyclomatic 28): missing_whitespace_around_operator::missing_whitespace_around_operator has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"4677698cc81498b2e02c9dcf7074ffc0097ce7ec97e1e7101670d0d7f826c35e"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticModel::resolve_load (cyclomatic 28): SemanticModel::resolve_load has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"418c254ae74fae0284f84dd5fef6ecd3319ad26c85864cef296c21e4641ae39f"}},{"ruleId":"D1","level":"warning","message":{"text":"general::render_with_indentation_mode (cyclomatic 28): general::render_with_indentation_mode has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/docstring/markdown/general.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bbfbf6c4b2b0794b29bf2ff22a9fedbf122db67e9a494e42d2551a4bda6040f"}},{"ruleId":"D1","level":"warning","message":{"text":"ArgumentMatcher::match_variadic (cyclomatic 28): ArgumentMatcher::match_variadic has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":4631}}}],"partialFingerprints":{"codehealthFindingId/v1":"781643f24358174d64c041c733c575ea42abc049126fe7ad4ece3fcfb1c36650"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_builtins_type_call (cyclomatic 28): TypeInferenceBuilder::infer_builtins_type_call has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_call.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"1275e192fae08c3fb007441d4dcd7eb96b75d70457fceffd4c364acbc1916333"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotated_assignment_statement (cyclomatic 28): TypeInferenceBuilder::infer_annotated_assignment_statement has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3948}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed334bd35992b1df48b8ae9e0347189628f3615aac64aab25f5d9769ce64610b"}},{"ruleId":"D1","level":"warning","message":{"text":"DisjointnessChecker::check_typeddict_pair (cyclomatic 28): DisjointnessChecker::check_typeddict_pair has cyclomatic complexity 28 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"279892df0128912b99a301ec6fee8a3ba1ba18f5e01770f3752a3a1e6ac64eed"}},{"ruleId":"D1","level":"warning","message":{"text":"UnionBuilder::push_type (cyclomatic 28): UnionBuilder::push_type has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd5909bcc57e6d03e0ba5ea93325b9171395549001339c1a49df7e35902a096"}},{"ruleId":"D1","level":"warning","message":{"text":"SpecialFormType::in_type_expression (cyclomatic 28): SpecialFormType::in_type_expression has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/special_form.rs"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"964ef76dc5b7a948c6611bae938152a7281550d8bc4a00f959c55bca7cece989"}},{"ruleId":"D1","level":"warning","message":{"text":"Diff::fmt (cyclomatic 27): Diff::fmt has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/full.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed0a6ed81b03fe07ee1e90766e62a3b56c6055dcb267dd0d1edcabd2ef00344"}},{"ruleId":"D1","level":"warning","message":{"text":"Checker::report_semantic_error (cyclomatic 27): Checker::report_semantic_error has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e1b02f65e74c47b98ccd1b8438331b80c254521b62d1763bd6f25327deac48"}},{"ruleId":"D1","level":"warning","message":{"text":"LoopMutationsVisitor::visit_stmt (cyclomatic 27): LoopMutationsVisitor::visit_stmt has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdb9bf95bd55bd819c535f7251d76c7295b05657ec6c11d70803058fe11c29f"}},{"ruleId":"D1","level":"warning","message":{"text":"RecoveryContextKind::is_list_element (cyclomatic 27): RecoveryContextKind::is_list_element has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ccb3680c2de9f49493498b44a90e30c14b1333a38ddb49a29dac6eb36406e40"}},{"ruleId":"D1","level":"warning","message":{"text":"GotoTarget::definitions (cyclomatic 27): GotoTarget::definitions has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/goto.rs"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a283fa191f10696e4a751affd3fdf9e83c87cd5e278993c8889cdc1f98d217"}},{"ruleId":"D1","level":"warning","message":{"text":"KnownClass::canonical_module (cyclomatic 27): KnownClass::canonical_module has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/known.rs"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c3e10465160a7f173eb0f587aeaee03fd406ed3e9ac6d0069377fb46afd2b50"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate (cyclomatic 27): AssignmentAttributeWriteEvaluator::evaluate has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"57fb076ea6fe6d5aa87dcc53132b3a3127143061860b74a8a70b3fa54a92ac13"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_enum_call_expression (cyclomatic 27): TypeInferenceBuilder::infer_enum_call_expression has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"75430428cb10491e86c65b0125bdb147b49b5db719ddf20573ccf6fb1c49f6c4"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_unary_expression_type (cyclomatic 27): TypeInferenceBuilder::infer_unary_expression_type has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":10396}}}],"partialFingerprints":{"codehealthFindingId/v1":"6656c01e24ebfcbed7257e91cd4694498f02c8a64b6fccbce6326283ec64fb3c"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::write_summary_text (cyclomatic 26): Printer::write_summary_text has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/printer.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1c4c25a0bab12dc6c1a0362144d05241763e9660a1e11c7c6aca0b3042f02f5"}},{"ruleId":"D1","level":"warning","message":{"text":"format::format (cyclomatic 26): format::format has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b348b62fadbb842fffa859a454a1e5ef304fdc12ff6be9adbaae8722a098503"}},{"ruleId":"D1","level":"warning","message":{"text":"render::render (cyclomatic 26): render::render has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f3d959fe7330fe5506076f3f718111548d85404fb2f2f4a4e4bbebb7a4094ef"}},{"ruleId":"D1","level":"warning","message":{"text":"tokens::check_tokens (cyclomatic 26): tokens::check_tokens has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/tokens.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd76eff54ed883837b16514a8ed9015a1a71eb7071b677584ae18d733ee63df"}},{"ruleId":"D1","level":"warning","message":{"text":"manual_list_comprehension::manual_list_comprehension (cyclomatic 26): manual_list_comprehension::manual_list_comprehension has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f661459cc38f47318dd173463680a0088700a468b49b18e8c0c3788de083c49"}},{"ruleId":"D1","level":"warning","message":{"text":"RecoveryContextKind::create_error (cyclomatic 26): RecoveryContextKind::create_error has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"e027129429bc9035a0d21190ac223c4fcd1597ec6e856c99436a1152e6db6c09"}},{"ruleId":"D1","level":"warning","message":{"text":"FoldingRangeVisitor::enter_node (cyclomatic 26): FoldingRangeVisitor::enter_node has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/folding_range.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b97bfce33ad94bf4e973b8825135ca04310ab15cf424e862b51ca79fae895c5"}},{"ruleId":"D1","level":"warning","message":{"text":"Debouncer::add_event (cyclomatic 26): Debouncer::add_event has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/watch/watcher.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"6664b49fbbd72c88c71e3670238d5834aac7f16f5e003207f19cbb03aa5c3810"}},{"ruleId":"D1","level":"warning","message":{"text":"LoopBindingsVisitor::visit_stmt (cyclomatic 26): LoopBindingsVisitor::visit_stmt has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder/loop_bindings_visitor.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3518cb439f9d83f352fadf1e4e89fb80ae38b42c0885d7069b3f3d78af8a81"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate_instance (cyclomatic 26): AssignmentAttributeWriteEvaluator::evaluate_instance has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"447e304335761548ec86c804ed0da62c46ef37d8f052fa96271c8e7cab3d531e"}},{"ruleId":"D1","level":"warning","message":{"text":"indent::indent (cyclomatic 25): indent::indent has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/indent.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1d9b64fc6ca463bbc06dbdd4858c6b7179e2067e2be535aa98bfa7f7cb03a0"}},{"ruleId":"D1","level":"warning","message":{"text":"Lexer::lex_interpolated_string_middle_or_end (cyclomatic 25): Lexer::lex_interpolated_string_middle_or_end has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfe4e51073d7f18aee9736da2d05294ff131759876d4f7565176f85ef35b61b"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse_simple_statement (cyclomatic 25): Parser::parse_simple_statement has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1fa039c2a88d7a7c7700abdfe735d793817a9100e3af475bfc33a51777545b"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolvedClientCapabilities::new (cyclomatic 25): ResolvedClientCapabilities::new has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/capabilities.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f9dfeb7fea6455fcceabea49e07d42525638c3aa877048fe5d18e8e874a2be4"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayParameters::fmt_detailed (cyclomatic 25): DisplayParameters::fmt_detailed has cyclomatic complexity 25 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 12 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2378}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c5cfe07fe2fe1719013cb53931e2de21b85f3973b73374079d643751234271"}},{"ruleId":"D1","level":"warning","message":{"text":"Mro::of_static_class (cyclomatic 25): Mro::of_static_class has cyclomatic complexity 25 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/mro.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f90b3f13112dda06d2befa071609ecf7d29d09a5cd625a375f801efa10d832"}},{"ruleId":"D1","level":"warning","message":{"text":"diagnostics::lint_path (cyclomatic 24): diagnostics::lint_path has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/diagnostics.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6cecfa61bfe1c17546d0f0a49208bb7e6b317f8d9735d544c92e92b0880450d"}},{"ruleId":"D1","level":"warning","message":{"text":"render::render_title (cyclomatic 24): render::render_title has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"65ece0c323e72a9541651def0b34f3ea56c724c01dd6f8de47da2ac579ce7ccc"}},{"ruleId":"D1","level":"warning","message":{"text":"generate_ty_cli_reference::generate_command (cyclomatic 24): generate_ty_cli_reference::generate_command has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_ty_cli_reference.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a48e0eaeaee012727cf92e8f73d393eeb973a9ab9afff58f2de1dc531ffbe1"}},{"ruleId":"D1","level":"warning","message":{"text":"FStringConversion::try_convert (cyclomatic 24): FStringConversion::try_convert has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"98094da7bf0f5ced3348d8a22f6478af6979222efb8d6d3e5a75d646908fcd30"}},{"ruleId":"D1","level":"warning","message":{"text":"unnecessary_lambda::unnecessary_lambda (cyclomatic 24): unnecessary_lambda::unnecessary_lambda has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a696cf09c48e042636e1b4bf29ef82d87fea2908da36601b6405170b03edd9"}},{"ruleId":"D1","level":"warning","message":{"text":"super_call_with_parameters::super_call_with_parameters (cyclomatic 24): super_call_with_parameters::super_call_with_parameters has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/super_call_with_parameters.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"0429fb6c71c9d0f69de2d7e71a88d42b8a5f18cc930c05a4190b662931b5273c"}},{"ruleId":"D1","level":"warning","message":{"text":"manual_dict_comprehension::manual_dict_comprehension (cyclomatic 24): manual_dict_comprehension::manual_dict_comprehension has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"0314698dea6b209c659eef25de1b0ded927ae89408438feb60076c09c0a22f46"}},{"ruleId":"D1","level":"warning","message":{"text":"bindings::bindings (cyclomatic 24): bindings::bindings has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/bindings.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cff415e4eb8b8605ff3a1b0b2dd996af5cc62b2a4f47676b04a29d4d454ea84"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatImplicitConcatenatedStringFlat::new::merge_flags (cyclomatic 24): FormatImplicitConcatenatedStringFlat::new::merge_flags has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/implicit.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf496541cf80d4b50cbfb30547daf2ea65e5e6473a1f1cbd02ce78ea9421963"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticModel::simulate_runtime_load_at_location_in_scope (cyclomatic 24): SemanticModel::simulate_runtime_load_at_location_in_scope has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a14b0c29f7fb07919ad8c4332e8d4248022975b2eb18f342b9932128fdd262"}},{"ruleId":"D1","level":"warning","message":{"text":"ProjectFilesWalker::collect_vec (cyclomatic 24): ProjectFilesWalker::collect_vec has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/walk.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d919d1827c00e8e01b3be6a2b21e1be1e74bb1e975379bbc410cdd9176d872b"}},{"ruleId":"D1","level":"warning","message":{"text":"ArgumentTypeChecker::infer_specialization (cyclomatic 24): ArgumentTypeChecker::infer_specialization has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":5300}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d521272bfc3f38096d1d63e76a8402d7514d1d2cf160ba3fd460eeba218ae4"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassType::own_class_member (cyclomatic 24): ClassType::own_class_member has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":1657}}}],"partialFingerprints":{"codehealthFindingId/v1":"91a7e004a09ad3d64090a787a94af2e0a5252f476fa1a7f2d07d523ab1a317e2"}},{"ruleId":"D1","level":"warning","message":{"text":"ContextManagerError::report_diagnostic (cyclomatic 24): ContextManagerError::report_diagnostic has cyclomatic complexity 24 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/context_manager.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7a7c73338ef37b26dc7d30f8ea14541839db776fcddc86f312f7cbf1d279ea"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typealiastype_assignment_deferred (cyclomatic 24): TypeInferenceBuilder::infer_typealiastype_assignment_deferred has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3786}}}],"partialFingerprints":{"codehealthFindingId/v1":"5901399695ad5df598eed0b95838ba2ca50346cb5165948d2517f7be1d02a0c2"}},{"ruleId":"D1","level":"warning","message":{"text":"SubscriptErrorKind::report_diagnostic (cyclomatic 24): SubscriptErrorKind::report_diagnostic has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/subscript.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8ca7f36f73405f0c02a300bb99c23d674de4bbf7539e98aae36ceb51b77a54"}},{"ruleId":"D1","level":"warning","message":{"text":"overrides::check_inherited_method_conflicts (cyclomatic 24): overrides::check_inherited_method_conflicts has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/overrides.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b100537bd9e25d7caaf1cb9d44ad8aef0de7596d6f0c0d9953d8a5adf20a644"}},{"ruleId":"D1","level":"warning","message":{"text":"reachability::analyze_single_pattern_predicate_kind (cyclomatic 24): reachability::analyze_single_pattern_predicate_kind has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/reachability.rs"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf47db6b8112ca845b33c66c47ef18f148fc4bdbd520c5679db20c9652b30b1d"}},{"ruleId":"D1","level":"warning","message":{"text":"unused_bindings::unused_bindings (cyclomatic 24): unused_bindings::unused_bindings has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support/unused_bindings.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"653a132e24cb78755c1dbd504a53f6f489540712f1aea979187deb5d777d52f2"}},{"ruleId":"D1","level":"warning","message":{"text":"LinePreprocessor::next (cyclomatic 23): LinePreprocessor::next has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba085304729c637895f902ce3964cba46433e92f9141d5232faa3a23a51f1929"}},{"ruleId":"D1","level":"warning","message":{"text":"missing_maxsplit_arg::missing_maxsplit_arg (cyclomatic 23): missing_maxsplit_arg::missing_maxsplit_arg has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/missing_maxsplit_arg.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3251599ba25852bc839132e270b9367f9f010a0e5f6bd5f5b27cd3b3f2c026"}},{"ruleId":"D1","level":"warning","message":{"text":"unused_arguments::unused_arguments (cyclomatic 23): unused_arguments::unused_arguments has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_unused_arguments/rules/unused_arguments.rs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"08afc6db3ae8a0b96f82e72266b467b27aff7306b411a7a325f91355fe0731ff"}},{"ruleId":"D1","level":"warning","message":{"text":"native_literals::native_literals (cyclomatic 23): native_literals::native_literals has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f37ba3cb88978df88fb95f8c4875e4b9eb0bf0f07b2134af09ba64a8eb9e425"}},{"ruleId":"D1","level":"warning","message":{"text":"xcom_pull_in_template_string::parse_xcom_pull_template (cyclomatic 23): xcom_pull_in_template_string::parse_xcom_pull_template has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/xcom_pull_in_template_string.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"96617b84e6bb862f18030685672767f1c2ec633f9c2a40a88d09924a21e5b8c9"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatInterpolatedElement::fmt (cyclomatic 23): FormatInterpolatedElement::fmt has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/other/interpolated_string_element.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"05fdca9af97e99d221ed385c5fcbe34c860e1cf1f79ef5f489ef71b771823acb"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticSyntaxChecker::visit_expr (cyclomatic 23): SemanticSyntaxChecker::visit_expr has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ff935f3940dd047faf838f3e5fce2d87ea30fa9cd2000ade249cad7f53efb7"}},{"ruleId":"D1","level":"warning","message":{"text":"MatchPatternVisitor::visit_pattern (cyclomatic 23): MatchPatternVisitor::visit_pattern has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":2122}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa1a2fdce412aa09bd5316f2878f30f28a64053aaeb4d471e9e746fbe0a5975"}},{"ruleId":"D1","level":"warning","message":{"text":"BackwardsTokenizer::next_token_inner (cyclomatic 23): BackwardsTokenizer::next_token_inner has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/tokenizer.rs"},"region":{"startLine":918}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a2562b596a71b3ef2cbfd8ffd176d41a63b64e3afbfe00388ad8e982213a6b5"}},{"ruleId":"D1","level":"warning","message":{"text":"PortableGlobPattern::parse (cyclomatic 23): PortableGlobPattern::parse has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/glob/portable.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"be07e723c722559f559db4799f4093203b8686f7ba2f855500f59ce60a963bb4"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticIndexBuilder::pop_scope (cyclomatic 23): SemanticIndexBuilder::pop_scope has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b94b44624a48ee778eede03922940a438bb0629ff60dbe4e5efee3486473653"}},{"ruleId":"D1","level":"warning","message":{"text":"CallableBinding::report_diagnostics (cyclomatic 23): CallableBinding::report_diagnostics has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":4181}}}],"partialFingerprints":{"codehealthFindingId/v1":"40db41ab9551384ca0f7313abfb833178e34f771ae1a38f0ecaee95958bb40a7"}},{"ruleId":"D1","level":"warning","message":{"text":"Constraint::new_node_with_bounds (cyclomatic 23): Constraint::new_node_with_bounds has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":1890}}}],"partialFingerprints":{"codehealthFindingId/v1":"1374d1e453318ca22b0217dc3d2687ca9867dde9ea620dd6faca222470871d3a"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_tuple_type_expression (cyclomatic 23): TypeInferenceBuilder::infer_tuple_type_expression has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a19fa61b223403db46a99855c578fb5e5a62d24ff9811f2d0fa94786d26fc1"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::try_iterate_with_mode::non_async_special_case (cyclomatic 23): Type::try_iterate_with_mode::non_async_special_case has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"f701886c7cf4be9b772a3ceaaa17b1fa7e0219d7a777fd8c2bcf54e5e5f99091"}},{"ruleId":"D1","level":"warning","message":{"text":"function::is_instance_truthiness (cyclomatic 23): function::is_instance_truthiness has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a6ce449ca11da7d671802f532bfbaf33f6edd683189c441dadd4b224f043cb"}},{"ruleId":"D1","level":"warning","message":{"text":"unused::check_unused_suppressions (cyclomatic 23): unused::check_unused_suppressions has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/suppression/unused.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebde87e1efb56fa0d38a40a62d9ac1b2d0d2e5a5293114334c15dc030b2998d"}},{"ruleId":"D1","level":"warning","message":{"text":"no_method_decorator::get_undecorated_methods (cyclomatic 22): no_method_decorator::get_undecorated_methods has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/no_method_decorator.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"19887f016572112dc2bbdb28fe74709513faae107e53c1b458c2fc5fbdcee36c"}},{"ruleId":"D1","level":"warning","message":{"text":"logical_lines::check_logical_lines (cyclomatic 22): logical_lines::check_logical_lines has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/logical_lines.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7f7788cbd36bbd61e2cd76a1bbc96c83370f0cc87b9c53664e883e32f183f3"}},{"ruleId":"D1","level":"warning","message":{"text":"unnecessary_dunder_call::unnecessary_dunder_call (cyclomatic 22): unnecessary_dunder_call::unnecessary_dunder_call has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unnecessary_dunder_call.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c678a9f1b0a6f8f9b291cd78375a3c32d4437f8a642231c853a56f9987507a"}},{"ruleId":"D1","level":"warning","message":{"text":"runtime_import_in_type_checking_block::runtime_import_in_type_checking_block (cyclomatic 22): runtime_import_in_type_checking_block::runtime_import_in_type_checking_block has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"445aa9c008773599f06f1db2993d3f5debaadcdf9762cccc375bdb0d4343b3b5"}},{"ruleId":"D1","level":"warning","message":{"text":"reimplemented_builtin::convert_for_loop_to_any_all (cyclomatic 22): reimplemented_builtin::convert_for_loop_to_any_all has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca31db8bc769cb90616b997a8f2e59688dfa2bb5b059cfc001b0e944d7c785c"}},{"ruleId":"D1","level":"warning","message":{"text":"IsortOptions::try_into_settings (cyclomatic 22): IsortOptions::try_into_settings has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/options.rs"},"region":{"startLine":2927}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5658b509834a65221f65d04529c4f638243a2eebb794e0783ca21aeab502ad1"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_function_body (cyclomatic 22): TypeInferenceBuilder::infer_function_body has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"8abf3389eaf4504cf19486e2272840871f69893d15173b9f758c24d7b1e02caa"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_paramspec_explicit_specialization_value (cyclomatic 22): TypeInferenceBuilder::infer_paramspec_explicit_specialization_value has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"0002f981ee21a2bf837369812b2506353176a5fb445dcba3c0032d6caeb0495b"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_region_scope (cyclomatic 22): TypeInferenceBuilder::infer_region_scope has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a1fccc852f95da72f4ef33963c53ada4cae78c6328e9c0b6df13cbfbd2b25b"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_assignment_definition_impl (cyclomatic 22): TypeInferenceBuilder::infer_assignment_definition_impl has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3197}}}],"partialFingerprints":{"codehealthFindingId/v1":"326256daa618a23d69cd53914d9f1cd7b184777b53837ef4ddf26d19adfc0a1f"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::generator_types (cyclomatic 22): Type::generator_types has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":5813}}}],"partialFingerprints":{"codehealthFindingId/v1":"451adb9bf1468c145cba3ddfc7083594d350347ad99a9b8737e78db0ee33f1e4"}},{"ruleId":"D1","level":"warning","message":{"text":"ExplicitConfigOverrides::transform (cyclomatic 21): ExplicitConfigOverrides::transform has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/args.rs"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"3304ade6754fd4748cb880225507188374ffacee59db9ba9c06e35963d055b44"}},{"ruleId":"D1","level":"warning","message":{"text":"Document::propagate_expand::propagate_expands (cyclomatic 21): Document::propagate_expand::propagate_expands has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/format_element/document.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a67de4bb2472117adb8846ac91cd6c405daf6f714be4abaca4fcfd86f3c5b72"}},{"ruleId":"D1","level":"warning","message":{"text":"GroupNameFinder::visit_stmt (cyclomatic 21): GroupNameFinder::visit_stmt has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee1830d2f0805856f059f27fdd2a05d06560ab1cae71485231f0ff964ac519ae"}},{"ruleId":"D1","level":"warning","message":{"text":"Suppressions::check_suppressions (cyclomatic 21): Suppressions::check_suppressions has cyclomatic complexity 21 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 6 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"f725d5e5a6e934536cd8e75692b30f46309a72237d63057b58143271a8bade25"}},{"ruleId":"D1","level":"warning","message":{"text":"typing_only_runtime_import::typing_only_runtime_import (cyclomatic 21): typing_only_runtime_import::typing_only_runtime_import has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f104c3d19c16d1fda31d17123ace2b58c37c276bcaf2284a179310d9426da06"}},{"ruleId":"D1","level":"warning","message":{"text":"trailing_commas::check_token (cyclomatic 21): trailing_commas::check_token has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_commas/rules/trailing_commas.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e557a11171a8064ee06268d3aa6da09fc7cf90be0e5b42a5a097f4d4c6ebf2"}},{"ruleId":"D1","level":"warning","message":{"text":"use_pep604_annotation::non_pep604_annotation (cyclomatic 21): use_pep604_annotation::non_pep604_annotation has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/use_pep604_annotation.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"37cc6378ccf3266098ccc1626a44623b1cd91317cae0f7c94456db820415be40"}},{"ruleId":"D1","level":"warning","message":{"text":"unused_import::unused_import (cyclomatic 21): unused_import::unused_import has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/unused_import.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"43be988c836b8035d25327db7b263bef3e6f2eaed616f10600ff060f5254aed2"}},{"ruleId":"D1","level":"warning","message":{"text":"verbatim::write_suppressed_statements (cyclomatic 21): verbatim::write_suppressed_statements has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/verbatim.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8e40318afcdcee5513567f2eb52c5e3d091dd457d0eeedc2a18c7797de4445"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::handle_implicitly_concatenated_strings (cyclomatic 21): Parser::handle_implicitly_concatenated_strings has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f1ccad8529df7cc5bf67b936fb27679f1e0c509944d128c908188bce7261883"}},{"ruleId":"D1","level":"warning","message":{"text":"MainLoop::main_loop (cyclomatic 21): MainLoop::main_loop has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty/src/lib.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ef15208cf5b2aa573a8853cad2560325064266eb5dcb2fc28bd78fe0795558"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticTokenVisitor::classify_from_definition (cyclomatic 21): SemanticTokenVisitor::classify_from_definition has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9b813b60f68b8a7b4de1e1d335ef808674f76cf214fb420641ae95328e362d"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::own_fields (cyclomatic 21): StaticClassLiteral::own_fields has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2321}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f24cc57a4d3742328f56da8a318db4f64e42801813138e4174d31d52f7c216"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::constructor_bindings (cyclomatic 21): Type::constructor_bindings has cyclomatic complexity 21 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":5249}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a88e800b3ba3dc0c8833c5b2c751b53f1faaa13337d82d1138ee9e620393b65"}},{"ruleId":"D1","level":"warning","message":{"text":"containment::containment_behavior (cyclomatic 21): containment::containment_behavior has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow/containment.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e74a7d8259d346e6dc4b11691e435707a0c40c91503baccccd0d5894f5d169"}},{"ruleId":"D1","level":"warning","message":{"text":"diagnostic::report_invalid_method_override (cyclomatic 21): diagnostic::report_invalid_method_override has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":3755}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f801fb010808bf8aea3e124e268d4929faae552a35ba7b54492f66bfc76f513"}},{"ruleId":"D1","level":"warning","message":{"text":"place::place_from_bindings_impl (cyclomatic 21): place::place_from_bindings_impl has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/place.rs"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a80ef85886abe914f432d05845d927bf838c0dae6ea59ed4318a1e58e4e335"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::process_code_block (cyclomatic 20): Parser::process_code_block has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/parser.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"357c056760aa11f4ab782350afff3652c271958543480f176af47e4232d4a29b"}},{"ruleId":"D1","level":"warning","message":{"text":"UnittestAssert::generate_assert (cyclomatic 20): UnittestAssert::generate_assert has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"5333002bb1b5c74b39009d9417f5133d259683270f6aa2e4755243eb17e5cb8c"}},{"ruleId":"D1","level":"warning","message":{"text":"BlankLinesChecker::check_lines (cyclomatic 20): BlankLinesChecker::check_lines has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ef9627fa67f6ad63468cca2950751eb65951d575c7c508b3291775632b9b36"}},{"ruleId":"D1","level":"warning","message":{"text":"TypingTarget::try_from_expr (cyclomatic 20): TypingTarget::try_from_expr has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/typing.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9cb89fd829e4464cdaf2825745ba6d45c3688b77f9f7531c66fdddd4bb5fa37"}},{"ruleId":"D1","level":"warning","message":{"text":"whitespace_before_comment::whitespace_before_comment (cyclomatic 20): whitespace_before_comment::whitespace_before_comment has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"4561257b29efecfe98f421e24dcc3615c93349a290292adf1aaec697116aa35c"}},{"ruleId":"D1","level":"warning","message":{"text":"type_alias_quotes::quotes_are_unremovable (cyclomatic 20): type_alias_quotes::quotes_are_unremovable has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/type_alias_quotes.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"40307e08b2527ab21b7328d97d5d05684fdd755f07190be56c7c060af0f82433"}},{"ruleId":"D1","level":"warning","message":{"text":"isort::format_import_block (cyclomatic 20): isort::format_import_block has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/mod.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff8361e2f1e08c42dbce1186cf82234ffed891e2824e0a8f80633913499b62e"}},{"ruleId":"D1","level":"warning","message":{"text":"shell_injection::shell_injection (cyclomatic 20): shell_injection::shell_injection has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/shell_injection.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad29ee0d90b5b3ff9aef5a68362445ab98925b93866ee00c1846a81ee6cf8bf1"}},{"ruleId":"D1","level":"warning","message":{"text":"UnqualifiedName::from_expr (cyclomatic 20): UnqualifiedName::from_expr has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/name.rs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4619260e43c218f3626272f9bf4585bde6e519f07c5ab12e268dd2457caf10"}},{"ruleId":"D1","level":"warning","message":{"text":"Terminal::from_body (cyclomatic 20): Terminal::from_body has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/terminal.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"e04710c7720f8098eb0bd50f560f469ac2f8ae927dbeb0a82f9e827d76c6fef0"}},{"ruleId":"D1","level":"warning","message":{"text":"ty::run_check (cyclomatic 20): ty::run_check has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty/src/lib.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"350f71eeecd2ec47bb59fb4edb66670f2ccc979a832a3d1029d0cd9c06078160"}},{"ruleId":"D1","level":"warning","message":{"text":"ContextCursor::incomplete_keywords (cyclomatic 20): ContextCursor::incomplete_keywords has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"2263761eff66a366bd5329b1397cd8d81c9dc8bd925e5581e50ce7a3989450c6"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticTokenVisitor::visit_expr (cyclomatic 20): SemanticTokenVisitor::visit_expr has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2491720e01b2b0c79aefe01f511c7e30469a532181b4b4652bb1ffb7140cb2"}},{"ruleId":"D1","level":"warning","message":{"text":"CallableBinding::filter_overloads_using_any_or_unknown (cyclomatic 20): CallableBinding::filter_overloads_using_any_or_unknown has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":3854}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f41a6b995aba04338e3a318a62cce115462b172ec5f12a148ed9b9f1d2c8e3"}},{"ruleId":"D1","level":"warning","message":{"text":"PathBounds::default_solve (cyclomatic 20): PathBounds::default_solve has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":3847}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd0ea7e2a744a0bc3330bdc21b50a15ab918545dda74d9daf4ca93a6cc6209b"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayUnionType::fmt_detailed (cyclomatic 20): DisplayUnionType::fmt_detailed has cyclomatic complexity 20 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 4 belong to 2 function items declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2693}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c635e303b7107579e252d1576fc1de97d138ef81b8c0f62dcd8b8fd406cc92"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::report (cyclomatic 20): AssignmentAttributeWriteEvaluator::report has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea2e65934096fa5deba3c2a0a39ebfcd3c776aebce98171e5fd450df68def55"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_literal_parameter_type (cyclomatic 20): TypeInferenceBuilder::infer_literal_parameter_type has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":2628}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e51d54ef0487400ebfa91e592ae12993c178787d8ca7e5847397fc6b442f65e"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_callable_parameter_types (cyclomatic 20): TypeInferenceBuilder::infer_callable_parameter_types has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63c961e86bd46852d24d802e59460109571e139ccc0544761144e77156b4194"}},{"ruleId":"D1","level":"warning","message":{"text":"UnionElement::try_reduce (cyclomatic 20): UnionElement::try_reduce has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2d99490cb0a65f17f640a97d12a7a4995ebbe6119a8978b805e5f31783d36e"}},{"ruleId":"D1","level":"warning","message":{"text":"fixes::fix_all (cyclomatic 20): fixes::fix_all has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/fixes.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"7efcdebda5577abd4edcd25ffadfd160116e3fefb25cebc2c0c8c8af45748dbb"}},{"ruleId":"D1","level":"warning","message":{"text":"render::pre_process (cyclomatic 19): render::pre_process has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":2712}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a83952e757cd83c3b1f274a92b5421d6276d996b2cba1169f7a0fcdbf8c1d3"}},{"ruleId":"D1","level":"warning","message":{"text":"GithubRenderer::render (cyclomatic 19): GithubRenderer::render has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/github.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a9687d3f98d50d26666fe841ed1e20877f4881a5185dc813fb68e1090079a6"}},{"ruleId":"D1","level":"warning","message":{"text":"blank_before_after_class::blank_before_after_class (cyclomatic 19): blank_before_after_class::blank_before_after_class has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/blank_before_after_class.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"02883acdfc7ef5f7c3e245cdc66bc89d4d7ff9c57ae07f9a207aadb127c8194d"}},{"ruleId":"D1","level":"warning","message":{"text":"sorted_min_max::sorted_min_max (cyclomatic 19): sorted_min_max::sorted_min_max has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/sorted_min_max.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eec2dfbdd3d9f0af9e8da643d7f9e2877a990f590326962bc712057cfc11b6d"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatExprSlice::fmt_fields (cyclomatic 19): FormatExprSlice::fmt_fields has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_slice.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e12cb30c31be06b7cec18df5c987b1cd3334b61eea573d8279015e1e319ec0"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatParameters::fmt_fields (cyclomatic 19): FormatParameters::fmt_fields has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/other/parameters.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafa495a303848854ab96f533a8263b9e31eb11251c7a8316d9657d59f2e2fdf"}},{"ruleId":"D1","level":"warning","message":{"text":"ClauseHeader::visit (cyclomatic 19): ClauseHeader::visit has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/clause.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e928a0e8848756998a10b7a14ca32aaa7c6e60db75ab68e3efb352f90af518"}},{"ruleId":"D1","level":"warning","message":{"text":"StringNormalizer::preferred_quote_style (cyclomatic 19): StringNormalizer::preferred_quote_style has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"757910e78dc0957c69dbd84aca97a855df1007451b8f1e2bd0023f905cefb8c5"}},{"ruleId":"D1","level":"warning","message":{"text":"UnicodeEscape::normalize (cyclomatic 19): UnicodeEscape::normalize has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4aeca2dfdb74a842b3560e063a2da1f42df274bf5a1ab5b540c9e0b66a920c"}},{"ruleId":"D1","level":"warning","message":{"text":"normalize::normalize_string (cyclomatic 19): normalize::normalize_string has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"054128b951c111fe41e2981be172a99ef0ecd16b7782a17bbb0d32816b4483ee"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse_interpolated_element (cyclomatic 19): Parser::parse_interpolated_element has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1767}}}],"partialFingerprints":{"codehealthFindingId/v1":"8948bd4bafec8d57f1acf2d7e4eefb1d31b6dc90e546b0f090a4e349a7dae008"}},{"ruleId":"D1","level":"warning","message":{"text":"class::any_member_declaration::any_stmt_in_body (cyclomatic 19): class::any_member_declaration::any_stmt_in_body has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/class.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf548423e58271b76bae800e1bc6688ab44fd02edc48e2d38493ea1adf70582"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::own_class_member (cyclomatic 19): StaticClassLiteral::own_class_member has cyclomatic complexity 19 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 4 belong to one function item declared inside it. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1250}}}],"partialFingerprints":{"codehealthFindingId/v1":"2afa916cdda2134c3975c19a8b763aeedc462917034dcce2bde290e1d69b2eae"}},{"ruleId":"D1","level":"warning","message":{"text":"SpecializationBuilder::common_typed_dict_protocol_constraints (cyclomatic 19): SpecializationBuilder::common_typed_dict_protocol_constraints has cyclomatic complexity 19 (threshold 15). Most of this is not in the body itself: 7 of the 19 points are its own statements and the rest belongs to 2 function items declared inside it (collect_typed_dicts, is_string_keyed_mapping). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa5bb62ce6829fe5a3eadfbeb780f3b3c68a99fd6637c018cbc242a505a259e"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subclass_of_type_expression (cyclomatic 19): TypeInferenceBuilder::infer_subclass_of_type_expression has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1238}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1c1cb8f87d7c626f1327bec491d674e22b57f5c40a5aabe75505df4a98f191"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_assignment_deferred (cyclomatic 19): TypeInferenceBuilder::infer_assignment_deferred has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3535}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f72c7ac1a4dfab49d60cb76aeb22cd6084248cd44ac7a571a5e819249bda12"}},{"ruleId":"D1","level":"warning","message":{"text":"NarrowingConstraintsBuilder::evaluate_expr_compare_op (cyclomatic 19): NarrowingConstraintsBuilder::evaluate_expr_compare_op has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":3024}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fe428e3483de9310465cfa5c42ef1a112a21118c430913fadf42da0fe4f2d4"}},{"ruleId":"D1","level":"warning","message":{"text":"VariableLengthTuple::mixed_forward_slice_plan (cyclomatic 19): VariableLengthTuple::mixed_forward_slice_plan has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9b8876cd9ea7e1e7f65f9a26662e031746ec8b0fff9c7b659dfd1efb74ed87"}},{"ruleId":"D1","level":"warning","message":{"text":"match_pattern::definite_match_pattern_type_for_subject (cyclomatic 19): match_pattern::definite_match_pattern_type_for_subject has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/match_pattern.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a07e11f8e2b77a01e8bf433df65f34fe0da409778cbdeb887ab637fcd3a3639"}},{"ruleId":"D1","level":"warning","message":{"text":"typed_dict::validate_typed_dict_openness (cyclomatic 19): typed_dict::validate_typed_dict_openness has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/typed_dict.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d2e5122af5d5f9a7a7f4ad7b204e67d0e72e611afc577a08085ee17ab0ad9ae"}},{"ruleId":"D1","level":"warning","message":{"text":"diagnostics::lint_stdin (cyclomatic 18): diagnostics::lint_stdin has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/diagnostics.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0f4ca6c61b922b4287e9045cdfb27ab74df7c3abf693c2e752878df6ebca3b"}},{"ruleId":"D1","level":"warning","message":{"text":"Collector::visit_stmt (cyclomatic 18): Collector::visit_stmt has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_graph/src/collector.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"23337090c4bbbd4dd43acd54b482d7651baf6f6031feda4033e9e17370108541"}},{"ruleId":"D1","level":"warning","message":{"text":"SuspiciousVariablesVisitor::visit_expr (cyclomatic 18): SuspiciousVariablesVisitor::visit_expr has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"b544f5262b31f9d54f614445e698b97daf37c9700f75a0ce6946c6ed4f8b8318"}},{"ruleId":"D1","level":"warning","message":{"text":"UselessSuppressionComments::check_suppression_comment (cyclomatic 18): UselessSuppressionComments::check_suppression_comment has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/invalid_formatter_suppression_comment.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2247b9f04fcbd624eb43e9b8f7b9a430b5eb32bb549f127a0629ccace0fab0"}},{"ruleId":"D1","level":"warning","message":{"text":"ReFunc::from_call_expr (cyclomatic 18): ReFunc::from_call_expr has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2ecb955fae789d630ca5e8543b5bdc6c1f34f4cfe1ce2e14e62a8e8624e7a0"}},{"ruleId":"D1","level":"warning","message":{"text":"SuppressionsBuilder::load_from_tokens (cyclomatic 18): SuppressionsBuilder::load_from_tokens has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4054640418ff09edd7b54ff0a152806b716dd7ea3d499ae8eb7d6e37594d8ce"}},{"ruleId":"D1","level":"warning","message":{"text":"missing_whitespace::missing_whitespace (cyclomatic 18): missing_whitespace::missing_whitespace has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"544f654d1623f3f243acaf514601b18a5fa796158172f83d3073411aba9d8b7c"}},{"ruleId":"D1","level":"warning","message":{"text":"function_is_too_complex::get_complexity_number (cyclomatic 18): function_is_too_complex::get_complexity_number has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/mccabe/rules/function_is_too_complex.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bec947204ad01a599b3258e11eec594cafca5b2127a0006ffb889cb294fe22c"}},{"ruleId":"D1","level":"warning","message":{"text":"printf_string_formatting::handle_part (cyclomatic 18): printf_string_formatting::handle_part has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e103fd7e984ef45da8dfbd2a0675f5915bbf57d18b99f3649fb2cbba54dd2a"}},{"ruleId":"D1","level":"warning","message":{"text":"static_join_to_fstring::build_fstring (cyclomatic 18): static_join_to_fstring::build_fstring has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bba24031aface25414e8ce3297cc9fb70a884b2bb5ca4bd9c98b46735c80659"}},{"ruleId":"D1","level":"warning","message":{"text":"private_member_access::private_member_access (cyclomatic 18): private_member_access::private_member_access has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_self/rules/private_member_access.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"660c2f5d834da828360bc7b833b7d70ac9cee16f7aa2547ef7e27d5306f6bd88"}},{"ruleId":"D1","level":"warning","message":{"text":"non_self_return_type::non_self_return_type (cyclomatic 18): non_self_return_type::non_self_return_type has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/non_self_return_type.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d56f8a91fe8a8ecf4be065eec1e7d76a911bbf14fb0ed43c6d3e72b76984c2d"}},{"ruleId":"D1","level":"warning","message":{"text":"verbose_decimal_constructor::verbose_decimal_constructor (cyclomatic 18): verbose_decimal_constructor::verbose_decimal_constructor has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/verbose_decimal_constructor.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"89aab3d77bdcfe71b64f3275fc81dd4c01237fa6445043a651d96e6dc2c06743"}},{"ruleId":"D1","level":"warning","message":{"text":"BinaryLike::fmt (cyclomatic 18): BinaryLike::fmt has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/binary_like.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f42031f53ba8aa80fa7a7b39e010213f946ba1eff7e0272d1aa5cde57a7e27"}},{"ruleId":"D1","level":"warning","message":{"text":"ClauseHeader::first_keyword_range (cyclomatic 18): ClauseHeader::first_keyword_range has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/clause.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d33ff51f1cdc07a306b772f3d9eaefca0ec20d97b7d127a1ee4816ca0bd192"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticSyntaxChecker::check_annotation (cyclomatic 18): SemanticSyntaxChecker::check_annotation has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a76068ecc2b6b00a062ed9f2b4bd47dfd39c69aceff737939095ac4713b8e9f"}},{"ruleId":"D1","level":"warning","message":{"text":"RangedValue::to_override (cyclomatic 18): RangedValue::to_override has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/metadata/options.rs"},"region":{"startLine":1897}}}],"partialFingerprints":{"codehealthFindingId/v1":"766b9636d9eceb9c30fac6f0db111b8a7c697a6925c145818df6eba57673c760"}},{"ruleId":"D1","level":"warning","message":{"text":"NotebookDocument::update (cyclomatic 18): NotebookDocument::update has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/edit/notebook.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b09f242093989927864a21d945589e2e99f2019f5994105c5f884f95913040"}},{"ruleId":"D1","level":"warning","message":{"text":"RuffSettingsIndex::new (cyclomatic 18): RuffSettingsIndex::new has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/session/index/ruff_settings.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5821c5a9a50b09d6a2456f0e3ba2236f8d0db9a9c0482556201af30fca87c4"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonFilesVisitor::visit (cyclomatic 18): PythonFilesVisitor::visit has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf149f4f26c51cfe04074405427af1fb42e3c0fab57b7d93346b7684c08ec15"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticTokenVisitor::classify_from_type_for_attribute (cyclomatic 18): SemanticTokenVisitor::classify_from_type_for_attribute has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fbd85e044b0322a546693439a528e884244b8c30c7d943e44b80eebf69a09c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExportFinder::visit_stmt (cyclomatic 18): ExportFinder::visit_stmt has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/re_exports.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f895159f9f02baa2259e1df258121ae95562d51ecc6d45d9127b7dc52924734"}},{"ruleId":"D1","level":"warning","message":{"text":"InteriorNode::simplify (cyclomatic 18): InteriorNode::simplify has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":4560}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d9bbce06d864a4f266775b87adee8cd03b13499e6f420426d4071daea0f7d26"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_nested_match_pattern (cyclomatic 18): TypeInferenceBuilder::infer_nested_match_pattern has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e53e4864f2f9bf842991f862916b6bc179f75c1fcfec098f67e16c7f1a670ec"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_dict_expression (cyclomatic 18): TypeInferenceBuilder::infer_dict_expression has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6791}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d4eec786ec1d65e4dcecdbc09d461c56b75e3d24974b8b01e9f4b93edaff43"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRelationChecker::check_type_satisfies_protocol (cyclomatic 18): TypeRelationChecker::check_type_satisfies_protocol has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/instance.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"78816587fc015e6a875f4d180e38e6f3a6b990280514dc36fd33e05dd3a45278"}},{"ruleId":"D1","level":"warning","message":{"text":"typed_dict::extract_unpacked_typed_dict_from_value_type (cyclomatic 18): typed_dict::extract_unpacked_typed_dict_from_value_type has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"af5b0373044dcdaa7734f19031411bbfe39d2eda730460aa4b80cdbd50d291c5"}},{"ruleId":"D1","level":"warning","message":{"text":"known_instance::walk_known_instance_type (cyclomatic 18): known_instance::walk_known_instance_type has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/known_instance.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b027f3257bc1d05bf9e53d6450db70d52d20275b3f3d64acd67cb1fafce571"}},{"ruleId":"D1","level":"warning","message":{"text":"ConciseRenderer::render (cyclomatic 17): ConciseRenderer::render has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/concise.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c1b32994fd7c8b3ba833ed7191f3838c4da44e0310f6120c4cf23804a4de54"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_fill_entries (cyclomatic 17): Printer::print_fill_entries has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"312ec8e979b3d0142123ecc82a512938ba798dac87fa66a9554cbac384f0a4ca"}},{"ruleId":"D1","level":"warning","message":{"text":"ReturnVisitor::visit_stmt (cyclomatic 17): ReturnVisitor::visit_stmt has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_return/visitor.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"047705379e5b6c2103af477813424339f15f9ccd35283fc53ae428396e15f63d"}},{"ruleId":"D1","level":"warning","message":{"text":"unnecessary_spread::unnecessary_spread_fix (cyclomatic 17): unnecessary_spread::unnecessary_spread_fix has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pie/rules/unnecessary_spread.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"eefe66409416b7256e220dbf058beba8dd9711e65138f3e8fce625af78328df2"}},{"ruleId":"D1","level":"warning","message":{"text":"needless_bool::needless_bool (cyclomatic 17): needless_bool::needless_bool has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd19f3eb71c6dda85f53c61feb4d12081bb57965f9dbda37e118370d63208d9"}},{"ruleId":"D1","level":"warning","message":{"text":"printf_string_formatting::convertible (cyclomatic 17): printf_string_formatting::convertible has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"c73835a887178a04ed7237e14272c0c4303e8148ad1f9d24e7ce05636bdd8235"}},{"ruleId":"D1","level":"warning","message":{"text":"printf_string_formatting::printf_string_formatting (cyclomatic 17): printf_string_formatting::printf_string_formatting has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b627f7f441bfa52b0db9d44034e378f368944e0a3df48f801e0dd44bd75dd5"}},{"ruleId":"D1","level":"warning","message":{"text":"missing_fstring_syntax::should_be_fstring (cyclomatic 17): missing_fstring_syntax::should_be_fstring has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/missing_fstring_syntax.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c24dbf6c8b4e67d26497d08688c2272590fb1def9660db81e340f615ccfbe34"}},{"ruleId":"D1","level":"warning","message":{"text":"unspecified_encoding::is_violation (cyclomatic 17): unspecified_encoding::is_violation has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ebb6287ca44e72641f4008c500b056aff37b6c708785abf4bed2b0a0659bf4c"}},{"ruleId":"D1","level":"warning","message":{"text":"f_strings::f_strings (cyclomatic 17): f_strings::f_strings has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0456051b97551c76e034ebab39b91057c776e5093eb7fb96895c58572e8e46c"}},{"ruleId":"D1","level":"warning","message":{"text":"if_stmt_min_max::if_stmt_min_max (cyclomatic 17): if_stmt_min_max::if_stmt_min_max has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/if_stmt_min_max.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac6a14b9868989ed57056c3e09db26cf69c76753570d9080a45afe05e71ea3c"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatExprAttribute::fmt_fields (cyclomatic 17): FormatExprAttribute::fmt_fields has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_attribute.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c445ebb9b07ce8fb0a2836c3333d01c4ad63fa2c8b4e84a92405b35ef38e70f8"}},{"ruleId":"D1","level":"warning","message":{"text":"MaybeParenthesizeExpression::fmt (cyclomatic 17): MaybeParenthesizeExpression::fmt has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2120299d0ecd90ecae40f379f03231d686a7cd3359d32bf0d11f0e79fd9fbe4"}},{"ruleId":"D1","level":"warning","message":{"text":"CFGBuilder::process_stmts (cyclomatic 17): CFGBuilder::process_stmts has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/cfg/graph.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45b5d53344ebd6366c611eeb0b808526171301700e28031f15a7b6b447d1af3"}},{"ruleId":"D1","level":"warning","message":{"text":"InlayHintVisitor::visit_expr (cyclomatic 17): InlayHintVisitor::visit_expr has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/inlay_hints.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d85dcce06bd67c2f94c9b0b2d3b2fc73824c587f35cf8465c30490096e10587"}},{"ruleId":"D1","level":"warning","message":{"text":"hover::hover (cyclomatic 17): hover::hover has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/hover.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"609b3c465d4da1a4a554e2f63ab285d0236648ab89b5cb81e7d57caa8d66fd2b"}},{"ruleId":"D1","level":"warning","message":{"text":"resolve::dynamic_resolution_paths (cyclomatic 17): resolve::dynamic_resolution_paths has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/resolve.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"184811c3da7517e13f1b455bbf8e28bcc70edd1319a64abf49c3336cc4c495be"}},{"ruleId":"D1","level":"warning","message":{"text":"module_glob::glob_to_regex (cyclomatic 17): module_glob::glob_to_regex has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/module_glob.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb890c928da3862080057c5f503382b41b7a16368a4458c2a4e328f84366cb9"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::try_metaclass (cyclomatic 17): StaticClassLiteral::try_metaclass has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 3 of the 17 points are its own statements and the rest belongs to one function item declared inside it (try_metaclass_inner). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeecad54950ceb4b89a7f898147e9e9d1cf53deb6eeebeb965c321031295a229"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticClassLiteral::own_instance_member (cyclomatic 17): StaticClassLiteral::own_instance_member has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2902}}}],"partialFingerprints":{"codehealthFindingId/v1":"69245f46c6984636e63fdfb67d521506f3b10052bdd4162222f6510045eb56ab"}},{"ruleId":"D1","level":"warning","message":{"text":"SequentMap::add_mutual_sequents_for_different_typevars (cyclomatic 17): SequentMap::add_mutual_sequents_for_different_typevars has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":5541}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a21c233751a7ba35ac1a9558bb4c53d8161cfc41d5117d4cc60e70cd028671"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::validate_dynamic_type_bases (cyclomatic 17): TypeInferenceBuilder::validate_dynamic_type_bases has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/dynamic_class.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ccc580b1b77ede14cb62d85c7a66de73c964f4b4a8597199a73b16a113ae561"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typing_namedtuple_fields (cyclomatic 17): TypeInferenceBuilder::infer_typing_namedtuple_fields has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/named_tuple.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6ac5d955a67da902f92550646f7f862d15097580eb69fbaf074ae535546740"}},{"ruleId":"D1","level":"warning","message":{"text":"Tuple::try_for_each_element_pair (cyclomatic 17): Tuple::try_for_each_element_pair has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":2433}}}],"partialFingerprints":{"codehealthFindingId/v1":"96c18b69e83b7fdf5fcb762062e3b2b59ae3d543a0e8ff8a47ca7aeee8e4c8b2"}},{"ruleId":"D1","level":"warning","message":{"text":"equality::known_literal_equality (cyclomatic 17): equality::known_literal_equality has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"811f11016caf73480e2a4c2b6ac540204ec95ebd6f47ca052fe3adb5090017a2"}},{"ruleId":"D1","level":"warning","message":{"text":"static_class::check_class_namespace_against_metaclass_members (cyclomatic 17): static_class::check_class_namespace_against_metaclass_members has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a87d014548ba77b806f92a5a99d97d5d65b6106d122ef95ef074c4b120dc4c"}},{"ruleId":"D1","level":"warning","message":{"text":"paramspec_validation::validate_paramspec_components (cyclomatic 17): paramspec_validation::validate_paramspec_components has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/paramspec_validation.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75618706be8638ecfb37338363e2a412b65c28b873a6648712bc82b2fe00572"}},{"ruleId":"D1","level":"warning","message":{"text":"order::order_imports (cyclomatic 16): order::order_imports has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/order.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d589c82ae7e6e3597ca2f187300d333d6dc12052bb791da4210fa5850c1d9b"}},{"ruleId":"D1","level":"warning","message":{"text":"bit_count::bit_count (cyclomatic 16): bit_count::bit_count has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/bit_count.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc9107400ee0ec233406c2734ed5bcdaa974e4a8fea0e3b1b62c0157285e125"}},{"ruleId":"D1","level":"warning","message":{"text":"deprecated_mock_import::deprecated_mock_import (cyclomatic 16): deprecated_mock_import::deprecated_mock_import has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"7208177de80664dc4727bb4c5908edcab380d320a9880343fbc002c3c55a0af2"}},{"ruleId":"D1","level":"warning","message":{"text":"string_in_exception::string_in_exception (cyclomatic 16): string_in_exception::string_in_exception has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_errmsg/rules/string_in_exception.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d21fb7fbc4c5eab235bf4398f22814f83c9901712bd7b4b547ed67a7570e5c"}},{"ruleId":"D1","level":"warning","message":{"text":"replaceable_by_pathlib::replaceable_by_pathlib (cyclomatic 16): replaceable_by_pathlib::replaceable_by_pathlib has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b245202c72137c4c31a316447a5e14f1215571179782a7704826b6f282da82"}},{"ruleId":"D1","level":"warning","message":{"text":"ambiguous_unicode_character::ambiguous_unicode_character (cyclomatic 16): ambiguous_unicode_character::ambiguous_unicode_character has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"e26b7830fa3d05b572edeaf28fcbe738b2024fbc999950db0cdba5971bfebe39"}},{"ruleId":"D1","level":"warning","message":{"text":"not_missing::not_missing (cyclomatic 16): not_missing::not_missing has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/not_missing.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b743de9d684c11f314e62e72b975ac68ddab5bfd68681ceaa97e0bef039c61"}},{"ruleId":"D1","level":"warning","message":{"text":"simple_defaults::is_valid_default_value_with_annotation (cyclomatic 16): simple_defaults::is_valid_default_value_with_annotation has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b5c3e89a3ffe7840294bc8c5cd89d1455fd5cb7b01b62b95a465d6729bf8a6"}},{"ruleId":"D1","level":"warning","message":{"text":"invalid_literal_comparisons::locate_cmp_ops (cyclomatic 16): invalid_literal_comparisons::locate_cmp_ops has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/invalid_literal_comparisons.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb37596246b9358abcc1fed7a19685349b394c17b038b01153ab968f4c74a184"}},{"ruleId":"D1","level":"warning","message":{"text":"class_as_data_structure::class_as_data_structure (cyclomatic 16): class_as_data_structure::class_as_data_structure has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/class_as_data_structure.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0984f42a3e45b1856e78ecaf5b8de156e51f16e219ca0bd45cc6d23bb3773b7"}},{"ruleId":"D1","level":"warning","message":{"text":"HashableExpr::from (cyclomatic 16): HashableExpr::from has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 1 of the 16 points are its own statements and the rest belongs to 3 function items declared inside it (as_number, as_hashable_constant, as_hashable). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/comparable.rs"},"region":{"startLine":2014}}}],"partialFingerprints":{"codehealthFindingId/v1":"100b0ca0a38bd3169e1d3a904ed98a075e26c1a04dfd3f2a650926e97b9b67a0"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser::parse_set_or_dict_like_expression (cyclomatic 16): Parser::parse_set_or_dict_like_expression has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfa827a384d8f1bf540633185032996e01d8955b31a36e36f8fb2a9678ac5ae"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticSyntaxChecker::debug_shadowing (cyclomatic 16): SemanticSyntaxChecker::debug_shadowing has cyclomatic complexity 16 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d92b7a15ec69270c0b401aa44e8701e97ac23d3e534df8c479f9013d437635a"}},{"ruleId":"D1","level":"warning","message":{"text":"recovery::pattern_to_expr (cyclomatic 16): recovery::pattern_to_expr has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/recovery.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f75155461a02541f5e6baec95027b2f48e217a468d42eb1fb3a700408481cf8"}},{"ruleId":"D1","level":"warning","message":{"text":"terminal::sometimes_breaks (cyclomatic 16): terminal::sometimes_breaks has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/terminal.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b47598b54c3868745fdaa41f4484404c566005a00a314322733f32a8107960b"}},{"ruleId":"D1","level":"warning","message":{"text":"CommentRanges::block_comments (cyclomatic 16): CommentRanges::block_comments has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/comment_ranges.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3b0fc33fbf321af5428714331a369ea0bec89601928a0f21d773a79d2b298d"}},{"ruleId":"D1","level":"warning","message":{"text":"lint::to_lsp_diagnostic (cyclomatic 16): lint::to_lsp_diagnostic has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/lint.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"81b4d803e139940c2fd716bd6435e249371d248e42840e4056736c4762d865a7"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassType::into_callable_with_receiver (cyclomatic 16): ClassType::into_callable_with_receiver has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":2068}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e7de88a04d4ae2a06b9b20f43c3ea1c44574f53079d4564d00d0ff1d43714c"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::parse_enum_members_from_sequence (cyclomatic 16): TypeInferenceBuilder::parse_enum_members_from_sequence has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"4851e5dd61574368d78f62f41803b300c4bab41ecb777cbac8f3ee01fba71af6"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_import_from_definition (cyclomatic 16): TypeInferenceBuilder::infer_import_from_definition has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/imports.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6786a390b77edbafb50db52010ea5ac8923a1289b192b88265cfc58ecf30041"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_new_class_call (cyclomatic 16): TypeInferenceBuilder::infer_new_class_call has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/new_class.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e007e4ec3e38e4075344e108376f883c43934fa93931f546c5c9cc8ee157da7"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeInferenceBuilder::infer_and_check_argument_types (cyclomatic 16): TypeInferenceBuilder::infer_and_check_argument_types has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":5208}}}],"partialFingerprints":{"codehealthFindingId/v1":"d263e471a981bdb1a985a9e52f6a23e30b9838af9fbe355253dc7351844650ee"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::class_member_with_policy_inner (cyclomatic 16): Type::class_member_with_policy_inner has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":2707}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9aa3f0889d97962b7545ccb377b19964d1cce2ad9b751e29ef959242937b450"}},{"ruleId":"D1","level":"warning","message":{"text":"Type::try_call_dunder_get (cyclomatic 16): Type::try_call_dunder_get has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 5 of the 16 points are its own statements and the rest belongs to one function item declared inside it (try_call_dunder_get_inner). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":3201}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a79bb5e551c5be456d2224e1148b9246238b6791f3474de1d85e8a9d09b16d"}},{"ruleId":"D1","level":"warning","message":{"text":"static_class::check_final_class_abstract_methods (cyclomatic 16): static_class::check_final_class_abstract_methods has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d2e635999d4bc921013bec5ba44f7b54c278cc29f9a0e8d730c9438d2a3f72"}},{"ruleId":"D1","level":"warning","message":{"text":"resolve_definition::map_stub_definition (cyclomatic 16): resolve_definition::map_stub_definition has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":2388}}}],"partialFingerprints":{"codehealthFindingId/v1":"a297fed6957a86dc976b905adc7be4e19144f3cc770dcc50677adfc93c47f5be"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_support::definitions_for_attribute (cyclomatic 16): ide_support::definitions_for_attribute has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"0373f0d9d2f49ca760b5b4312cd0b85dc8f61e65abb32bf8221ae015360204a5"}},{"ruleId":"D2","level":"warning","message":{"text":"expression::expression (cognitive 731): expression::expression has cognitive complexity 731 (threshold 15). Drivers by points: if/else 666, loops 27, boolean chains 25, match/switch 13 (nesting depth added 254). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/expression.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"16943ea95b35539e2a49d6dab652733ce5b9cdd06c576453ea53b2a07b56f5cd"}},{"ruleId":"D2","level":"warning","message":{"text":"statement::statement (cognitive 708): statement::statement has cognitive complexity 708 (threshold 15). Drivers by points: if/else 648, loops 57, boolean chains 2, match/switch 1 (nesting depth added 308). Of this number, 700 points are the body\u0027s own statements and 8 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/statement.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49d522decd2aa2e1fd43e0364a008bb0c93dc19f41b443ecd57f350101a8eb8"}},{"ruleId":"D2","level":"warning","message":{"text":"Bindings::evaluate_known_cases (cognitive 598): Bindings::evaluate_known_cases has cognitive complexity 598 (threshold 15). Drivers by points: if/else 446, match/switch 124, loops 18, boolean chains 10 (nesting depth added 432). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f17c5f21f67c82875bb8ec1d6ae20b223e7348c5d1fcc24b7cbc35fc853d342"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_signature_pair_inner (cognitive 458): TypeRelationChecker::check_signature_pair_inner has cognitive complexity 458 (threshold 15). Drivers by points: if/else 309, match/switch 80, loops 44, boolean chains 25 (nesting depth added 303). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":2175}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35b1798d86b6557521b1df8a097a1277bb2b2eeb50936c2a6390f580e47914a"}},{"ruleId":"D2","level":"warning","message":{"text":"static_class::check_static_class_definitions (cognitive 319): static_class::check_static_class_definitions has cognitive complexity 319 (threshold 15). Drivers by points: if/else 233, loops 44, boolean chains 24, match/switch 18 (nesting depth added 178). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbfe07f00246c2d943a5882636d82b9a1f4873eed9e93032aab69283a38d718"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticIndexBuilder::visit_stmt_impl (cognitive 309): SemanticIndexBuilder::visit_stmt_impl has cognitive complexity 309 (threshold 15). Drivers by points: if/else 222, loops 56, boolean chains 16, match/switch 15 (nesting depth added 169). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":2953}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf65839c4234f3cff21e3f062433723d9f1a7228dacc0b110d71e7fa4021d09"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::visit_expr (cognitive 264): Checker::visit_expr has cognitive complexity 264 (threshold 15). Drivers by points: if/else 145, loops 76, match/switch 37, boolean chains 6 (nesting depth added 168). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":1672}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e891fca976bd633de2735bc5f3d57b0779e245c4c904dc16f44b8fa327318f1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_parameterized_special_form_type_expression (cognitive 211): TypeInferenceBuilder::infer_parameterized_special_form_type_expression has cognitive complexity 211 (threshold 15). Drivers by points: if/else 165, loops 29, match/switch 12, boolean chains 5 (nesting depth added 110). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1981}}}],"partialFingerprints":{"codehealthFindingId/v1":"424f1d86adcabdc26e61443b7ad5b2506526c96d253ba2c085db626199622630"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_type_expression_no_store (cognitive 189): TypeInferenceBuilder::infer_type_expression_no_store has cognitive complexity 189 (threshold 15). Drivers by points: if/else 150, match/switch 18, loops 13, boolean chains 8 (nesting depth added 112). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d5a3c520027ee89198ff401d17dbc80b1e4841375d1026a7a8d8dc83f20ed5"}},{"ruleId":"D2","level":"warning","message":{"text":"UnionBuilder::add_in_place_impl (cognitive 180): UnionBuilder::add_in_place_impl has cognitive complexity 180 (threshold 15). Drivers by points: if/else 131, match/switch 26, loops 14, boolean chains 9 (nesting depth added 121). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"086463a182192ffea17e3a93a008ffa5d69df1079e157e36f1857c7e7e8a3fc1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_call_expression_impl (cognitive 173): TypeInferenceBuilder::infer_call_expression_impl has cognitive complexity 173 (threshold 15). Drivers by points: if/else 120, match/switch 25, boolean chains 21, loops 7 (nesting depth added 86). Of this number, 167 points are the body\u0027s own statements and 6 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":8419}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae581d4fceb48527d78b30349e5d206fcfd5f673351e0c0b41871bd516599bc"}},{"ruleId":"D2","level":"warning","message":{"text":"overrides::check_class_declaration (cognitive 171): overrides::check_class_declaration has cognitive complexity 171 (threshold 15). Drivers by points: if/else 145, boolean chains 20, match/switch 4, loops 2 (nesting depth added 100). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/overrides.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c35811244499868d34ed56a01d8808781ff04f5aada3fa538437503fe5599ad"}},{"ruleId":"D2","level":"warning","message":{"text":"definition::definition (cognitive 160): definition::definition has cognitive complexity 160 (threshold 15). Drivers by points: if/else 133, boolean chains 16, match/switch 8, loops 3 (nesting depth added 91). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_annotations/rules/definition.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"9454003d26ca8c29560211db444e49990f257a631f4196961007ce810d1cb9f5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_explicit_callable_specialization_impl (cognitive 156): TypeInferenceBuilder::infer_explicit_callable_specialization_impl has cognitive complexity 156 (threshold 15). Drivers by points: if/else 116, boolean chains 15, loops 14, match/switch 11 (nesting depth added 76). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa7b99d79b8414f91a4abe4719a7419f83d5145cb8fb608c2d138a3119229dc"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::visit_stmt (cognitive 154): Checker::visit_stmt has cognitive complexity 154 (threshold 15). Drivers by points: if/else 111, loops 22, match/switch 13, boolean chains 8 (nesting depth added 78). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"f98beae38dbe8471435f999f95daa9697955169162b7ae6260e2e0b061025fb6"}},{"ruleId":"D2","level":"warning","message":{"text":"SpecializationBuilder::infer_map_impl (cognitive 142): SpecializationBuilder::infer_map_impl has cognitive complexity 142 (threshold 15). Drivers by points: if/else 94, loops 30, boolean chains 10, match/switch 8 (nesting depth added 80). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":2833}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f25a03bb1b39c7f15f9e139d0430a4eb9c73b87f5b695a96b91452687083af"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_typeddict_pair (cognitive 140): TypeRelationChecker::check_typeddict_pair has cognitive complexity 140 (threshold 15). Drivers by points: if/else 110, match/switch 13, loops 10, boolean chains 7 (nesting depth added 86). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"7277dbf64e912905ab044616803e0609bb34f5ebe65114d195b81ebf40bcb037"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_type_pair (cognitive 135): TypeRelationChecker::check_type_pair has cognitive complexity 135 (threshold 15). Drivers by points: if/else 77, boolean chains 32, match/switch 26 (nesting depth added 47). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c1bb528e494979d631fc0af9d6452a76502571ae791ec8a7fa94b3f9ed657f"}},{"ruleId":"D2","level":"warning","message":{"text":"noqa::check_noqa (cognitive 132): noqa::check_noqa has cognitive complexity 132 (threshold 15). Drivers by points: if/else 103, boolean chains 13, loops 9, match/switch 7 (nesting depth added 79). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/noqa.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"243c2b939218e630bbdf8d7d6eba64be387eaca1877bbbde7f548f975750ed0e"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subscript_type_expression (cognitive 129): TypeInferenceBuilder::infer_subscript_type_expression has cognitive complexity 129 (threshold 15). Drivers by points: if/else 119, match/switch 8, loops 2 (nesting depth added 83). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1472}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb871381b0c012ea159c87a9f23b914dbde8cc8a8d6a2693d23ed460358fa34"}},{"ruleId":"D2","level":"warning","message":{"text":"LintConfiguration::as_rule_table (cognitive 122): LintConfiguration::as_rule_table has cognitive complexity 122 (threshold 15). Drivers by points: loops 57, if/else 56, boolean chains 6, match/switch 3 (nesting depth added 69). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/configuration.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2c099c00dfe26fb72c6de89d5fc04c3bf4b89a378e6d60f2e2950825af8e5d"}},{"ruleId":"D2","level":"warning","message":{"text":"ProjectDatabase::apply_changes (cognitive 122): ProjectDatabase::apply_changes has cognitive complexity 122 (threshold 15). Drivers by points: if/else 91, match/switch 24, boolean chains 4, loops 3 (nesting depth added 76). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/db/changes.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9738c61afd269c6bcb39435307f04a47ac7ddd6eeeb891673a8aa80a7bcf648"}},{"ruleId":"D2","level":"warning","message":{"text":"render::render_source_line (cognitive 121): render::render_source_line has cognitive complexity 121 (threshold 15). Drivers by points: if/else 64, loops 27, boolean chains 17, match/switch 13 (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d7074f3cf93ebb921a6b4891031fa03e61332a9d15d9139cb9f7f813f23c25"}},{"ruleId":"D2","level":"warning","message":{"text":"BindingError::report_diagnostic (cognitive 120): BindingError::report_diagnostic has cognitive complexity 120 (threshold 15). Drivers by points: if/else 105, match/switch 10, loops 4, boolean chains 1 (nesting depth added 67). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":7885}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04dfc8d83edd6e28a4775e75a7d80c035fcdaac937787ec9fe29eb1ef3b96e5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotated_assignment_definition (cognitive 120): TypeInferenceBuilder::infer_annotated_assignment_definition has cognitive complexity 120 (threshold 15). Drivers by points: if/else 87, match/switch 20, boolean chains 11, loops 2 (nesting depth added 60). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":4138}}}],"partialFingerprints":{"codehealthFindingId/v1":"265354f0c7c66cf278fe0f009d585cdaedd7ad11abf6df361c2572db25be8fbc"}},{"ruleId":"D2","level":"warning","message":{"text":"render::render_snippet_annotations (cognitive 117): render::render_snippet_annotations has cognitive complexity 117 (threshold 15). Drivers by points: if/else 77, loops 33, match/switch 5, boolean chains 2 (nesting depth added 70). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea1ca62188be0c5285b8c725ee40dd96a5b8b967cae1da68a1c174188fb774d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_typevar_default (cognitive 116): TypeInferenceBuilder::validate_typevar_default has cognitive complexity 116 (threshold 15). Drivers by points: if/else 103, loops 8, match/switch 4, boolean chains 1 (nesting depth added 75). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"35801a0f30174f2209bcab4cd06fb1c5da0678276d5f527c4445fa1bcee66bd5"}},{"ruleId":"D2","level":"warning","message":{"text":"extraneous_whitespace::extraneous_whitespace (cognitive 114): extraneous_whitespace::extraneous_whitespace has cognitive complexity 114 (threshold 15). Drivers by points: if/else 103, boolean chains 5, match/switch 5, loops 1 (nesting depth added 85). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f013394d834cb171a53482d4f0b148783bd5f48595bb343e18571571337325"}},{"ruleId":"D2","level":"warning","message":{"text":"KnownFunction::check_call (cognitive 109): KnownFunction::check_call has cognitive complexity 109 (threshold 15). Drivers by points: if/else 82, match/switch 14, loops 10, boolean chains 3 (nesting depth added 63). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":2380}}}],"partialFingerprints":{"codehealthFindingId/v1":"722767ea6c31b40bda720f338cd6e77df25db1c665463a79d2b49cc192857fbe"}},{"ruleId":"D2","level":"warning","message":{"text":"GotoTarget::from_covering_node (cognitive 108): GotoTarget::from_covering_node has cognitive complexity 108 (threshold 15). Drivers by points: if/else 77, match/switch 16, boolean chains 13, loops 2 (nesting depth added 59). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/goto.rs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e86a5a9b2b10f437ecec0f8b2453fe3351cffcebdcd2a95a11d130243eae92d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_subscript_assignment_impl (cognitive 108): TypeInferenceBuilder::validate_subscript_assignment_impl has cognitive complexity 108 (threshold 15). Drivers by points: if/else 85, boolean chains 9, match/switch 8, loops 6 (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":1630}}}],"partialFingerprints":{"codehealthFindingId/v1":"820ad1144610e9b36b7ccaaae1db0ca60bfe96785a281c5f6deb074c425a129d"}},{"ruleId":"D2","level":"warning","message":{"text":"sections::blanks_and_section_underline (cognitive 107): sections::blanks_and_section_underline has cognitive complexity 107 (threshold 15). Drivers by points: if/else 99, loops 6, boolean chains 2 (nesting depth added 70). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c7aab270e31c6c954b39c4cc460ec561dc1f21f87d3f40ed6b931fc4005625"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::write_summary_text (cognitive 106): Printer::write_summary_text has cognitive complexity 106 (threshold 15). Drivers by points: if/else 105, boolean chains 1 (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/printer.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"41f9173c287aceee409ac55be32489d779e2e441ce88566fd5b7083d362bec52"}},{"ruleId":"D2","level":"warning","message":{"text":"normalize::normalize_imports (cognitive 102): normalize::normalize_imports has cognitive complexity 102 (threshold 15). Drivers by points: loops 62, if/else 33, boolean chains 5, match/switch 2 (nesting depth added 69). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/normalize.rs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"49697e739bc6bbf2377aa06e31cfc51fa669f6d1e12b4f690f9ccbbc10642cbf"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowingConstraintsBuilder::evaluate_expr_compare (cognitive 100): NarrowingConstraintsBuilder::evaluate_expr_compare has cognitive complexity 100 (threshold 15). Drivers by points: if/else 69, match/switch 16, boolean chains 12, loops 3 (nesting depth added 41). Of this number, 92 points are the body\u0027s own statements and 8 belong to 2 function items declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":3152}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bb8e0d0af231a6cdc003fa655bfbedff16466361765a609edd6d75f93f0de4"}},{"ruleId":"D2","level":"warning","message":{"text":"deferred_scopes::deferred_scopes (cognitive 99): deferred_scopes::deferred_scopes has cognitive complexity 99 (threshold 15). Drivers by points: if/else 88, boolean chains 6, loops 5 (nesting depth added 49). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/deferred_scopes.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c28e8e83bbf524d195e43f73140511e38026ba8b5e659a1fae9d204a162ba41"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_collection_literal_impl (cognitive 98): TypeInferenceBuilder::infer_collection_literal_impl has cognitive complexity 98 (threshold 15). Drivers by points: if/else 62, loops 25, boolean chains 9, match/switch 2 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6967}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9575e2713a83590d0f054c345095e257f1e8cd19210cc6471f93ba56235c01"}},{"ruleId":"D2","level":"warning","message":{"text":"literal_comparisons::literal_comparisons (cognitive 96): literal_comparisons::literal_comparisons has cognitive complexity 96 (threshold 15). Drivers by points: if/else 74, match/switch 17, loops 3, boolean chains 2 (nesting depth added 63). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/literal_comparisons.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce27ded0a5a174058041f88f69604becd1a44db2c8cb22f2a2ac7b6da8d08f65"}},{"ruleId":"D2","level":"warning","message":{"text":"check_docstring::check_docstring (cognitive 94): check_docstring::check_docstring has cognitive complexity 94 (threshold 15). Drivers by points: if/else 69, loops 10, match/switch 10, boolean chains 5 (nesting depth added 56). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":1230}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe39386d15a49102de41ace57e7c25e96ce6468d915761c1068e48797f3c946"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatSuite::fmt (cognitive 94): FormatSuite::fmt has cognitive complexity 94 (threshold 15). Drivers by points: if/else 47, match/switch 35, boolean chains 11, loops 1 (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/suite.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6da08aa28d40e4445bc90620593e9f0b087bf42b2f29f94661f9e7679f9aba0"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_namedtuple_call_expression (cognitive 94): TypeInferenceBuilder::infer_namedtuple_call_expression has cognitive complexity 94 (threshold 15). Drivers by points: if/else 59, boolean chains 15, match/switch 14, loops 6 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/named_tuple.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bcd1cca0dd4b6b1412eceead3bf540aa6408243c69a36d1c7fc1a087f356dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::own_synthesized_member (cognitive 93): StaticClassLiteral::own_synthesized_member has cognitive complexity 93 (threshold 15). Drivers by points: if/else 59, boolean chains 20, match/switch 9, loops 5 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01048cc8276040210f00855f33f86f3c6fb2ef32db97dc22d18408f50a963be"}},{"ruleId":"D2","level":"warning","message":{"text":"Lexer::consume_ascii_character (cognitive 90): Lexer::consume_ascii_character has cognitive complexity 90 (threshold 15). Drivers by points: if/else 85, boolean chains 4, match/switch 1 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"e562c53a7fd8a9df7b226b845e4fcb07767b5f2dfd7e41d0bcaacdd14f00a316"}},{"ruleId":"D2","level":"warning","message":{"text":"ruff::check (cognitive 88): ruff::check has cognitive complexity 88 (threshold 15). Drivers by points: if/else 75, boolean chains 5, loops 4, match/switch 4 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/lib.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d4a36d580e1c5b34075190c2318f46dd9c7d9ae8bb8447055c80459a0e6129d"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticIndexBuilder::visit_expr (cognitive 85): SemanticIndexBuilder::visit_expr has cognitive complexity 85 (threshold 15). Drivers by points: if/else 63, loops 10, match/switch 9, boolean chains 3 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":4597}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe90d22bf4c5ebb54f957e6b31f53af17138cf86a5ae0ed4e1786d40cf1024d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_impl (cognitive 84): Parser::parse_impl has cognitive complexity 84 (threshold 15). Drivers by points: if/else 68, match/switch 10, loops 4, boolean chains 2 (nesting depth added 56). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/parser.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8a5c4dd054113498fb6e95ab55673380b56bd07d291a36f59a182921f4fddda"}},{"ruleId":"D2","level":"warning","message":{"text":"whitespace_around_named_parameter_equals::whitespace_around_named_parameter_equals (cognitive 80): whitespace_around_named_parameter_equals::whitespace_around_named_parameter_equals has cognitive complexity 80 (threshold 15). Drivers by points: if/else 63, loops 9, boolean chains 6, match/switch 2 (nesting depth added 55). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1fe8f41f4c137058865a1a8a8533ff33149cd285e1e493b1f0c596d4c0fad4c"}},{"ruleId":"D2","level":"warning","message":{"text":"redefined_while_unused::redefined_while_unused (cognitive 78): redefined_while_unused::redefined_while_unused has cognitive complexity 78 (threshold 15). Drivers by points: if/else 67, loops 7, boolean chains 4 (nesting depth added 47). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/redefined_while_unused.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2745404c8e4db0ff8ab0b26869c3bf0984f0c8bd328bc2db0cf72fad33567f"}},{"ruleId":"D2","level":"warning","message":{"text":"non_slot_assignment::is_attributes_not_in_slots (cognitive 78): non_slot_assignment::is_attributes_not_in_slots has cognitive complexity 78 (threshold 15). Drivers by points: if/else 48, loops 20, match/switch 6, boolean chains 4 (nesting depth added 49). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/non_slot_assignment.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ace548c9a2b9af7bdf7a908cf3ff5a08826eeae02449f9c23dcad1cb2894e73"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_subscript_deletion_impl (cognitive 78): TypeInferenceBuilder::validate_subscript_deletion_impl has cognitive complexity 78 (threshold 15). Drivers by points: if/else 60, match/switch 10, boolean chains 4, loops 4 (nesting depth added 51). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4125c117e3debd69ba2b363a7c445c2228f12418e5d63435dbb73c09974a878"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticTokenVisitor::visit_stmt (cognitive 76): SemanticTokenVisitor::visit_stmt has cognitive complexity 76 (threshold 15). Drivers by points: if/else 44, loops 27, match/switch 4, boolean chains 1 (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6eb45cde4c72f22594e283603621804ec29bd20375990703026d0fa3d7eb498"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::implicit_attribute_inner (cognitive 76): StaticClassLiteral::implicit_attribute_inner has cognitive complexity 76 (threshold 15). Drivers by points: if/else 41, match/switch 23, loops 10, boolean chains 2 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e52d9e9650db8958864cdb94a4024c45cb89844440183916eb22df565bb6f81"}},{"ruleId":"D2","level":"warning","message":{"text":"overloaded_function::check_overloaded_function (cognitive 76): overloaded_function::check_overloaded_function has cognitive complexity 76 (threshold 15). Drivers by points: if/else 56, loops 15, boolean chains 5 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/overloaded_function.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c603a9080a8c422caf9c400fcc1bb4052c18647dba401564feba961341eb345c"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatStatementsLastExpression::fmt (cognitive 75): FormatStatementsLastExpression::fmt has cognitive complexity 75 (threshold 15). Drivers by points: if/else 66, boolean chains 8, match/switch 1 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/stmt_assign.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"183ca0622e0b2946637824d51f2bad2bf8b99b58c968f2388f9ce032be621068"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayRepresentation::fmt_detailed (cognitive 75): DisplayRepresentation::fmt_detailed has cognitive complexity 75 (threshold 15). Drivers by points: if/else 38, match/switch 29, loops 8 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"a506ca9344f8080f4be78bd3612a0ce09cc536f8f29b94ddc771ce88af24ebae"}},{"ruleId":"D2","level":"warning","message":{"text":"Diff::fmt (cognitive 70): Diff::fmt has cognitive complexity 70 (threshold 15). Drivers by points: if/else 40, loops 21, match/switch 6, boolean chains 3 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/full.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd6b1ace263fb18dcc0eb8aa6801cc1e7885460b6ff6ac5d318691f0ec4ae93"}},{"ruleId":"D2","level":"warning","message":{"text":"Generator::unparse_expr (cognitive 69): Generator::unparse_expr has cognitive complexity 69 (threshold 15). Drivers by points: if/else 46, loops 12, match/switch 10, boolean chains 1 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb7b22f0e09d57c3b7a88bd1b966757454d403922792663b55d8c5c71acbf80"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleTokenizer::next_token_inner (cognitive 69): SimpleTokenizer::next_token_inner has cognitive complexity 69 (threshold 15). Drivers by points: if/else 66, boolean chains 2, match/switch 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/tokenizer.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac3b67b86256618cdbbed8d502eb68bd53458fb15f9662a7bd4c68e76b00671"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_attribute_load_impl (cognitive 69): TypeInferenceBuilder::infer_attribute_load_impl has cognitive complexity 69 (threshold 15). Drivers by points: if/else 51, match/switch 8, boolean chains 5, loops 5 (nesting depth added 37). Of this number, 65 points are the body\u0027s own statements and 4 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":10011}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc73838730f31b550ff7f45e1d08fed69196df38c97d09e4cae353f28a04630a"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotated_assignment_statement (cognitive 68): TypeInferenceBuilder::infer_annotated_assignment_statement has cognitive complexity 68 (threshold 15). Drivers by points: if/else 54, match/switch 6, boolean chains 5, loops 3 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3948}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d2807715623696ada72ff39607bd916c5468d86144d0f759ea98729f742f6b"}},{"ruleId":"D2","level":"warning","message":{"text":"InnerIntersectionBuilder::add_positive (cognitive 68): InnerIntersectionBuilder::add_positive has cognitive complexity 68 (threshold 15). Drivers by points: if/else 27, match/switch 20, loops 13, boolean chains 8 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":1452}}}],"partialFingerprints":{"codehealthFindingId/v1":"962725e5e0afb26a52b1296734354827cdc5364f91c18654a3a5dfedac1c7635"}},{"ruleId":"D2","level":"warning","message":{"text":"render::render (cognitive 67): render::render has cognitive complexity 67 (threshold 15). Drivers by points: if/else 46, match/switch 10, boolean chains 6, loops 5 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70ddb2fcc223a1f1855ddb6f8cebf6eb8f86ea56cfc37b9531d42cceb75c1a3"}},{"ruleId":"D2","level":"warning","message":{"text":"no_method_decorator::get_undecorated_methods (cognitive 67): no_method_decorator::get_undecorated_methods has cognitive complexity 67 (threshold 15). Drivers by points: if/else 52, match/switch 11, boolean chains 2, loops 2 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/no_method_decorator.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"774d822726d00468f781b5a503b223a7fcdb068f72c26506c4ef616931cda365"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_annotation_expression_impl (cognitive 67): TypeInferenceBuilder::infer_annotation_expression_impl has cognitive complexity 67 (threshold 15). Drivers by points: if/else 36, match/switch 21, boolean chains 5, loops 5 (nesting depth added 38). Of this number, 54 points are the body\u0027s own statements and 13 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/annotation_expression.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"81824f2aa179116f57f9803b1b463ba57ad963c2ce58c4c3232aecfa84efdd57"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typeddict_call_expression (cognitive 65): TypeInferenceBuilder::infer_typeddict_call_expression has cognitive complexity 65 (threshold 15). Drivers by points: if/else 37, loops 16, boolean chains 8, match/switch 4 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typed_dict.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1879746bfada71adeeab3290c0d4a54b80b1ddfc3160586afb7b92c8a2edb1f8"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typealiastype_assignment_deferred (cognitive 65): TypeInferenceBuilder::infer_typealiastype_assignment_deferred has cognitive complexity 65 (threshold 15). Drivers by points: if/else 55, loops 5, match/switch 3, boolean chains 2 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3786}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a5c78f5cceb455f95163867bd9456e59281e2f54913888f9c4c14a7255edd6"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_attribute_deletion (cognitive 64): TypeInferenceBuilder::validate_attribute_deletion has cognitive complexity 64 (threshold 15). Drivers by points: if/else 38, match/switch 18, boolean chains 6, loops 2 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2813}}}],"partialFingerprints":{"codehealthFindingId/v1":"3abd44c4cd533d4058a6e6c0a90bb9e31141f48387b34c88d1e34f4e029d57de"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticModel::resolve_load (cognitive 63): SemanticModel::resolve_load has cognitive complexity 63 (threshold 15). Drivers by points: if/else 56, boolean chains 3, match/switch 3, loops 1 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b7e8e05f103e43fbfca9f0aec3d1cb4f77600ece8692ada2e0a36c91551c29"}},{"ruleId":"D2","level":"warning","message":{"text":"render::emit_suggestion_default (cognitive 62): render::emit_suggestion_default has cognitive complexity 62 (threshold 15). Drivers by points: if/else 46, loops 10, match/switch 4, boolean chains 2 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed37a6f7a8c6e35e71bf08035eb06c404d6537f633746beff2c30bde56471dfc"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_ty_cli_reference::generate_command (cognitive 62): generate_ty_cli_reference::generate_command has cognitive complexity 62 (threshold 15). Drivers by points: if/else 38, loops 23, boolean chains 1 (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_ty_cli_reference.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddd79c178caa1c59a4fb2f123c036c95102c232dedea7db90778a2ed4084874"}},{"ruleId":"D2","level":"warning","message":{"text":"normalize::normalize_string (cognitive 62): normalize::normalize_string has cognitive complexity 62 (threshold 15). Drivers by points: if/else 53, loops 8, boolean chains 1 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"f418a4263031b1f5988f3b491190d0601580d9c64389abd38bc07c7ab21f4bb5"}},{"ruleId":"D2","level":"warning","message":{"text":"FitsMeasurer::fits_element (cognitive 61): FitsMeasurer::fits_element has cognitive complexity 61 (threshold 15). Drivers by points: if/else 33, match/switch 27, boolean chains 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b043b35afb3ab39cb7f0115e59910f9f3d8341bc07b896f2801818b29b0112"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_class_definition (cognitive 61): TypeInferenceBuilder::infer_class_definition has cognitive complexity 61 (threshold 15). Drivers by points: if/else 40, match/switch 10, loops 8, boolean chains 3 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/class.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"583bee4592af51171e07a9dab19a1886f2f7a3fd4aca43c982d49197c60f9436"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryLike::fmt (cognitive 60): BinaryLike::fmt has cognitive complexity 60 (threshold 15). Drivers by points: if/else 54, boolean chains 4, loops 2 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/binary_like.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"d432f38ffe7f873b0e333503eff40c6350c8292bd1bcef42ad96d1badd1c255a"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_function_definition (cognitive 60): TypeInferenceBuilder::infer_function_definition has cognitive complexity 60 (threshold 15). Drivers by points: if/else 28, match/switch 13, boolean chains 10, loops 9 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f23f238d836fcbffc8fa8b5e6ddfe5718d59669d7acc480df4e81db18c74f7f"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_variable_length_vs_tuple_spec (cognitive 60): TypeRelationChecker::check_variable_length_vs_tuple_spec has cognitive complexity 60 (threshold 15). Drivers by points: if/else 34, match/switch 11, loops 8, boolean chains 7 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e80bb9993a835db0969fe4ae7518533268ab39bae98f2d89e48fe868aa1735"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceMap::splice_lines (cognitive 59): SourceMap::splice_lines has cognitive complexity 59 (threshold 15). Drivers by points: if/else 36, loops 13, match/switch 10 (nesting depth added 26). Of this number, 51 points are the body\u0027s own statements and 8 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/source_map.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0a1a6dd9af2a8e46b7b87bbe3490c7751990ef6462dd748674745a7d7f59e5"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_element (cognitive 59): Printer::print_element has cognitive complexity 59 (threshold 15). Drivers by points: if/else 41, match/switch 17, boolean chains 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"271a63e9bde1bc7437ab3c3abbad9360cf25237049543c5032a7e226f3acd4f3"}},{"ruleId":"D2","level":"warning","message":{"text":"CallableBinding::check_types (cognitive 59): CallableBinding::check_types has cognitive complexity 59 (threshold 15). Drivers by points: if/else 30, loops 16, match/switch 13 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":3439}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1103ed1bb34927966c957b4b8f43080d694abc68c0a5ac3c45a3f6fe6c1233"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_binary_expression_type_impl (cognitive 59): TypeInferenceBuilder::infer_binary_expression_type_impl has cognitive complexity 59 (threshold 15). Drivers by points: if/else 39, match/switch 13, boolean chains 7 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/binary_expressions.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cfbf0131e7ea1364e2ac3c86a731fd9acdafcb0a603580401b659d92cbe876d"}},{"ruleId":"D2","level":"warning","message":{"text":"whitespace_before_comment::whitespace_before_comment (cognitive 58): whitespace_before_comment::whitespace_before_comment has cognitive complexity 58 (threshold 15). Drivers by points: if/else 54, boolean chains 3, loops 1 (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea31c4849be207eb1efee16c5ddaa262892a3379d6e006c31cd50afd89c8cd09"}},{"ruleId":"D2","level":"warning","message":{"text":"Truthiness::from_expr (cognitive 58): Truthiness::from_expr has cognitive complexity 58 (threshold 15). Drivers by points: if/else 48, match/switch 8, boolean chains 2 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"1396e54ced28a5eab8651780828eae0a770deb2139af92704f8f7da4e8f80325"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentMatcher::match_variadic (cognitive 57): ArgumentMatcher::match_variadic has cognitive complexity 57 (threshold 15). Drivers by points: if/else 33, loops 14, match/switch 7, boolean chains 3 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":4631}}}],"partialFingerprints":{"codehealthFindingId/v1":"48354a207b709676b957c6d793ca550263c570d63e7c769298e2bce59735421f"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subscript_load_impl (cognitive 57): TypeInferenceBuilder::infer_subscript_load_impl has cognitive complexity 57 (threshold 15). Drivers by points: if/else 39, match/switch 9, boolean chains 5, loops 4 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"d57aeea7f20e7e3c3f35a7c4a982eb22621fd6965dcb7955d68db2c98625b06b"}},{"ruleId":"D2","level":"warning","message":{"text":"definitions::definitions (cognitive 56): definitions::definitions has cognitive complexity 56 (threshold 15). Drivers by points: if/else 50, boolean chains 4, loops 1, match/switch 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/definitions.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8e60bf7f70bf8b86fc9b404fb5666075212d31b9ce9ee65f1ac005241fa70e"}},{"ruleId":"D2","level":"warning","message":{"text":"DunderAllNamesCollector::visit_stmt (cognitive 56): DunderAllNamesCollector::visit_stmt has cognitive complexity 56 (threshold 15). Drivers by points: if/else 38, match/switch 12, loops 5, boolean chains 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/dunder_all.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12e60ce8ea49fd50f03c9dd8f1c2c831762cb6359739ccb076d7b78e81624c6"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_tuple_type_expression (cognitive 56): TypeInferenceBuilder::infer_tuple_type_expression has cognitive complexity 56 (threshold 15). Drivers by points: if/else 48, boolean chains 5, loops 2, match/switch 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff2aa85db75bfb630a3f701dece387d48f48987168fdb29dd835d91eadf7deb"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::member_lookup_with_policy_and_receiver::member_lookup_with_policy_impl (cognitive 56): Type::member_lookup_with_policy_and_receiver::member_lookup_with_policy_impl has cognitive complexity 56 (threshold 15). Drivers by points: if/else 24, boolean chains 20, match/switch 12 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":3790}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb331b5f64e8bd37da3d4c95c4cbd58d0c069a35b94bc5c69a08ad59e2c5fea"}},{"ruleId":"D2","level":"warning","message":{"text":"BlankLinesChecker::check_line (cognitive 55): BlankLinesChecker::check_line has cognitive complexity 55 (threshold 15). Drivers by points: if/else 50, boolean chains 5 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ccad17bfbccc9fc0ca36f8d348b99464980838dc6421d5f9b0c4d75d5e0470"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportReplacer::without_renames (cognitive 55): ImportReplacer::without_renames has cognitive complexity 55 (threshold 15). Drivers by points: if/else 54, match/switch 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_import.rs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0dc4d88f14fb76e9f3458b36e89174a8262337b91434913c8ebc9b279fab4f1"}},{"ruleId":"D2","level":"warning","message":{"text":"verbatim::write_suppressed_statements (cognitive 55): verbatim::write_suppressed_statements has cognitive complexity 55 (threshold 15). Drivers by points: if/else 25, loops 24, match/switch 6 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/verbatim.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6dddfc6315f335cb12d368cf113190654affb48228a16a20bd208f5db52c43"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticSyntaxChecker::check_stmt (cognitive 55): SemanticSyntaxChecker::check_stmt has cognitive complexity 55 (threshold 15). Drivers by points: if/else 41, loops 12, boolean chains 1, match/switch 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"be97ec6135a018b5fe6b1cada1efb216fda4060117bdf6c1cb9030a2b3b58086"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticModel::simulate_runtime_load_at_location_in_scope (cognitive 55): SemanticModel::simulate_runtime_load_at_location_in_scope has cognitive complexity 55 (threshold 15). Drivers by points: if/else 37, match/switch 9, loops 5, boolean chains 4 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"5619a3ecc353a5079edf24b826156283b8ce8e9f5e6998087deec05e764b7b5d"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundSuperType::build (cognitive 54): BoundSuperType::build has cognitive complexity 54 (threshold 15). Drivers by points: match/switch 27, if/else 20, loops 7 (nesting depth added 28). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bound_super.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"74635a40ba8eb4c86a4828f0b3ff6712831cfaffc771e1913c78bce24d516317"}},{"ruleId":"D2","level":"warning","message":{"text":"InnerIntersectionBuilder::add_negative (cognitive 53): InnerIntersectionBuilder::add_negative has cognitive complexity 53 (threshold 15). Drivers by points: if/else 38, loops 10, boolean chains 4, match/switch 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa713b25018d60b0ecb3787fc25a68347f0fcced41cae81ccd27f32c1660bd36"}},{"ruleId":"D2","level":"warning","message":{"text":"suspicious_imports::suspicious_imports (cognitive 52): suspicious_imports::suspicious_imports has cognitive complexity 52 (threshold 15). Drivers by points: if/else 22, loops 20, match/switch 10 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/suspicious_imports.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21e4bcbd546bf8af0b1c64efb6a65f3b3cc9cd4928f6d1f9c50f818247ad089"}},{"ruleId":"D2","level":"warning","message":{"text":"use_pep604_annotation::non_pep604_annotation (cognitive 52): use_pep604_annotation::non_pep604_annotation has cognitive complexity 52 (threshold 15). Drivers by points: if/else 37, match/switch 7, boolean chains 4, loops 4 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/use_pep604_annotation.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"598324ed4beed487f14ceb79a010a2d659e6081a3f4acb03d6d7bbd9b145e8ce"}},{"ruleId":"D2","level":"warning","message":{"text":"UnicodeEscape::normalize (cognitive 52): UnicodeEscape::normalize has cognitive complexity 52 (threshold 15). Drivers by points: if/else 40, match/switch 8, loops 4 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1dfbdf00b41ecac8d11177c38eda06805c15319c824b17997308329e830aef"}},{"ruleId":"D2","level":"warning","message":{"text":"NotebookDocument::update (cognitive 52): NotebookDocument::update has cognitive complexity 52 (threshold 15). Drivers by points: if/else 32, loops 20 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/edit/notebook.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69ae8b63f313adc1f259ee2f546a7f07ab4b34d60f1c11ba481d473dce5726c"}},{"ruleId":"D2","level":"warning","message":{"text":"MainLoop::main_loop (cognitive 52): MainLoop::main_loop has cognitive complexity 52 (threshold 15). Drivers by points: if/else 34, match/switch 17, loops 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty/src/lib.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb5b7ad3940c45b03bc3e2c8a3ed726710503ecc16ebd5b170a12d69386a19f"}},{"ruleId":"D2","level":"warning","message":{"text":"ProjectFilesWalker::collect_vec (cognitive 52): ProjectFilesWalker::collect_vec has cognitive complexity 52 (threshold 15). Drivers by points: if/else 36, match/switch 11, boolean chains 5 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/walk.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25466c4692ab28fa3bc131ceb5b2ce33162d7415e7adb28ead5c5d38f048d99"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_place_load (cognitive 52): TypeInferenceBuilder::infer_place_load has cognitive complexity 52 (threshold 15). Drivers by points: if/else 34, boolean chains 8, match/switch 6, loops 4 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":9583}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1fa016b7364439506cf1684d4d06d373474ab3eb9c90c45018fc0080cccd8bf"}},{"ruleId":"D2","level":"warning","message":{"text":"format::warn_incompatible_formatter_settings (cognitive 51): format::warn_incompatible_formatter_settings has cognitive complexity 51 (threshold 15). Drivers by points: if/else 37, boolean chains 7, loops 4, match/switch 3 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"8886a8ce47fc1bbcc5870bae887fd46e6a1574dc00dbeaaf99bc902b54d09bb4"}},{"ruleId":"D2","level":"warning","message":{"text":"isort::format_import_block (cognitive 51): isort::format_import_block has cognitive complexity 51 (threshold 15). Drivers by points: if/else 25, loops 16, match/switch 7, boolean chains 3 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/mod.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"20aed677fb7ad327da44793c121f84c5411110b70131bd64a19c68f21b276915"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatImplicitConcatenatedStringFlat::new::merge_flags (cognitive 51): FormatImplicitConcatenatedStringFlat::new::merge_flags has cognitive complexity 51 (threshold 15). Drivers by points: if/else 42, loops 4, match/switch 3, boolean chains 2 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/implicit.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"303a3fd93517e0666ef813c78cc1dafb929198cbf8def5e6ce4411b8d4b6f9e9"}},{"ruleId":"D2","level":"warning","message":{"text":"Mro::of_static_class (cognitive 51): Mro::of_static_class has cognitive complexity 51 (threshold 15). Drivers by points: if/else 33, loops 8, match/switch 8, boolean chains 2 (nesting depth added 24). Of this number, 49 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/mro.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c24a9db84de363e7b3f884a778438b6f71ca6cf50efcd3deb2d1003c65ada8"}},{"ruleId":"D2","level":"warning","message":{"text":"render::pre_process (cognitive 50): render::pre_process has cognitive complexity 50 (threshold 15). Drivers by points: if/else 36, match/switch 10, loops 3, boolean chains 1 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":2712}}}],"partialFingerprints":{"codehealthFindingId/v1":"24963a31ac973ce7f469626c2d33d9adbbc1aa694971724d6d3773bca2516017"}},{"ruleId":"D2","level":"warning","message":{"text":"general::render_with_indentation_mode (cognitive 50): general::render_with_indentation_mode has cognitive complexity 50 (threshold 15). Drivers by points: if/else 33, boolean chains 9, match/switch 7, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/docstring/markdown/general.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8b458a4d79b5c186139c5b47a4f3f03e9cdb88e10e11f0d549ffa0370d9d23"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_dict_expression (cognitive 50): TypeInferenceBuilder::infer_dict_expression has cognitive complexity 50 (threshold 15). Drivers by points: if/else 38, loops 11, boolean chains 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6791}}}],"partialFingerprints":{"codehealthFindingId/v1":"93067f91bb5a5b992153f1e06ffed058db702b06566072b3ce753bfe9c95b511"}},{"ruleId":"D2","level":"warning","message":{"text":"enums::enum_metadata (cognitive 50): enums::enum_metadata has cognitive complexity 50 (threshold 15). Drivers by points: if/else 33, match/switch 12, boolean chains 3, loops 2 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/enums.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae31bdfdfb19c9e34497e9e3ca53b295e3f4b574aa7c0590e643d654fab0b53"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceMap::annotated_lines (cognitive 49): SourceMap::annotated_lines has cognitive complexity 49 (threshold 15). Drivers by points: if/else 28, loops 13, boolean chains 8 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/source_map.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ff4632e847b0938e58ee0a57b8ede7ea4cb02048430228e7e71c7155064583"}},{"ruleId":"D2","level":"warning","message":{"text":"suspicious_function_call::suspicious_function (cognitive 49): suspicious_function_call::suspicious_function has cognitive complexity 49 (threshold 15). Drivers by points: if/else 36, boolean chains 6, match/switch 6, loops 1 (nesting depth added 24). Of this number, 38 points are the body\u0027s own statements and 11 belong to 4 function items declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/suspicious_function_call.rs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d5beb77c077bfe7e266623e6d5a760a3cc6d736360559c35dd38ef707297d11"}},{"ruleId":"D2","level":"warning","message":{"text":"missing_whitespace_around_operator::missing_whitespace_around_operator (cognitive 49): missing_whitespace_around_operator::missing_whitespace_around_operator has cognitive complexity 49 (threshold 15). Drivers by points: if/else 37, boolean chains 6, match/switch 5, loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"0759c2122e547e9d23f1f99a72202ceb6417c32ad1012ec6c97f8af31b8bd7f4"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvedPythonType::from (cognitive 49): ResolvedPythonType::from has cognitive complexity 49 (threshold 15). Drivers by points: match/switch 34, if/else 15 (nesting depth added 30). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/type_inference.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a40df9badeaf4c394281d34f8e58d75bcc8ec715a6af09c1e1d5fb5a78fff4"}},{"ruleId":"D2","level":"warning","message":{"text":"unused::check_unused_suppressions (cognitive 49): unused::check_unused_suppressions has cognitive complexity 49 (threshold 15). Drivers by points: if/else 29, loops 9, boolean chains 7, match/switch 4 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/suppression/unused.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0442af49a87778243e40c3914460cf57ddf4cdc0359bef80972caaf03803b120"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_lambda::unnecessary_lambda (cognitive 48): unnecessary_lambda::unnecessary_lambda has cognitive complexity 48 (threshold 15). Drivers by points: if/else 38, match/switch 5, loops 4, boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unnecessary_lambda.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dff5a89cadf7f277e29c770f8b0fa61289253b53feef7219a8dfb6673de946b"}},{"ruleId":"D2","level":"warning","message":{"text":"indent::indent (cognitive 48): indent::indent has cognitive complexity 48 (threshold 15). Drivers by points: if/else 37, boolean chains 7, loops 4 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/indent.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a60e87bd15b90772d76db03697436ce4ef7eeb6907affdd113f2e517d708a8"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::own_instance_member (cognitive 48): StaticClassLiteral::own_instance_member has cognitive complexity 48 (threshold 15). Drivers by points: if/else 43, boolean chains 3, match/switch 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2902}}}],"partialFingerprints":{"codehealthFindingId/v1":"20250373544c0018cd8748f2e6a21aa896f7ea968895e70c135ae650dc4eab2b"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassType::own_class_member (cognitive 48): ClassType::own_class_member has cognitive complexity 48 (threshold 15). Drivers by points: if/else 32, loops 9, match/switch 6, boolean chains 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":1657}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c022777dbde9fe1491991ccc76da5fa671dd1bf44024a4e64212f911cf92a2"}},{"ruleId":"D2","level":"warning","message":{"text":"unused_bindings::unused_bindings (cognitive 48): unused_bindings::unused_bindings has cognitive complexity 48 (threshold 15). Drivers by points: if/else 31, boolean chains 10, loops 7 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support/unused_bindings.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6f18a6be69ab30cc422b7ff93f1ceb30a2a2a0e633e65f2eee57da9785059b"}},{"ruleId":"D2","level":"warning","message":{"text":"runtime_import_in_type_checking_block::runtime_import_in_type_checking_block (cognitive 47): runtime_import_in_type_checking_block::runtime_import_in_type_checking_block has cognitive complexity 47 (threshold 15). Drivers by points: if/else 29, loops 11, boolean chains 5, match/switch 2 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/runtime_import_in_type_checking_block.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f985cd73e3d4f8adec71af3d1b4f966da3e64e0610d330109a3ae5b8b832ec9d"}},{"ruleId":"D2","level":"warning","message":{"text":"transformer::walk_expr (cognitive 47): transformer::walk_expr has cognitive complexity 47 (threshold 15). Drivers by points: loops 30, if/else 13, match/switch 4 (nesting depth added 23). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/transformer.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"20315b5d0888d116e45030d95f4bf659f2c3c92cc628783fc20a52c960c8e6bc"}},{"ruleId":"D2","level":"warning","message":{"text":"visitor::walk_expr (cognitive 47): visitor::walk_expr has cognitive complexity 47 (threshold 15). Drivers by points: loops 30, if/else 13, match/switch 4 (nesting depth added 23). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"507443146a88f085d3c242436c5ec300cc13f8943eee5a27a81b0b163ea5370c"}},{"ruleId":"D2","level":"warning","message":{"text":"Lexer::lex_interpolated_string_middle_or_end (cognitive 47): Lexer::lex_interpolated_string_middle_or_end has cognitive complexity 47 (threshold 15). Drivers by points: if/else 42, boolean chains 2, match/switch 2, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f6cc8c7ee1b321acf15f025a3869fb66281a7e657c970f94b9140f2b746dac"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate (cognitive 47): AssignmentAttributeWriteEvaluator::evaluate has cognitive complexity 47 (threshold 15). Drivers by points: if/else 37, loops 4, boolean chains 3, match/switch 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0961d6693fc8655731ee312cf4944242d03005b7d6a57b6a30675298093b672"}},{"ruleId":"D2","level":"warning","message":{"text":"comparisons::infer_binary_type_comparison_inner (cognitive 47): comparisons::infer_binary_type_comparison_inner has cognitive complexity 47 (threshold 15). Drivers by points: match/switch 22, loops 15, if/else 8, boolean chains 2 (nesting depth added 20). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/comparisons.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ead0e31603960a21ee22f22e5be814ea64902d136a9a2545c40698e97f12ec"}},{"ruleId":"D2","level":"warning","message":{"text":"FStringConversion::try_convert (cognitive 46): FStringConversion::try_convert has cognitive complexity 46 (threshold 15). Drivers by points: if/else 22, match/switch 17, loops 4, boolean chains 3 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a8c4a639e3132fac7c85072c6206fc139290522d182d98e043ac8a10c181967"}},{"ruleId":"D2","level":"warning","message":{"text":"outdated_version_block::outdated_version_block (cognitive 46): outdated_version_block::outdated_version_block has cognitive complexity 46 (threshold 15). Drivers by points: if/else 27, match/switch 15, boolean chains 3, loops 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/outdated_version_block.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"c735305fcabd5461e6817414901389b5bdf66844de9ec3821a7f420d05dbd581"}},{"ruleId":"D2","level":"warning","message":{"text":"configuration::warn_about_deprecated_top_level_lint_options (cognitive 46): configuration::warn_about_deprecated_top_level_lint_options has cognitive complexity 46 (threshold 15). Drivers by points: if/else 46. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/configuration.rs"},"region":{"startLine":1479}}}],"partialFingerprints":{"codehealthFindingId/v1":"be982f2668fbe97a611a7a381473a1bba2e771b01792fbcc2b64cc8b61dde54f"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolVisitor::visit_stmt (cognitive 46): SymbolVisitor::visit_stmt has cognitive complexity 46 (threshold 15). Drivers by points: if/else 38, loops 6, boolean chains 1, match/switch 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/symbols.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8142f0497363bed863e5667e1db3e594928b17ea2ec1fd815a2c6af6f8aa6a6"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_function_body (cognitive 46): TypeInferenceBuilder::infer_function_body has cognitive complexity 46 (threshold 15). Drivers by points: if/else 33, loops 7, boolean chains 3, match/switch 3 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e6578c4704de037ee95aa8b76797c24726196b7dc46799be07d8da7722ef76"}},{"ruleId":"D2","level":"warning","message":{"text":"AllMembers::extend_with_type (cognitive 46): AllMembers::extend_with_type has cognitive complexity 46 (threshold 15). Drivers by points: if/else 22, match/switch 18, boolean chains 4, loops 2 (nesting depth added 23). Of this number, 43 points are the body\u0027s own statements and 3 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/list_members.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d45053edbe5a0e5d919c5737f503b6161ad13b6abf72788793f60808775cd0e"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostics::lint_path (cognitive 45): diagnostics::lint_path has cognitive complexity 45 (threshold 15). Drivers by points: if/else 28, match/switch 16, boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/diagnostics.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"4177e346c5b096a2c1f1d467f01f693e9dc3cbb6150dfd47fd60760e86168af3"}},{"ruleId":"D2","level":"warning","message":{"text":"SuspiciousVariablesVisitor::visit_expr (cognitive 45): SuspiciousVariablesVisitor::visit_expr has cognitive complexity 45 (threshold 15). Drivers by points: if/else 30, loops 11, match/switch 3, boolean chains 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a3f3fb258235a9cc416e0b27d1291e7525106d78559992096411d4aaf5c831"}},{"ruleId":"D2","level":"warning","message":{"text":"printf_string_formatting::clean_params_dictionary (cognitive 45): printf_string_formatting::clean_params_dictionary has cognitive complexity 45 (threshold 15). Drivers by points: if/else 40, loops 5 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7703036fe037d1fe46ea344a2dc2200d3c4982d10d1bb0562a4d2b3dfbe9da"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_parameters (cognitive 45): Parser::parse_parameters has cognitive complexity 45 (threshold 15). Drivers by points: if/else 39, boolean chains 5, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":3310}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb75291414b9d3567ffea98c07a3ca5c3d97ee42fbda2b199a0ef7caff120b9"}},{"ruleId":"D2","level":"warning","message":{"text":"DisjointnessChecker::check_type_pair (cognitive 45): DisjointnessChecker::check_type_pair has cognitive complexity 45 (threshold 15). Drivers by points: if/else 22, match/switch 12, boolean chains 11 (nesting depth added 11). Of this number, 43 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":2695}}}],"partialFingerprints":{"codehealthFindingId/v1":"75262b29838a73cf2968fa2b326d2773368aad894645fa6e6a0c1483db3c1c70"}},{"ruleId":"D2","level":"warning","message":{"text":"render::render_title (cognitive 44): render::render_title has cognitive complexity 44 (threshold 15). Drivers by points: if/else 35, boolean chains 5, loops 3, match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d14b97d96d0929e5cd87bc1ae239148cf8e5eeb72f3214403abb11cd6e1a0e"}},{"ruleId":"D2","level":"warning","message":{"text":"printf_string_formatting::handle_part (cognitive 44): printf_string_formatting::handle_part has cognitive complexity 44 (threshold 15). Drivers by points: if/else 26, match/switch 14, boolean chains 4 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3cb805892323e532b67493fc72a4273d71e2a9090b043ca97a9ff8ca30bf59"}},{"ruleId":"D2","level":"warning","message":{"text":"visitor::walk_stmt (cognitive 44): visitor::walk_stmt has cognitive complexity 44 (threshold 15). Drivers by points: if/else 23, loops 20, match/switch 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"d77000f1188aa12af24fcdff25e343da2bda2b9e114b8bf24ca23233c6556e49"}},{"ruleId":"D2","level":"warning","message":{"text":"PortableGlobPattern::parse (cognitive 44): PortableGlobPattern::parse has cognitive complexity 44 (threshold 15). Drivers by points: if/else 31, loops 7, boolean chains 3, match/switch 3 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/glob/portable.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"7da9904ab3ec875b2efab0249a4fe620a942b30918a17d32d67dd04438c9dcad"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticIndexBuilder::pop_scope (cognitive 44): SemanticIndexBuilder::pop_scope has cognitive complexity 44 (threshold 15). Drivers by points: if/else 30, loops 10, boolean chains 4 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"aebf3d4926237c4d0285a3390673cdcdd604dfa18d030f55c7d0541ed42c97b8"}},{"ruleId":"D2","level":"warning","message":{"text":"CallableBinding::report_diagnostics (cognitive 44): CallableBinding::report_diagnostics has cognitive complexity 44 (threshold 15). Drivers by points: if/else 36, match/switch 5, loops 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":4181}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa22042b1b8b657d773dc8a3efcff7852c0330c98e6e06b176038759d557ae9"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_builtins_type_call (cognitive 44): TypeInferenceBuilder::infer_builtins_type_call has cognitive complexity 44 (threshold 15). Drivers by points: if/else 35, boolean chains 3, loops 3, match/switch 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_call.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b8eb7d3f4e8b5db0c6338e962f8966bc07b1e20619512b551f720795d8200c"}},{"ruleId":"D2","level":"warning","message":{"text":"resolve::dynamic_resolution_paths (cognitive 43): resolve::dynamic_resolution_paths has cognitive complexity 43 (threshold 15). Drivers by points: if/else 27, match/switch 8, loops 6, boolean chains 2 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/resolve.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"b577969e7c9fe8bafad1708ea0df9c1185d5e708aaa6adcf973b9ebd1dab64da"}},{"ruleId":"D2","level":"warning","message":{"text":"UnionBuilder::push_type (cognitive 43): UnionBuilder::push_type has cognitive complexity 43 (threshold 15). Drivers by points: if/else 30, boolean chains 8, loops 3, match/switch 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a6bb0b83592a1b982dade101d32a0b4a72b660cb1dec3eb4f61fc497d5ff16"}},{"ruleId":"D2","level":"warning","message":{"text":"InlayHintVisitor::visit_expr (cognitive 42): InlayHintVisitor::visit_expr has cognitive complexity 42 (threshold 15). Drivers by points: if/else 38, loops 2, boolean chains 1, match/switch 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/inlay_hints.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cab9c47c6055502a53adc52172e533edad035d34cce2ac0a5b5ce1ad95bff17"}},{"ruleId":"D2","level":"warning","message":{"text":"CallableBinding::filter_overloads_using_any_or_unknown (cognitive 42): CallableBinding::filter_overloads_using_any_or_unknown has cognitive complexity 42 (threshold 15). Drivers by points: if/else 25, loops 14, match/switch 3 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":3854}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72439d49da39041d369c620fe3f606562137f2e68937d063dcd102103c3fbc7"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentTypeChecker::infer_specialization (cognitive 42): ArgumentTypeChecker::infer_specialization has cognitive complexity 42 (threshold 15). Drivers by points: if/else 28, loops 11, boolean chains 2, match/switch 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":5300}}}],"partialFingerprints":{"codehealthFindingId/v1":"34dd5196a145debf61c13cdf94338dfbe54a376a86bc0482619b45319452ed4a"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::own_fields (cognitive 42): StaticClassLiteral::own_fields has cognitive complexity 42 (threshold 15). Drivers by points: if/else 35, match/switch 3, boolean chains 2, loops 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2321}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb71157a20a4c3a4f064171db0b86496cd3abdb5294688d02335535c1884fea7"}},{"ruleId":"D2","level":"warning","message":{"text":"PathBounds::default_solve (cognitive 42): PathBounds::default_solve has cognitive complexity 42 (threshold 15). Drivers by points: if/else 37, boolean chains 2, loops 2, match/switch 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":3847}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9c3317561e18bd486067256226dff2db51f080a5403f901f2e35b5dad2690f"}},{"ruleId":"D2","level":"warning","message":{"text":"format::format (cognitive 41): format::format has cognitive complexity 41 (threshold 15). Drivers by points: if/else 28, match/switch 7, boolean chains 4, loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"defc2058017654a70a30a95162fc1c7e394be480a5542ec85b8e865ba987d2f1"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_fill_entries (cognitive 41): Printer::print_fill_entries has cognitive complexity 41 (threshold 15). Drivers by points: if/else 29, loops 6, match/switch 5, boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"01d8af6c14da661ed145c6b2db4cbe468311a6a34c584d47e1eeb642ddced3aa"}},{"ruleId":"D2","level":"warning","message":{"text":"BlockBuilder::visit_stmt (cognitive 41): BlockBuilder::visit_stmt has cognitive complexity 41 (threshold 15). Drivers by points: loops 33, if/else 6, boolean chains 1, match/switch 1 (nesting depth added 18). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/block.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e870dd3d75da1d007e0cf6c2a52d94c6f9f66fa19edec4a584c377ac77c773"}},{"ruleId":"D2","level":"warning","message":{"text":"order::order_imports (cognitive 41): order::order_imports has cognitive complexity 41 (threshold 15). Drivers by points: if/else 26, loops 10, match/switch 5 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/order.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e735117c6521e450c7fa70e4952bb8c916b908c3cca619f063a749e6c05c248"}},{"ruleId":"D2","level":"warning","message":{"text":"logical_lines::check_logical_lines (cognitive 41): logical_lines::check_logical_lines has cognitive complexity 41 (threshold 15). Drivers by points: if/else 37, boolean chains 3, loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/logical_lines.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8f6b2f6d8c765a9251664f0cb3169eeaa813f1d6879ad0a22ea4c26984bbf4"}},{"ruleId":"D2","level":"warning","message":{"text":"shell_injection::shell_injection (cognitive 41): shell_injection::shell_injection has cognitive complexity 41 (threshold 15). Drivers by points: if/else 37, match/switch 3, boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/shell_injection.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"277fd81e9b6b1621bb8b269a5b7821ea9c33931ad575d26ca92ec1260e8f5434"}},{"ruleId":"D2","level":"warning","message":{"text":"transformer::walk_stmt (cognitive 41): transformer::walk_stmt has cognitive complexity 41 (threshold 15). Drivers by points: if/else 20, loops 20, match/switch 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/transformer.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"08ebe76f0e9626d208f20c91fa3e292fc0fd8c218213d6f34b057181cbce3713"}},{"ruleId":"D2","level":"warning","message":{"text":"static_class::check_class_namespace_against_metaclass_members (cognitive 41): static_class::check_class_namespace_against_metaclass_members has cognitive complexity 41 (threshold 15). Drivers by points: if/else 29, loops 12 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"414bcf7632d0d2ddbd0a48f90e149491c50b436983c3ed3176fe365aa79deba1"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::extract_unpacked_typed_dict_from_value_type (cognitive 41): typed_dict::extract_unpacked_typed_dict_from_value_type has cognitive complexity 41 (threshold 15). Drivers by points: if/else 25, loops 15, match/switch 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d14f1216904c4933f5acebf5babfed48fdf4e90091905ef78813027112d4f3a"}},{"ruleId":"D2","level":"warning","message":{"text":"fixes::fix_all (cognitive 41): fixes::fix_all has cognitive complexity 41 (threshold 15). Drivers by points: if/else 30, loops 8, match/switch 3 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/fixes.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"e309d50f2d7e4430003b972db3bbb89adbf1f1b7311e3e43653dc502930a27aa"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatInterpolatedElement::fmt (cognitive 40): FormatInterpolatedElement::fmt has cognitive complexity 40 (threshold 15). Drivers by points: if/else 27, loops 5, match/switch 5, boolean chains 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/other/interpolated_string_element.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b96aa1bf54a809812896a503f43760c3e2ba50982d0b789910a0b59527ff24"}},{"ruleId":"D2","level":"warning","message":{"text":"module_glob::glob_to_regex (cognitive 40): module_glob::glob_to_regex has cognitive complexity 40 (threshold 15). Drivers by points: if/else 33, loops 5, boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/module_glob.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11346a31dd8abb0bdfe21ec22914a04508631a71f00b3cd4a6d95433daffe89"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::try_bool_impl (cognitive 40): Type::try_bool_impl has cognitive complexity 40 (threshold 15). Drivers by points: if/else 23, match/switch 13, boolean chains 3, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bool.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1593b82b8a1e356cd8ee883bd56e31f70251709cf87df56765da9000f7e6e21"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::subscript (cognitive 40): Type::subscript has cognitive complexity 40 (threshold 15). Drivers by points: if/else 15, boolean chains 13, match/switch 12 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/subscript.rs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"037d7c447fa6c48945f8fb8c65fc66c3b67f8bf4341e9bd578f1c54a782792c8"}},{"ruleId":"D2","level":"warning","message":{"text":"overrides::check_inherited_method_conflicts (cognitive 40): overrides::check_inherited_method_conflicts has cognitive complexity 40 (threshold 15). Drivers by points: if/else 24, loops 8, boolean chains 4, match/switch 4 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/overrides.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8af187201cfe18aa047ebb1211cdc7f73a30aba1c1b0cba5e33aa91652c878e"}},{"ruleId":"D2","level":"warning","message":{"text":"ReFunc::from_call_expr (cognitive 39): ReFunc::from_call_expr has cognitive complexity 39 (threshold 15). Drivers by points: if/else 22, loops 10, match/switch 4, boolean chains 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/unnecessary_regular_expression.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5443028c6b18c392377d73bf0164ed8d38ea507e31275d3c10f188d53dc7eba"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonFilesVisitor::visit (cognitive 39): PythonFilesVisitor::visit has cognitive complexity 39 (threshold 15). Drivers by points: if/else 29, match/switch 10 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"3904ee5fab106e3dfe218d48275bab100397bc1b07f19651f813327e5138da36"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_dynamic_type_bases (cognitive 39): TypeInferenceBuilder::validate_dynamic_type_bases has cognitive complexity 39 (threshold 15). Drivers by points: if/else 31, match/switch 6, boolean chains 1, loops 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/dynamic_class.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9bb04dc0c53d85bee55ec93ad28124aac16f1175f73b92449670e6854ec1fec"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostic::report_inconsistent_generic_bases (cognitive 39): diagnostic::report_inconsistent_generic_bases has cognitive complexity 39 (threshold 15). Drivers by points: if/else 33, loops 3, match/switch 2, boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":3592}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cf8c009f47c9bba1b5374e96487e5cd84560187951fcf0c040b3b5b50c90ea"}},{"ruleId":"D2","level":"warning","message":{"text":"Suppressions::check_suppressions (cognitive 38): Suppressions::check_suppressions has cognitive complexity 38 (threshold 15). Drivers by points: if/else 31, loops 5, boolean chains 2 (nesting depth added 16). Of this number, 27 points are the body\u0027s own statements and 11 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b1c8d46b889edd2dc965340556e8b2468f79c026597c412b5cbc1ad6d7f2e3"}},{"ruleId":"D2","level":"warning","message":{"text":"missing_maxsplit_arg::missing_maxsplit_arg (cognitive 38): missing_maxsplit_arg::missing_maxsplit_arg has cognitive complexity 38 (threshold 15). Drivers by points: if/else 25, match/switch 7, loops 5, boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/missing_maxsplit_arg.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf8566af836cb848baa911957b8c2611ea152df8fc5f43bde2f1dfbe46d6a76"}},{"ruleId":"D2","level":"warning","message":{"text":"missing_fstring_syntax::should_be_fstring (cognitive 38): missing_fstring_syntax::should_be_fstring has cognitive complexity 38 (threshold 15). Drivers by points: if/else 30, loops 8 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/missing_fstring_syntax.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7973b44284c15ab75b4821142ebbf7690d113a52d3293aea6fd30f26d4b219"}},{"ruleId":"D2","level":"warning","message":{"text":"xcom_pull_in_template_string::parse_xcom_pull_template (cognitive 38): xcom_pull_in_template_string::parse_xcom_pull_template has cognitive complexity 38 (threshold 15). Drivers by points: if/else 30, boolean chains 4, match/switch 3, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/xcom_pull_in_template_string.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"97da9ea568ad60e94cdd1947011ee356feb5af031349fcfea79135636bb9d624"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::is_django_model_import::match_model_import (cognitive 38): helpers::is_django_model_import::match_model_import has cognitive complexity 38 (threshold 15). Drivers by points: if/else 38 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pep8_naming/helpers.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"12350f39b33eb2fdb95b3f65ddd31309405f7bb300f9ae7e271fef2796bed15d"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchPatternVisitor::visit_pattern (cognitive 38): MatchPatternVisitor::visit_pattern has cognitive complexity 38 (threshold 15). Drivers by points: if/else 24, loops 12, boolean chains 1, match/switch 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":2122}}}],"partialFingerprints":{"codehealthFindingId/v1":"907bde906873c4e1581f9e2f7bfc8a17c6922eada55b844321e049aa95ddc0ae"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::apply_type_mapping_impl (cognitive 38): Type::apply_type_mapping_impl has cognitive complexity 38 (threshold 15). Drivers by points: match/switch 17, if/else 14, loops 5, boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6507}}}],"partialFingerprints":{"codehealthFindingId/v1":"2747cc44da9cbaaff755b11365b09e4f597a873866a6cf5f00384a9818664732"}},{"ruleId":"D2","level":"warning","message":{"text":"GithubRenderer::render (cognitive 37): GithubRenderer::render has cognitive complexity 37 (threshold 15). Drivers by points: if/else 21, loops 8, match/switch 5, boolean chains 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/github.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5355d77db0b40d43c7e7e37c332612fc8b77c66580674ed66697d2024562fa"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::visit_deferred_string_type_definitions (cognitive 37): Checker::visit_deferred_string_type_definitions has cognitive complexity 37 (threshold 15). Drivers by points: if/else 26, match/switch 7, loops 3, boolean chains 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":2996}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a0d98be19424aa42b180825712c04da2976b2d348a470b15dd8f033ad5801c"}},{"ruleId":"D2","level":"warning","message":{"text":"blank_before_after_class::blank_before_after_class (cognitive 37): blank_before_after_class::blank_before_after_class has cognitive complexity 37 (threshold 15). Drivers by points: if/else 31, loops 4, boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/blank_before_after_class.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97904e712ca0ff758e86a221ab5e02e5766b9ef3065a7812c2164ec4183c63e"}},{"ruleId":"D2","level":"warning","message":{"text":"unused_import::unused_import (cognitive 37): unused_import::unused_import has cognitive complexity 37 (threshold 15). Drivers by points: if/else 26, boolean chains 6, loops 5 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/unused_import.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f737b01c18b346b8d2eca35de4ca51d2fbbf22cecdd0991c1a2509c1439e9b1"}},{"ruleId":"D2","level":"warning","message":{"text":"Terminal::from_body (cognitive 37): Terminal::from_body has cognitive complexity 37 (threshold 15). Drivers by points: if/else 33, match/switch 3, loops 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/terminal.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"929d4660f248ea7f278b93dd5dcedec4ddddc2a2415593991b50aceee67e1b0b"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate_instance (cognitive 37): AssignmentAttributeWriteEvaluator::evaluate_instance has cognitive complexity 37 (threshold 15). Drivers by points: if/else 23, boolean chains 7, match/switch 7 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0586904a34e2a0226fb66a18b904561baa8c650cff1e043f8f7b05a49e70a9f1"}},{"ruleId":"D2","level":"warning","message":{"text":"Server::main_loop (cognitive 37): Server::main_loop has cognitive complexity 37 (threshold 15). Drivers by points: if/else 28, match/switch 8, loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/main_loop.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"8716fcbb635f6396d65902ddf7866385e939d4fdf647feee182beb114ea895a5"}},{"ruleId":"D2","level":"warning","message":{"text":"ConciseRenderer::render (cognitive 36): ConciseRenderer::render has cognitive complexity 36 (threshold 15). Drivers by points: if/else 30, match/switch 3, boolean chains 2, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/concise.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ad1a88f7a4c3becbc8257a84d5984a21d8c6d47338ce6aff00afeb169b6baf0"}},{"ruleId":"D2","level":"warning","message":{"text":"LoopMutationsVisitor::visit_stmt (cognitive 36): LoopMutationsVisitor::visit_stmt has cognitive complexity 36 (threshold 15). Drivers by points: if/else 29, loops 4, boolean chains 2, match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/loop_iterator_mutation.rs"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"186792299637deff7217045c091080b301c754418e9543498d7113486292c68e"}},{"ruleId":"D2","level":"warning","message":{"text":"LinePreprocessor::next (cognitive 36): LinePreprocessor::next has cognitive complexity 36 (threshold 15). Drivers by points: if/else 29, boolean chains 3, match/switch 3, loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1ef0df5f8cce16c6f3550fa081eeb3abe611cf63acf56a44a23188b07ead5e2"}},{"ruleId":"D2","level":"warning","message":{"text":"BlankLinesChecker::check_lines (cognitive 36): BlankLinesChecker::check_lines has cognitive complexity 36 (threshold 15). Drivers by points: if/else 33, match/switch 2, loops 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"bebd1088655015f04a0bcb411b377adceb8f0d3e14257bb3bf55dbf161b85f07"}},{"ruleId":"D2","level":"warning","message":{"text":"bad_generator_return_type::bad_generator_return_type (cognitive 36): bad_generator_return_type::bad_generator_return_type has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17, match/switch 15, boolean chains 2, loops 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/bad_generator_return_type.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8a02287ed510188459e688a9339174e744276eb0d1fb1202f9ad6d2191cf60"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_fstring_expression (cognitive 36): TypeInferenceBuilder::infer_fstring_expression has cognitive complexity 36 (threshold 15). Drivers by points: if/else 19, loops 10, match/switch 6, boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6458}}}],"partialFingerprints":{"codehealthFindingId/v1":"466b4e5e21af02921cd37674084f5e84dfc2afcdae0f3022e7363a2c0fd291eb"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::validate_merged_dict_literal (cognitive 36): typed_dict::validate_merged_dict_literal has cognitive complexity 36 (threshold 15). Drivers by points: if/else 35, loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":2648}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5ebba35b5b4f32d1eeb7bebafc835d4dee1625abf427b546459b8d7311dd3b"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostics::lint_stdin (cognitive 35): diagnostics::lint_stdin has cognitive complexity 35 (threshold 15). Drivers by points: if/else 27, match/switch 8 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/diagnostics.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"8639c80b185570311f42d82c0dc9a54e2e93998b84126821c3d3ea12e6e91978"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyVisitor::visit_stmt (cognitive 35): BodyVisitor::visit_stmt has cognitive complexity 35 (threshold 15). Drivers by points: if/else 24, loops 10, match/switch 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"f656b8fe23f79933d4698ac16c2cbe59db3773574bcd859d3dbcf1e98c87ef1c"}},{"ruleId":"D2","level":"warning","message":{"text":"fixes::fix_unnecessary_call_around_sorted (cognitive 35): fixes::fix_unnecessary_call_around_sorted has cognitive complexity 35 (threshold 15). Drivers by points: if/else 33, boolean chains 1, match/switch 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_comprehensions/fixes.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c1d310cf74071c6cf0343a8822c25b9c1d7f6487da0555633c57681bbf3b8c"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::handle_implicitly_concatenated_strings (cognitive 35): Parser::handle_implicitly_concatenated_strings has cognitive complexity 35 (threshold 15). Drivers by points: match/switch 15, loops 10, if/else 9, boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"014a1a1109eaf1c1d721b852d846161e9d7428ef8304b4f29d671bae4797c10e"}},{"ruleId":"D2","level":"warning","message":{"text":"IterationError::report_diagnostic (cognitive 35): IterationError::report_diagnostic has cognitive complexity 35 (threshold 15). Drivers by points: if/else 23, match/switch 9, loops 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"c189876a177dd34c5f05801ac58d5ded185ebcf5a5db30b7ba976823e886e327"}},{"ruleId":"D2","level":"warning","message":{"text":"UselessSuppressionComments::check_suppression_comment (cognitive 34): UselessSuppressionComments::check_suppression_comment has cognitive complexity 34 (threshold 15). Drivers by points: if/else 30, boolean chains 4 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/invalid_formatter_suppression_comment.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a96fa824f4e3ff7086e8bde22e90cf9113704b6992da8c326d8e4b6eb3c95d6"}},{"ruleId":"D2","level":"warning","message":{"text":"tokens::check_tokens (cognitive 34): tokens::check_tokens has cognitive complexity 34 (threshold 15). Drivers by points: if/else 24, match/switch 6, loops 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/tokens.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"97428f1bfa1f8b173c3f60b3b1c9f65f05da751dfa22aa3b7d677ac51db9f8e2"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_dunder_call::unnecessary_dunder_call (cognitive 34): unnecessary_dunder_call::unnecessary_dunder_call has cognitive complexity 34 (threshold 15). Drivers by points: if/else 30, boolean chains 2, match/switch 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unnecessary_dunder_call.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"f289b3b986219b71745fb989e8f4dd414745772b55f93e52dcd05dfb310e0e30"}},{"ruleId":"D2","level":"warning","message":{"text":"ambiguous_unicode_character::ambiguous_unicode_character (cognitive 34): ambiguous_unicode_character::ambiguous_unicode_character has cognitive complexity 34 (threshold 15). Drivers by points: if/else 23, loops 9, boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/ambiguous_unicode_character.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20fa94342402f7845d506b32a414a82268934706d655ca152249b1190a885a6"}},{"ruleId":"D2","level":"warning","message":{"text":"unused_variable::remove_unused_variable (cognitive 34): unused_variable::remove_unused_variable has cognitive complexity 34 (threshold 15). Drivers by points: if/else 30, boolean chains 2, loops 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/unused_variable.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e92a748bf40f33d1333e7a001a33a23d3619d5c540c046e781b58f849eafa75"}},{"ruleId":"D2","level":"warning","message":{"text":"unresolved_references::unresolved_references (cognitive 34): unresolved_references::unresolved_references has cognitive complexity 34 (threshold 15). Drivers by points: if/else 33, loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/unresolved_references.rs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"78ee9608aa9551c9d157eccc3c60d29b4dca7124a5ef76a842ae303ad69eecbc"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportStatement::detect (cognitive 34): ImportStatement::detect has cognitive complexity 34 (threshold 15). Drivers by points: if/else 20, match/switch 7, boolean chains 5, loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":2502}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c836ab4a8e6c3355180aabdf462f226bf3c952f248544f2611cb15e21ce5123"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplaySpecialization::fmt_normal (cognitive 34): DisplaySpecialization::fmt_normal has cognitive complexity 34 (threshold 15). Drivers by points: if/else 26, loops 5, match/switch 3 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2007}}}],"partialFingerprints":{"codehealthFindingId/v1":"786c567b2581341140991c1f9f80dee10bc64273bbd30e1168107210d6b59b88"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayUnionType::fmt_detailed (cognitive 34): DisplayUnionType::fmt_detailed has cognitive complexity 34 (threshold 15). Drivers by points: if/else 26, loops 6, boolean chains 1, match/switch 1 (nesting depth added 15). Of this number, 32 points are the body\u0027s own statements and 2 belong to 2 function items declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2693}}}],"partialFingerprints":{"codehealthFindingId/v1":"18185008d069dfeccde2df00aa312dc2f734d08644e9bbc27d556f428bc2d73e"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_typevartuple (cognitive 34): TypeInferenceBuilder::infer_legacy_typevartuple has cognitive complexity 34 (threshold 15). Drivers by points: if/else 23, match/switch 8, boolean chains 2, loops 1 (nesting depth added 15). Of this number, 33 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"108a7b84b47b36e6d53c13c4691bd75a41ceeeb5760265efab5bb3a0a979e428"}},{"ruleId":"D2","level":"warning","message":{"text":"paramspec_validation::validate_paramspec_components (cognitive 34): paramspec_validation::validate_paramspec_components has cognitive complexity 34 (threshold 15). Drivers by points: if/else 31, boolean chains 2, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/paramspec_validation.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddbf755baca1a69720d43a9329c21f3de9d8b2bf8e229453ceaf52f3336141b"}},{"ruleId":"D2","level":"warning","message":{"text":"resolve_definition::map_stub_definition (cognitive 34): resolve_definition::map_stub_definition has cognitive complexity 34 (threshold 15). Drivers by points: if/else 23, loops 9, boolean chains 1, match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":2388}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bab8b62ec3d5ca78816453ae56d6042fff21624c0e4cd7f6108c6660dd1ff59"}},{"ruleId":"D2","level":"warning","message":{"text":"SuppressionsBuilder::load_from_tokens (cognitive 33): SuppressionsBuilder::load_from_tokens has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17, loops 7, match/switch 6, boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba0776e8872da28b436adfbb31e1d8cf06696edeb34556dfc210a1a0710488f"}},{"ruleId":"D2","level":"warning","message":{"text":"repeated_equality_comparison::repeated_equality_comparison (cognitive 33): repeated_equality_comparison::repeated_equality_comparison has cognitive complexity 33 (threshold 15). Drivers by points: if/else 24, loops 6, match/switch 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/repeated_equality_comparison.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d93d7f8b236a3814e3f77e7246469c69267389ade62670ac12b850fd2a62d9"}},{"ruleId":"D2","level":"warning","message":{"text":"single_string_slots::single_string_slots (cognitive 33): single_string_slots::single_string_slots has cognitive complexity 33 (threshold 15). Drivers by points: if/else 27, loops 4, match/switch 2 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/single_string_slots.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b098119ae64cf16329c1e31e52768e142838d7ca5241b3088cf89c3b4ced71"}},{"ruleId":"D2","level":"warning","message":{"text":"bindings::bindings (cognitive 33): bindings::bindings has cognitive complexity 33 (threshold 15). Drivers by points: if/else 30, boolean chains 2, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/bindings.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ab93654efff5d39ed17d5135e471d9a60ee9f1c0ae9a241ca8116b8d4f12f3"}},{"ruleId":"D2","level":"warning","message":{"text":"native_literals::native_literals (cognitive 33): native_literals::native_literals has cognitive complexity 33 (threshold 15). Drivers by points: if/else 26, match/switch 4, boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/native_literals.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c48696698717c323e3ab4544a5cbf9c92c8ebabbc522b2f9d73ee00e4094772"}},{"ruleId":"D2","level":"warning","message":{"text":"typing_only_runtime_import::typing_only_runtime_import (cognitive 33): typing_only_runtime_import::typing_only_runtime_import has cognitive complexity 33 (threshold 15). Drivers by points: if/else 20, loops 7, match/switch 4, boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/typing_only_runtime_import.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"271274b10a41061fd77103d4d1fcf8730ce1b63d048634035f771d374491f812"}},{"ruleId":"D2","level":"warning","message":{"text":"never_union::never_union (cognitive 33): never_union::never_union has cognitive complexity 33 (threshold 15). Drivers by points: if/else 30, loops 2, match/switch 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/never_union.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"218f1ee82de2cf4cc265762dcf397dcac5c019c65ce1888d8617730e38f09bd4"}},{"ruleId":"D2","level":"warning","message":{"text":"logging_call::logging_f_string (cognitive 33): logging_call::logging_f_string has cognitive complexity 33 (threshold 15). Drivers by points: if/else 16, match/switch 12, loops 4, boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_logging_format/rules/logging_call.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"939fdd6cc6648f510d59d42cbcd96f9512cc67a46adf21bfd5b069c8144be5dc"}},{"ruleId":"D2","level":"warning","message":{"text":"noqa::find_suppression_comments (cognitive 33): noqa::find_suppression_comments has cognitive complexity 33 (threshold 15). Drivers by points: if/else 21, match/switch 11, loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/noqa.rs"},"region":{"startLine":950}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e5d746f5c9405db175acdfbcef9fdd1b437808ca51e8e1f89876c03135bfa65"}},{"ruleId":"D2","level":"warning","message":{"text":"config::derive_impl (cognitive 33): config::derive_impl has cognitive complexity 33 (threshold 15). Drivers by points: if/else 25, loops 7, match/switch 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_macros/src/config.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2576746e7e5cefcea93d3ea4dfd30e847092e498f76d32dd708a5f1cb68ca36e"}},{"ruleId":"D2","level":"warning","message":{"text":"Generator::unparse_stmt (cognitive 33): Generator::unparse_stmt has cognitive complexity 33 (threshold 15). Drivers by points: if/else 22, loops 10, match/switch 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8868534e07301305a217fe8135f85c5e7207cda1053a6ec82e1dcc5bc1072e"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_type_param (cognitive 33): Parser::parse_type_param has cognitive complexity 33 (threshold 15). Drivers by points: if/else 33 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":3645}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c67bba3996287d7e05da430c8275801d62bcdb3605702c9ce91586009eb38a"}},{"ruleId":"D2","level":"warning","message":{"text":"reachability::analyze_single_pattern_predicate_kind (cognitive 33): reachability::analyze_single_pattern_predicate_kind has cognitive complexity 33 (threshold 15). Drivers by points: if/else 27, match/switch 5, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/reachability.rs"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71494f1fa34c67dba5f814a7e726b2affcc6986c2797b70ff313918c2379bfe"}},{"ruleId":"D2","level":"warning","message":{"text":"Collector::visit_stmt (cognitive 32): Collector::visit_stmt has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20, loops 10, boolean chains 1, match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_graph/src/collector.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4eacf480155f773539f4c568fe3ec84d3f293bcd97557559495d2546f457e8"}},{"ruleId":"D2","level":"warning","message":{"text":"unused_arguments::unused_arguments (cognitive 32): unused_arguments::unused_arguments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 21, boolean chains 8, match/switch 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_unused_arguments/rules/unused_arguments.rs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"681fb926d687361bd79b65d5de40691abd07dccc938c20589c81d00bb93c4df8"}},{"ruleId":"D2","level":"warning","message":{"text":"super_call_with_parameters::super_call_with_parameters (cognitive 32): super_call_with_parameters::super_call_with_parameters has cognitive complexity 32 (threshold 15). Drivers by points: if/else 25, match/switch 3, boolean chains 2, loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/super_call_with_parameters.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d762e9b5efb671d6ea5a7ece63a107164f3f7f06acc8b0143cb99061c04f45"}},{"ruleId":"D2","level":"warning","message":{"text":"compound_statements::compound_statements (cognitive 32): compound_statements::compound_statements has cognitive complexity 32 (threshold 15). Drivers by points: if/else 23, match/switch 6, boolean chains 2, loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/compound_statements.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"3524480217eb25bbf1f35dc0d0dda088cb4109631cbef4feeaa1a14f3ebdd673"}},{"ruleId":"D2","level":"warning","message":{"text":"linter::check_path (cognitive 32): linter::check_path has cognitive complexity 32 (threshold 15). Drivers by points: if/else 21, loops 6, boolean chains 3, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/linter.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a6e913b70e4d5ab5c3ea4b90b3ac99a161d5fa404dfcb498f2eb28826124276"}},{"ruleId":"D2","level":"warning","message":{"text":"unspecified_encoding::is_violation (cognitive 32): unspecified_encoding::is_violation has cognitive complexity 32 (threshold 15). Drivers by points: if/else 24, match/switch 8 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/unspecified_encoding.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b66d4ffa8800644aaec3a93eca3cf2b91486f26457309398f0f92300f06e1e0"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticTokenVisitor::classify_from_definition (cognitive 32): SemanticTokenVisitor::classify_from_definition has cognitive complexity 32 (threshold 15). Drivers by points: if/else 24, match/switch 6, boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"486f488b7a8d2965624a6f729a36bf122d4c4726bfa393f14a79f2c2711dd09f"}},{"ruleId":"D2","level":"warning","message":{"text":"SequentMap::add_nested_typevar_sequents (cognitive 32): SequentMap::add_nested_typevar_sequents has cognitive complexity 32 (threshold 15). Drivers by points: if/else 18, boolean chains 10, match/switch 4 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":5720}}}],"partialFingerprints":{"codehealthFindingId/v1":"df14acef3ea84f4e0c43ad541bc86d39ffe5f8169765279c7d9aff40a59561bb"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_subclass_of_type_expression (cognitive 32): TypeInferenceBuilder::infer_subclass_of_type_expression has cognitive complexity 32 (threshold 15). Drivers by points: match/switch 18, if/else 14 (nesting depth added 19). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1238}}}],"partialFingerprints":{"codehealthFindingId/v1":"a164f0a6d88f0adcad174a93cf126a872c5b419346ed80afeff48afff2498b01"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_callable_parameter_types (cognitive 32): TypeInferenceBuilder::infer_callable_parameter_types has cognitive complexity 32 (threshold 15). Drivers by points: if/else 27, boolean chains 2, loops 2, match/switch 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"257232b843609709001eeeca66d65f44d2cba8040e9190668376cd9d087215d9"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::bindings (cognitive 32): Type::bindings has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17, match/switch 14, boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":4551}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b4240960b8b1bd2599a8be2575444670fdaba5cc8b4ddd861f404602f4450e"}},{"ruleId":"D2","level":"warning","message":{"text":"mdtest::run (cognitive 31): mdtest::run has cognitive complexity 31 (threshold 15). Drivers by points: loops 13, if/else 7, match/switch 7, boolean chains 4 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/lib.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"5397ffc5a57fd2d594b6dada561d8621c945176484177a4c0b5f86c3a0ead00e"}},{"ruleId":"D2","level":"warning","message":{"text":"whitespace_around_keywords::whitespace_around_keywords (cognitive 31): whitespace_around_keywords::whitespace_around_keywords has cognitive complexity 31 (threshold 15). Drivers by points: if/else 23, match/switch 7, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/whitespace_around_keywords.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2dde16020343a72babc95c43ee61dac80940ff0dcc9ea4e4c0e4944166915c1"}},{"ruleId":"D2","level":"warning","message":{"text":"space_around_operator::space_around_operator (cognitive 31): space_around_operator::space_around_operator has cognitive complexity 31 (threshold 15). Drivers by points: if/else 23, match/switch 7, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/space_around_operator.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"782fb187c55fb4d1b8eff3cf9a45cf8e87829e323bda2e0914a44e15993e5db4"}},{"ruleId":"D2","level":"warning","message":{"text":"compare::compare (cognitive 31): compare::compare has cognitive complexity 31 (threshold 15). Drivers by points: if/else 28, boolean chains 2, match/switch 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_2020/rules/compare.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"db763ba1435a9754b915a85938ba399a9e93d9838d2e448d2194b356b5d6ee38"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_arguments (cognitive 31): Parser::parse_arguments has cognitive complexity 31 (threshold 15). Drivers by points: if/else 28, match/switch 2, boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ae380475c48402a38d66dee7fda17d2034c1325358693444d5d6cdcd53c5af"}},{"ruleId":"D2","level":"warning","message":{"text":"CommentRanges::block_comments (cognitive 31): CommentRanges::block_comments has cognitive complexity 31 (threshold 15). Drivers by points: if/else 25, boolean chains 5, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/comment_ranges.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"1219a43b68ca22c390799263466e4988c00c72ee8f51d65b7352cd41a939ba7b"}},{"ruleId":"D2","level":"warning","message":{"text":"RangedValue::to_override (cognitive 31): RangedValue::to_override has cognitive complexity 31 (threshold 15). Drivers by points: if/else 26, boolean chains 5 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/metadata/options.rs"},"region":{"startLine":1897}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42383a8bb0e94d16f80201301464a8be93f309efca3d45a3455921b4d8c260f"}},{"ruleId":"D2","level":"warning","message":{"text":"IsortOptions::try_into_settings (cognitive 31): IsortOptions::try_into_settings has cognitive complexity 31 (threshold 15). Drivers by points: if/else 22, boolean chains 4, loops 4, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/options.rs"},"region":{"startLine":2927}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b1e2bfa70e112be2df4fce8ca5cb8fff94728c3ae2873dda35a0255b61d8ff8"}},{"ruleId":"D2","level":"warning","message":{"text":"AddBinding::insert (cognitive 31): AddBinding::insert has cognitive complexity 31 (threshold 15). Drivers by points: if/else 29, boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":11979}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d37a58bd9a42d63e25445b10d2a804ccea6ee5e0683867e5105c38adf790dd"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassInfoConstraintFunction::generate_constraint (cognitive 31): ClassInfoConstraintFunction::generate_constraint has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16, match/switch 12, loops 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"da03b8d81e776fb559791dfa1035ec566ffa293e903f6ccee723862d133ad0b1"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::validate_typed_dict_constructor (cognitive 31): typed_dict::validate_typed_dict_constructor has cognitive complexity 31 (threshold 15). Drivers by points: if/else 28, boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":2381}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c5788e0aaa651445ad640c6efa7d9b6b43d150b46c3ed7de81694336542614"}},{"ruleId":"D2","level":"warning","message":{"text":"builder::normalize_enum_complement_unions (cognitive 31): builder::normalize_enum_complement_unions has cognitive complexity 31 (threshold 15). Drivers by points: if/else 18, loops 12, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e894c3e3c220d42d6db9523b16aff50021efbd4f5d272ceaa6453b6fd334692"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::validate_typed_dict_openness (cognitive 31): typed_dict::validate_typed_dict_openness has cognitive complexity 31 (threshold 15). Drivers by points: if/else 20, boolean chains 5, match/switch 5, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/typed_dict.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"71e8fd226affcac0195d99247404b6e5fe69ed2a4d73102cea9224b50b93033b"}},{"ruleId":"D2","level":"warning","message":{"text":"FitsMeasurer::fits_text (cognitive 30): FitsMeasurer::fits_text has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16, match/switch 10, loops 3, boolean chains 1 (nesting depth added 19). Of this number, 29 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f851de6f8e235d6868259b67e94a1bf907ea48b71b68051c0bc0a8d804f7046"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::visit_exports (cognitive 30): Checker::visit_exports has cognitive complexity 30 (threshold 15). Drivers by points: if/else 25, loops 3, boolean chains 1, match/switch 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":3202}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13f8e6551dfbbc1a07d7539a5b2da4f7dc829ddb45e4fd06c46e9b5f15c8eee"}},{"ruleId":"D2","level":"warning","message":{"text":"deprecated_mock_import::deprecated_mock_import (cognitive 30): deprecated_mock_import::deprecated_mock_import has cognitive complexity 30 (threshold 15). Drivers by points: if/else 20, boolean chains 4, match/switch 4, loops 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"356687314fbd3f991f2b46f967d0898054dcefa2bcb4dcf3fbd5f39fa34c6cdc"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_paren_on_raise_exception::unnecessary_paren_on_raise_exception (cognitive 30): unnecessary_paren_on_raise_exception::unnecessary_paren_on_raise_exception has cognitive complexity 30 (threshold 15). Drivers by points: if/else 23, match/switch 6, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1aec3de511bd83c1d3b4c9f15f49af0f42f9296e15dbf384cf05b62c8aebb82"}},{"ruleId":"D2","level":"warning","message":{"text":"blank_before_after_function::blank_before_after_function (cognitive 30): blank_before_after_function::blank_before_after_function has cognitive complexity 30 (threshold 15). Drivers by points: if/else 24, loops 4, boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/blank_before_after_function.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c6406e397f344e4e08e57af2f9bf3a3f27c0bd4dbe3490c829a17813033899"}},{"ruleId":"D2","level":"warning","message":{"text":"multi_line_summary_start::multi_line_summary_start (cognitive 30): multi_line_summary_start::multi_line_summary_start has cognitive complexity 30 (threshold 15). Drivers by points: if/else 27, loops 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/multi_line_summary_start.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab762fca07e79ce8feb17a927c81c6633b9be98796befd69f9bb831f10003c3"}},{"ruleId":"D2","level":"warning","message":{"text":"mutable_class_default::mutable_class_default (cognitive 30): mutable_class_default::mutable_class_default has cognitive complexity 30 (threshold 15). Drivers by points: if/else 24, boolean chains 3, match/switch 2, loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/mutable_class_default.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b039501b30e273ecfdb48c878213d48caad71f1228300c60a6f6c1f1b68a60"}},{"ruleId":"D2","level":"warning","message":{"text":"verbose_decimal_constructor::verbose_decimal_constructor (cognitive 30): verbose_decimal_constructor::verbose_decimal_constructor has cognitive complexity 30 (threshold 15). Drivers by points: if/else 26, match/switch 3, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/verbose_decimal_constructor.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"23dd53c15932ea0459d7dd0cecec1d9e2fd55891f79f1dba0e4889b57e725aea"}},{"ruleId":"D2","level":"warning","message":{"text":"sections::common_section (cognitive 30): sections::common_section has cognitive complexity 30 (threshold 15). Drivers by points: if/else 30 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c160cc241011310daafe81e5c378f2afbc940ba55de829d9103fe1921f54df2"}},{"ruleId":"D2","level":"warning","message":{"text":"ruff_markdown::format_code_blocks (cognitive 30): ruff_markdown::format_code_blocks has cognitive complexity 30 (threshold 15). Drivers by points: if/else 17, match/switch 7, loops 4, boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_markdown/src/lib.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45118f582d0734fd69b29ec7259b77b96274922237abffac4d6e0d90d1c7ce3"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_interpolated_element (cognitive 30): Parser::parse_interpolated_element has cognitive complexity 30 (threshold 15). Drivers by points: if/else 22, boolean chains 3, match/switch 3, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1767}}}],"partialFingerprints":{"codehealthFindingId/v1":"481281a09c0e88ff189a97847547b99da79ebabc8c27add9e53587ce4134b17b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_new_class_call (cognitive 30): TypeInferenceBuilder::infer_new_class_call has cognitive complexity 30 (threshold 15). Drivers by points: if/else 25, loops 3, boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/new_class.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e37e3b50b4d41a5db0ee337b64882de3b50e943014b4cbc1d18bc4d6941bd7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_assignment_definition_impl (cognitive 30): TypeInferenceBuilder::infer_assignment_definition_impl has cognitive complexity 30 (threshold 15). Drivers by points: if/else 22, match/switch 5, boolean chains 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3197}}}],"partialFingerprints":{"codehealthFindingId/v1":"015454a00defc34ff7b44a17f495f57cf1041c20e468df5a1ea1a8458854b384"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::constructor_bindings (cognitive 30): Type::constructor_bindings has cognitive complexity 30 (threshold 15). Drivers by points: if/else 21, match/switch 8, boolean chains 1 (nesting depth added 9). Of this number, 28 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":5249}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e6215612ab8df00bb1b615c0c1b32bc83482bb6679ebb2e7a4f2d70b2cbb69"}},{"ruleId":"D2","level":"warning","message":{"text":"suppression::suppressions (cognitive 30): suppression::suppressions has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13, match/switch 11, loops 4, boolean chains 2 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/suppression.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"c11ad0dc0e79200d82741019877fbda9fa60107d6614559f977aa45cb1ed4874"}},{"ruleId":"D2","level":"warning","message":{"text":"format::format_source (cognitive 29): format::format_source has cognitive complexity 29 (threshold 15). Drivers by points: if/else 22, match/switch 3, boolean chains 2, loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbd0ffbf13f47e0ac4e016f4f6c60eaec49777c1382d703008d1bc6098b95046"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_docs::main (cognitive 29): generate_docs::main has cognitive complexity 29 (threshold 15). Drivers by points: if/else 21, match/switch 7, loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_docs.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e61391113a087e7f38a25e250d7090b2ada79c892afb1d990b8c8de6634126"}},{"ruleId":"D2","level":"warning","message":{"text":"type_alias_quotes::quotes_are_unremovable (cognitive 29): type_alias_quotes::quotes_are_unremovable has cognitive complexity 29 (threshold 15). Drivers by points: if/else 21, boolean chains 3, match/switch 3, loops 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/type_alias_quotes.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ded90b89048ea8b3c405772dc1251a412e830bfaa1cc9a1283aa975ea9159a4"}},{"ruleId":"D2","level":"warning","message":{"text":"manual_dict_comprehension::manual_dict_comprehension (cognitive 29): manual_dict_comprehension::manual_dict_comprehension has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18, match/switch 8, boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0d1c2216f7e7b3875dce4063d690effe9750a765db6abad5c2afd5a2f2eefe"}},{"ruleId":"D2","level":"warning","message":{"text":"manual_dict_comprehension::convert_to_dict_comprehension (cognitive 29): manual_dict_comprehension::convert_to_dict_comprehension has cognitive complexity 29 (threshold 15). Drivers by points: if/else 23, match/switch 6 (nesting depth added 7). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_dict_comprehension.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"6405e89a5a723a5052526bc433a87c41bac3e7e2d8f19e9160ba0ac4d509899d"}},{"ruleId":"D2","level":"warning","message":{"text":"error_instead_of_exception::error_instead_of_exception (cognitive 29): error_instead_of_exception::error_instead_of_exception has cognitive complexity 29 (threshold 15). Drivers by points: if/else 21, match/switch 5, loops 3 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/tryceratops/rules/error_instead_of_exception.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"771a10c155b1216874c5b82bbe111194f819859d464548fddb4951654e5bb250"}},{"ruleId":"D2","level":"warning","message":{"text":"removal_in_3::check_method (cognitive 29): removal_in_3::check_method has cognitive complexity 29 (threshold 15). Drivers by points: match/switch 17, if/else 12 (nesting depth added 11). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ab4425f1f12d815358c64b1dff90f499d4ad0cc3aa15e881d47084d4167c2f"}},{"ruleId":"D2","level":"warning","message":{"text":"StringNormalizer::preferred_quote_style (cognitive 29): StringNormalizer::preferred_quote_style has cognitive complexity 29 (threshold 15). Drivers by points: if/else 24, boolean chains 4, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6d88fca7beab0e2b474621b7020ecaa836f52b19d7774604d3ba6bf5fe7d81"}},{"ruleId":"D2","level":"warning","message":{"text":"Definitions::resolve (cognitive 29): Definitions::resolve has cognitive complexity 29 (threshold 15). Drivers by points: if/else 20, match/switch 5, boolean chains 3, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/definition.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c51f38ded5c29fa442a44fb4e807e63eef189c22495a15e46d02823bd98f9d"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticModel::extract_dunder_all_names (cognitive 29): SemanticModel::extract_dunder_all_names has cognitive complexity 29 (threshold 15). Drivers by points: if/else 24, loops 4, match/switch 1 (nesting depth added 16). Of this number, 25 points are the body\u0027s own statements and 4 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model/all.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"25cac99180fb001af6ca435318ad5b799e3f41158aca4f9765466ee607865727"}},{"ruleId":"D2","level":"warning","message":{"text":"LoopBindingsVisitor::visit_stmt (cognitive 29): LoopBindingsVisitor::visit_stmt has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14, loops 14, match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder/loop_bindings_visitor.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b891a14585213f2497bb55fbbdd20ee51b526fb3ebfe08b3a2a56e5f93f36856"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportFinder::visit_stmt (cognitive 29): ExportFinder::visit_stmt has cognitive complexity 29 (threshold 15). Drivers by points: if/else 16, loops 11, boolean chains 1, match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/re_exports.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7142116b6f344ee8005fcb9b131b47fed6f524d874ff5d9c6077fc7738a695"}},{"ruleId":"D2","level":"warning","message":{"text":"InteriorNode::simplify (cognitive 29): InteriorNode::simplify has cognitive complexity 29 (threshold 15). Drivers by points: if/else 21, match/switch 5, boolean chains 2, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":4560}}}],"partialFingerprints":{"codehealthFindingId/v1":"31399d13a5e47f703592906b3e32f6372e26fb8aa6733592716cc0ff01c5dc5f"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostic::report_invalid_method_override (cognitive 29): diagnostic::report_invalid_method_override has cognitive complexity 29 (threshold 15). Drivers by points: if/else 16, match/switch 6, boolean chains 5, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":3755}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9a08fa106bfbd35882aca39afe2f1e67e43b42f1294290aabc2af36349b36d"}},{"ruleId":"D2","level":"warning","message":{"text":"string_annotation::parse_string_annotation (cognitive 29): string_annotation::parse_string_annotation has cognitive complexity 29 (threshold 15). Drivers by points: if/else 23, boolean chains 3, match/switch 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/string_annotation.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26cac8a7ab87284e2a93ea648d41a1b998c71531adbe891e02d5ecdbf230d14"}},{"ruleId":"D2","level":"warning","message":{"text":"GroupNameFinder::visit_stmt (cognitive 28): GroupNameFinder::visit_stmt has cognitive complexity 28 (threshold 15). Drivers by points: if/else 23, loops 4, match/switch 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"e42b1a1544c0db41663a0f510694ef38d7f6c2c987d901a8545f4c21b6d440cf"}},{"ruleId":"D2","level":"warning","message":{"text":"string_in_exception::string_in_exception (cognitive 28): string_in_exception::string_in_exception has cognitive complexity 28 (threshold 15). Drivers by points: if/else 23, boolean chains 3, match/switch 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_errmsg/rules/string_in_exception.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cec29302352518d43fbc452f73e865d693625a422ef8df091c0618e04d82662"}},{"ruleId":"D2","level":"warning","message":{"text":"codemods::remove_imports (cognitive 28): codemods::remove_imports has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21, match/switch 4, loops 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/fix/codemods.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f891a9a507a361cba117e615c2bf3088134b738778969fed44dca7bbcf56ab50"}},{"ruleId":"D2","level":"warning","message":{"text":"static_join_to_fstring::build_fstring (cognitive 28): static_join_to_fstring::build_fstring has cognitive complexity 28 (threshold 15). Drivers by points: if/else 22, boolean chains 4, loops 1, match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flynt/rules/static_join_to_fstring.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af394ab3c377014bf45d9aac605661b26fc2a8ff0fdd2e744d9286518c36a0c"}},{"ruleId":"D2","level":"warning","message":{"text":"ruff_markdown::format_pycon_block (cognitive 28): ruff_markdown::format_pycon_block has cognitive complexity 28 (threshold 15). Drivers by points: if/else 19, loops 8, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_markdown/src/lib.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"d298421e5c98b35660f73bd7b651e1c2b2efdb74e8f65aa196998407ac766ff1"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatExprSlice::fmt_fields (cognitive 28): FormatExprSlice::fmt_fields has cognitive complexity 28 (threshold 15). Drivers by points: if/else 22, boolean chains 6 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_slice.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61112a617f82c32fc5c55ea1677ea7f11c71e1af1f1b89fc45f215690498f9a"}},{"ruleId":"D2","level":"warning","message":{"text":"Lexer::lex_token (cognitive 28): Lexer::lex_token has cognitive complexity 28 (threshold 15). Drivers by points: if/else 26, match/switch 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62298a7d2b95d94924efe5219cd12fbcc82ba2eae0ec447c4e07f316fd5434f"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticSyntaxChecker::check_annotation (cognitive 28): SemanticSyntaxChecker::check_annotation has cognitive complexity 28 (threshold 15). Drivers by points: if/else 23, boolean chains 2, loops 2, match/switch 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a8816e3b08ee2576a0d0b1e0b7db4630ce4bc8a141b5a88d26b63d1e793e96"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticSyntaxChecker::visit_expr (cognitive 28): SemanticSyntaxChecker::visit_expr has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17, loops 6, match/switch 4, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0582bfdd3e21c9eabc6e26ba0fb195c0aa571bb5eebc6bdcf2332f2fbcd7034"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticModel::resolve_qualified_import_name (cognitive 28): SemanticModel::resolve_qualified_import_name has cognitive complexity 28 (threshold 15). Drivers by points: if/else 26, boolean chains 1, match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e56f2d0fa0a03af9b08fa4a8336303f4604a46b9b425c165e0d8d10578dfaf"}},{"ruleId":"D2","level":"warning","message":{"text":"Server::main_loop (cognitive 28): Server::main_loop has cognitive complexity 28 (threshold 15). Drivers by points: if/else 22, match/switch 5, loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/server/main_loop.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bbc549aba8891f5f696c50655922756983c91f460be3cab73c0651eebbcb93"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvedClientCapabilities::new (cognitive 28): ResolvedClientCapabilities::new has cognitive complexity 28 (threshold 15). Drivers by points: if/else 28 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/capabilities.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"035b82804bbe95700c19e198399679f16af98a22d6331e7e9a14a433cf3253dc"}},{"ruleId":"D2","level":"warning","message":{"text":"Debouncer::add_event (cognitive 28): Debouncer::add_event has cognitive complexity 28 (threshold 15). Drivers by points: match/switch 14, if/else 13, boolean chains 1 (nesting depth added 14). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/watch/watcher.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df086705dffb93b627bd669c6a9a8bc14532597f7a7ba1f2996ef96232affa7"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextManagerError::report_diagnostic (cognitive 28): ContextManagerError::report_diagnostic has cognitive complexity 28 (threshold 15). Drivers by points: match/switch 9, if/else 8, loops 8, boolean chains 3 (nesting depth added 8). Of this number, 27 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/context_manager.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"88118290464b8a8ec5374849918d64ef8c1f3b183cf731cbcc9e70c8fc0fa4be"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_typevar (cognitive 28): TypeInferenceBuilder::infer_legacy_typevar has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14, match/switch 9, boolean chains 4, loops 1 (nesting depth added 9). Of this number, 27 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e51f05009cc020da242ed96c8486db43cc2a3f84262ad9564ba40ca7a2a4ab8"}},{"ruleId":"D2","level":"warning","message":{"text":"SubscriptErrorKind::report_diagnostic (cognitive 28): SubscriptErrorKind::report_diagnostic has cognitive complexity 28 (threshold 15). Drivers by points: if/else 25, match/switch 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/subscript.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ba0da8700e4f8fc8000b87f52594e5685a6d7fd0e45df0843d52917fc96a0e"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::try_upcast_to_callable_with_policy_and_context (cognitive 28): Type::try_upcast_to_callable_with_policy_and_context has cognitive complexity 28 (threshold 15). Drivers by points: loops 11, if/else 8, match/switch 8, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/callable.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f4a0a8ca201c1f39bced4ca4cd74b0e5ab5a2552413ba2474518d6199ff6ae"}},{"ruleId":"D2","level":"warning","message":{"text":"containment::containment_behavior (cognitive 28): containment::containment_behavior has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16, match/switch 8, loops 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow/containment.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cf183ef150f6714758aa869bb0899fd6408cd8de07e91fac75a9839fa58abc0"}},{"ruleId":"D2","level":"warning","message":{"text":"subscript::legacy_generic_class_context (cognitive 28): subscript::legacy_generic_class_context has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21, match/switch 4, boolean chains 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":2389}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f4f193d8aa6c9e5e438a204dcb33224af574d23e4526d6be5a41d268396bd6"}},{"ruleId":"D2","level":"warning","message":{"text":"format_stdin::format_stdin (cognitive 27): format_stdin::format_stdin has cognitive complexity 27 (threshold 15). Drivers by points: if/else 24, match/switch 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format_stdin.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6caef2fe4a9b3b2351a93ddc618a6584ab6f80e2bbb2e043ec0eb1d43e77a7f4"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::report_semantic_error (cognitive 27): Checker::report_semantic_error has cognitive complexity 27 (threshold 15). Drivers by points: if/else 26, match/switch 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8010e0ad1017a48e4443aa6e48b48fc1bb523a6fec5e3066b93bed2fc60eda"}},{"ruleId":"D2","level":"warning","message":{"text":"ends_with_punctuation::ends_with_punctuation (cognitive 27): ends_with_punctuation::ends_with_punctuation has cognitive complexity 27 (threshold 15). Drivers by points: if/else 23, loops 4 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/ends_with_punctuation.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"6120df5c18baf36845e7d8b35e117bb3739451dec6a5e886f2e26d3c78611780"}},{"ruleId":"D2","level":"warning","message":{"text":"function_is_too_complex::get_complexity_number (cognitive 27): function_is_too_complex::get_complexity_number has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14, loops 10, match/switch 2, boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/mccabe/rules/function_is_too_complex.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"38409afc1bf522b0b3942846d3e0844b033a47d6c674ea4678652b60df63d9dc"}},{"ruleId":"D2","level":"warning","message":{"text":"enumerate_for_loop::enumerate_for_loop (cognitive 27): enumerate_for_loop::enumerate_for_loop has cognitive complexity 27 (threshold 15). Drivers by points: if/else 22, boolean chains 4, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/enumerate_for_loop.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"074e2546d224bfc13b5e0c197094dd8a116cc02191fd3935bb35f7b376696c13"}},{"ruleId":"D2","level":"warning","message":{"text":"annotate::annotate_imports (cognitive 27): annotate::annotate_imports has cognitive complexity 27 (threshold 15). Drivers by points: loops 18, if/else 7, boolean chains 1, match/switch 1 (nesting depth added 13). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/annotate.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc977167caa149493535c693352f8fd824f7468e2c3bb4ffeb2aa94d18deef0"}},{"ruleId":"D2","level":"warning","message":{"text":"ast_bool_op::duplicate_isinstance_call (cognitive 27): ast_bool_op::duplicate_isinstance_call has cognitive complexity 27 (threshold 15). Drivers by points: if/else 25, loops 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"58327b17767d24b889793577d3152f345d5a1263b58ceb9e33cceda85979027d"}},{"ruleId":"D2","level":"warning","message":{"text":"ends_with_period::ends_with_period (cognitive 27): ends_with_period::ends_with_period has cognitive complexity 27 (threshold 15). Drivers by points: if/else 23, loops 4 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/ends_with_period.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ddc68d78de04493ece71d19b59192098c78e6ecbe13c12ff076b91707ed989"}},{"ruleId":"D2","level":"warning","message":{"text":"private_member_access::private_member_access (cognitive 27): private_member_access::private_member_access has cognitive complexity 27 (threshold 15). Drivers by points: if/else 26, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_self/rules/private_member_access.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a65073802e10492da726fc95092d2e0da725f71c24a45b816a3df0f4e9ff63b3"}},{"ruleId":"D2","level":"warning","message":{"text":"manual_list_comprehension::convert_to_list_extend (cognitive 27): manual_list_comprehension::convert_to_list_extend has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19, match/switch 8 (nesting depth added 7). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb675b6609e69fbfdddef3f63c8c724f28955debb41f198a9e7687b0ca24b40c"}},{"ruleId":"D2","level":"warning","message":{"text":"MaybeParenthesizeExpression::fmt (cognitive 27): MaybeParenthesizeExpression::fmt has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17, match/switch 8, boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1b24877430d9cdf3162e1685660657204527b64f4865a49cd4ffacdb7c0830c"}},{"ruleId":"D2","level":"warning","message":{"text":"InlayHint::variable_type (cognitive 27): InlayHint::variable_type has cognitive complexity 27 (threshold 15). Drivers by points: if/else 23, match/switch 2, boolean chains 1, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/inlay_hints.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"94801071033f5707a03277528a0c4a6de2105fa76393edfb2e3c326657c0f1df"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate_class (cognitive 27): AssignmentAttributeWriteEvaluator::evaluate_class has cognitive complexity 27 (threshold 15). Drivers by points: if/else 21, match/switch 5, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8d494f026068bec7747be4ba356c81c7235926396837b98cd4edc542dc2b91b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typing_namedtuple_fields (cognitive 27): TypeInferenceBuilder::infer_typing_namedtuple_fields has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 10, if/else 9, loops 8 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/named_tuple.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"fceb17b10e4dc5722d10fcc772dde23ec9bbf85b9dacc60e1a0ccee5672a4677"}},{"ruleId":"D2","level":"warning","message":{"text":"VariableLengthTuple::mixed_forward_slice_plan (cognitive 27): VariableLengthTuple::mixed_forward_slice_plan has cognitive complexity 27 (threshold 15). Drivers by points: if/else 20, boolean chains 5, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"462379606da5987b351631c6cc4734261119e23e447292292d06fc737f8ff5bc"}},{"ruleId":"D2","level":"warning","message":{"text":"Tuple::try_for_each_element_pair (cognitive 27): Tuple::try_for_each_element_pair has cognitive complexity 27 (threshold 15). Drivers by points: loops 26, match/switch 1 (nesting depth added 13). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":2433}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4648efe167a0154fc21c5024bf1a113eb04da7ef3e294170aa1e69acda12227"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::generator_types (cognitive 27): Type::generator_types has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 13, if/else 6, boolean chains 4, loops 4 (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":5813}}}],"partialFingerprints":{"codehealthFindingId/v1":"4049700291321f16a25740b3a6472b64df96672a146eb342dfbc8da4f782749d"}},{"ruleId":"D2","level":"warning","message":{"text":"function::is_instance_truthiness (cognitive 27): function::is_instance_truthiness has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16, match/switch 7, loops 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd4f53764c3f88f90dc30870d3bfd79936a8606b7147fffe363741b936e20e3"}},{"ruleId":"D2","level":"warning","message":{"text":"static_class::check_final_class_abstract_methods (cognitive 27): static_class::check_final_class_abstract_methods has cognitive complexity 27 (threshold 15). Drivers by points: if/else 24, boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d251c1d2c9eff4fc0aa81489fb5189a11a849b513d3557da5794c83f97d2d14"}},{"ruleId":"D2","level":"warning","message":{"text":"place::place_from_bindings_impl (cognitive 27): place::place_from_bindings_impl has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14, match/switch 9, loops 3, boolean chains 1 (nesting depth added 9). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/place.rs"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3afd1781ae1f5d21310ca5d547c4f818dbc4b92fcd7cc57c75cb7d3da4ca64"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_docs::process_documentation (cognitive 26): generate_docs::process_documentation has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20, match/switch 4, loops 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_docs.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a4df00bd7c858b55b96e9e4b6f5eec18a7ab025c681f61faf3c42a56b75dc0"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_literal_union::unnecessary_literal_union (cognitive 26): unnecessary_literal_union::unnecessary_literal_union has cognitive complexity 26 (threshold 15). Drivers by points: if/else 21, loops 4, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9c9ec698b952eacfcc8216d2aeb5e37b97d0b88e9e92fa948b69ea186358f9"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_dict_kwargs::unnecessary_dict_kwargs (cognitive 26): unnecessary_dict_kwargs::unnecessary_dict_kwargs has cognitive complexity 26 (threshold 15). Drivers by points: if/else 25, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8688eea75db9e2bdb7bb21752f00a942c3df95c08ab7d43693baea6b8e01a5d"}},{"ruleId":"D2","level":"warning","message":{"text":"parametrize::check_names (cognitive 26): parametrize::check_names has cognitive complexity 26 (threshold 15). Drivers by points: if/else 16, match/switch 10 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc4752533801e0c8031753566c8ae4bcb33bb266dc766f1d98c738ebca997568"}},{"ruleId":"D2","level":"warning","message":{"text":"manual_list_comprehension::manual_list_comprehension (cognitive 26): manual_list_comprehension::manual_list_comprehension has cognitive complexity 26 (threshold 15). Drivers by points: if/else 18, boolean chains 4, match/switch 4 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/manual_list_comprehension.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"9932f595b03e13c89a34c2be93eb40e53c94de6db83071897d704aea250bd6de"}},{"ruleId":"D2","level":"warning","message":{"text":"Notebook::from_raw_notebook (cognitive 26): Notebook::from_raw_notebook has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13, loops 8, match/switch 4, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_notebook/src/notebook.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"8044535b0462d8fe55c95799026b62d5b4eca6d077f56f30a377f35d165f5d80"}},{"ruleId":"D2","level":"warning","message":{"text":"FlatBinaryExpressionSlice::fmt (cognitive 26): FlatBinaryExpressionSlice::fmt has cognitive complexity 26 (threshold 15). Drivers by points: if/else 19, match/switch 4, boolean chains 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/binary_like.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ca0cfbea3802442cd99c95baef644931acde7c4f6b304b1f8edc68df204b53"}},{"ruleId":"D2","level":"warning","message":{"text":"placement::handle_enclosed_comment (cognitive 26): placement::handle_enclosed_comment has cognitive complexity 26 (threshold 15). Drivers by points: if/else 21, match/switch 3, boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"a609b3f0f6ab381d30c2ea2777f832ab7b09994607c961221e27277e06836c08"}},{"ruleId":"D2","level":"warning","message":{"text":"lint::to_lsp_diagnostic (cognitive 26): lint::to_lsp_diagnostic has cognitive complexity 26 (threshold 15). Drivers by points: if/else 19, loops 3, boolean chains 2, match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/lint.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"068a30bf7660d0b22f096106e3f9e3899fd89ea7ed2715b8f93fb29e2681b61e"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassType::into_callable_with_receiver (cognitive 26): ClassType::into_callable_with_receiver has cognitive complexity 26 (threshold 15). Drivers by points: if/else 22, match/switch 4 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":2068}}}],"partialFingerprints":{"codehealthFindingId/v1":"0313b9eae30327c61ab0a6e6dfd0ce46040253f6dbe91d221babbb5f293d2b29"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_enum_call_expression (cognitive 26): TypeInferenceBuilder::infer_enum_call_expression has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 10, if/else 10, loops 5, match/switch 1 (nesting depth added 1). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d83ec1042ab1c3da50b854a7eed145e38eafa85bb83261c4280a655dc1f51a3"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_parameter_definition (cognitive 26): TypeInferenceBuilder::infer_parameter_definition has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20, boolean chains 3, match/switch 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"bad98101f3ebdd8244b5b739c26ebe94eade8444afb03d6c88661c0774b3bbc0"}},{"ruleId":"D2","level":"warning","message":{"text":"DisjointnessChecker::check_typeddict_pair (cognitive 26): DisjointnessChecker::check_typeddict_pair has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13, boolean chains 10, match/switch 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf4a26881a5ed8cccc92daa06fa97809d28bdc889a618ce5b4d614f16a1a257"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::in_type_expression (cognitive 26): Type::in_type_expression has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12, match/switch 10, boolean chains 2, loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6041}}}],"partialFingerprints":{"codehealthFindingId/v1":"e258931b6f213d65718282fdebedfdc508d754bd745a3d5cc8cdf77d844f3908"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorAssertionParser::parse (cognitive 25): ErrorAssertionParser::parse has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22, match/switch 2, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/assertion.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da5ebb4ac4a9b4b3804f7c5d62538317eca3c4d6322fc9412baba2935039317"}},{"ruleId":"D2","level":"warning","message":{"text":"buffer::clean_interned (cognitive 25): buffer::clean_interned has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14, match/switch 8, loops 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/buffer.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc255f47c872b864deb363f83c6bea4edbaa985c9603800f2fa9d2704bb27135"}},{"ruleId":"D2","level":"warning","message":{"text":"ReturnVisitor::visit_stmt (cognitive 25): ReturnVisitor::visit_stmt has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17, loops 4, match/switch 4 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_return/visitor.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ab37d289e9e95d0d365f58a828893919a71204c0add4ea8d81cc86b77dac9df"}},{"ruleId":"D2","level":"warning","message":{"text":"TypingTarget::try_from_expr (cognitive 25): TypingTarget::try_from_expr has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/typing.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"386cf08935f25258073988eda1093c88f18b09400a7d45fabf30b241c843d477"}},{"ruleId":"D2","level":"warning","message":{"text":"check_docstring::parse_raises_google (cognitive 25): check_docstring::parse_raises_google has cognitive complexity 25 (threshold 15). Drivers by points: if/else 24, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"e85f8fbe7125120c7954f4ca41a668ec0716f52d5ff35905b0300039c3f5e3b2"}},{"ruleId":"D2","level":"warning","message":{"text":"duplicate_exceptions::duplicate_exceptions (cognitive 25): duplicate_exceptions::duplicate_exceptions has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14, loops 9, match/switch 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb467573deb26898080709c4d0aeeeb88896ba8d5c19b64caef752f42b7dca8"}},{"ruleId":"D2","level":"warning","message":{"text":"type_alias_quotes::collect_typing_references (cognitive 25): type_alias_quotes::collect_typing_references has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, loops 2, boolean chains 1, match/switch 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_type_checking/rules/type_alias_quotes.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"28051e532ad56646154fb815fddc30fc0634f9c7559b95caf5663f0ee969f6c8"}},{"ruleId":"D2","level":"warning","message":{"text":"verbose_raise::verbose_raise (cognitive 25): verbose_raise::verbose_raise has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, loops 4 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/tryceratops/rules/verbose_raise.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d158e0826d7156ccf2f60072016d87988df5e3f824831b14dd11617d06007179"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_type_union::unnecessary_type_union (cognitive 25): unnecessary_type_union::unnecessary_type_union has cognitive complexity 25 (threshold 15). Drivers by points: if/else 20, match/switch 4, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/unnecessary_type_union.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c65a4924a92bc305ce45e3f11494f710f98aa6b8bacf32b09172784cd35145"}},{"ruleId":"D2","level":"warning","message":{"text":"django_extra::is_call_insecure (cognitive 25): django_extra::is_call_insecure has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12, match/switch 11, boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/django_extra.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"82898229ee4bd237ba7f8cb235f882de3a87d7c1a20571ed692a4c0dfdf3b749"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_future_import::unnecessary_future_import (cognitive 25): unnecessary_future_import::unnecessary_future_import has cognitive complexity 25 (threshold 15). Drivers by points: if/else 20, loops 4, boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_future_import.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7b7180e76c43529a3fdf3b2c5b16b41db7b700594f2ac300289ebe3d35eb69"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatParameters::fmt_fields (cognitive 25): FormatParameters::fmt_fields has cognitive complexity 25 (threshold 15). Drivers by points: if/else 20, loops 3, boolean chains 2 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/other/parameters.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"637cf0b24701ecc5e1c70264a28d9fce9259f7e97c1565151d171e3da92c95d4"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_set_or_dict_like_expression (cognitive 25): Parser::parse_set_or_dict_like_expression has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, match/switch 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d712c0eac66f50bb794366ba1dd27046a756f8e921e6a07da00dd5734c8322"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_ipython_escape_command_value (cognitive 25): Parser::parse_ipython_escape_command_value has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16, loops 4, boolean chains 3, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a9f6abff2cb7ab74e497e89bb44ab7ac41e381b57df8055541e3c924c1e6a9"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticSyntaxChecker::debug_shadowing (cognitive 25): SemanticSyntaxChecker::debug_shadowing has cognitive complexity 25 (threshold 15). Drivers by points: loops 14, if/else 7, match/switch 4 (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"f335370f820107928901949034b9284a8560d4185385f217fd5a82f9e90ae3b4"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticModel::lookup_symbol_in_scope (cognitive 25): SemanticModel::lookup_symbol_in_scope has cognitive complexity 25 (threshold 15). Drivers by points: if/else 20, match/switch 3, boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c822586563b63c5ab0663799d579b2bb06b9bad12148d4bcc70a04bd64bae5"}},{"ruleId":"D2","level":"warning","message":{"text":"resolver::match_any_exclusion (cognitive 25): resolver::match_any_exclusion has cognitive complexity 25 (threshold 15). Drivers by points: if/else 24, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b3a813fee25666e64362dd15296bce9f84a54a96b7d9ce048ea8c4367e45ec"}},{"ruleId":"D2","level":"warning","message":{"text":"ty_completion_eval::main (cognitive 25): ty_completion_eval::main has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17, loops 7, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_completion_eval/src/main.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cdc009a1f4d8e1c11019ec808bc8d9d87f8b276728dfda729723a585f659902"}},{"ruleId":"D2","level":"warning","message":{"text":"Bindings::report_element_diagnostics (cognitive 25): Bindings::report_element_diagnostics has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, loops 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe3e5a0f6a9a42a38798fd82b6076f4981096811dc0212590ab9bed88cba2de"}},{"ruleId":"D2","level":"warning","message":{"text":"KnownClass::check_call (cognitive 25): KnownClass::check_call has cognitive complexity 25 (threshold 15). Drivers by points: if/else 19, match/switch 6 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/known.rs"},"region":{"startLine":1781}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ae537700915b49aa8efc4cca6dbf570267833186a98abf6e7022680d85f90d"}},{"ruleId":"D2","level":"warning","message":{"text":"Constraint::new_node_with_bounds (cognitive 25): Constraint::new_node_with_bounds has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13, loops 6, boolean chains 3, match/switch 3 (nesting depth added 6). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":1890}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f3d737aafeb8d8d075d11abc899d1ffcc6cb0ffc8b3493916e79e294ce25fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::report_unresolved_import (cognitive 25): TypeInferenceBuilder::report_unresolved_import has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18, loops 4, boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/imports.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"714363f3872ab2a64ceb0daf0d7997db40d0932d8c5b078c2c8e653b27ba3f88"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_import_from_definition (cognitive 25): TypeInferenceBuilder::infer_import_from_definition has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/imports.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde490b0286aac124b79bee4a77aaf0612ba7b5aba1ea56ff0388637190a435c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_legacy_paramspec (cognitive 25): TypeInferenceBuilder::infer_legacy_paramspec has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14, match/switch 8, boolean chains 2, loops 1 (nesting depth added 9). Of this number, 24 points are the body\u0027s own statements and 1 belong to one function item declared inside it. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b401392a9b664245b4c91a88b6d2df8dc7aa23d8328d563f676b4eb51757e46"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_exception (cognitive 25): TypeInferenceBuilder::infer_exception has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, boolean chains 2, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2227}}}],"partialFingerprints":{"codehealthFindingId/v1":"a547904fb8390e50781df4abe06825cbea5e2fab8c433484334ae209a8efe0e7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_and_check_argument_types (cognitive 25): TypeInferenceBuilder::infer_and_check_argument_types has cognitive complexity 25 (threshold 15). Drivers by points: if/else 20, loops 4, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":5208}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b4dcd3361b698a8809467f688c5491a7635969ae686184b5864bd57c119fbe"}},{"ruleId":"D2","level":"warning","message":{"text":"dynamic_class::report_mro_error_kind (cognitive 25): dynamic_class::report_mro_error_kind has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22, loops 2, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/dynamic_class.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21eefe261fb0026a8e968baf5949b5a4d7bd360acf58553024a26d9163b0eb4"}},{"ruleId":"D2","level":"warning","message":{"text":"match_pattern::definite_match_pattern_type_for_subject (cognitive 25): match_pattern::definite_match_pattern_type_for_subject has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, match/switch 3, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/match_pattern.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ba31ad8fb18fab08989127d9ac18e45d92d91d0bbe00d8e80d5b64c76470df"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_support::definitions_for_attribute (cognitive 25): ide_support::definitions_for_attribute has cognitive complexity 25 (threshold 15). Drivers by points: match/switch 10, if/else 9, loops 5, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bf858f452ed520f4ddc6be4f7b5e3f370abcd2f45134d4971f6e4087187b7e"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostic::report_invalid_key_on_typed_dict (cognitive 25): diagnostic::report_invalid_key_on_typed_dict has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22, match/switch 2, boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":3161}}}],"partialFingerprints":{"codehealthFindingId/v1":"4662113b73ae6fb2b4099c81673f6b49f60c7131dff8f0fa24a77fd563f20074"}},{"ruleId":"D2","level":"warning","message":{"text":"place::place_by_id (cognitive 25): place::place_by_id has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17, match/switch 7, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/place.rs"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"a274f45807e371401fc59263c262dff9bdf4c8e3b8864addfb0c0d45c9bf48b5"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::process_code_block (cognitive 24): Parser::process_code_block has cognitive complexity 24 (threshold 15). Drivers by points: if/else 18, match/switch 4, boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/parser.rs"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"9505560c77653f9bf3500c6d9a0d6f25ca06f31b5ba3efe1831836c1e0880024"}},{"ruleId":"D2","level":"warning","message":{"text":"implicit::implicit (cognitive 24): implicit::implicit has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 11, if/else 10, boolean chains 2, loops 1 (nesting depth added 13). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_implicit_str_concat/rules/implicit.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d585e7d2ec3c3ffbab426a72faf6f244066f6bb38df89c7a3b6995726609800"}},{"ruleId":"D2","level":"warning","message":{"text":"deprecated_c_element_tree::deprecated_c_element_tree (cognitive 24): deprecated_c_element_tree::deprecated_c_element_tree has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 6, boolean chains 2, match/switch 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"794bb185bd79fb0f014e71933cd8c564c83bc8792e4414c1d79b6b62789111a0"}},{"ruleId":"D2","level":"warning","message":{"text":"parametrize::check_values (cognitive 24): parametrize::check_values has cognitive complexity 24 (threshold 15). Drivers by points: if/else 22, boolean chains 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9c7124e3a2d8e3a7d4ec9acddd403071853587257a9603ebbc4af53286f30f"}},{"ruleId":"D2","level":"warning","message":{"text":"reimplemented_builtin::convert_for_loop_to_any_all (cognitive 24): reimplemented_builtin::convert_for_loop_to_any_all has cognitive complexity 24 (threshold 15). Drivers by points: if/else 18, match/switch 5, boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/reimplemented_builtin.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"842a7524160d7bff561227d773a456c17ff0e618ffe82840f1d14b4cf14cf974"}},{"ruleId":"D2","level":"warning","message":{"text":"rule_namespace::derive_impl (cognitive 24): rule_namespace::derive_impl has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12, match/switch 7, loops 4, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_macros/src/rule_namespace.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"54529f76ca401e1e6726cb29c6a863dc82171411ecae7411e89d3fddcbbc2943"}},{"ruleId":"D2","level":"warning","message":{"text":"Lexer::lex_string (cognitive 24): Lexer::lex_string has cognitive complexity 24 (threshold 15). Drivers by points: if/else 17, loops 4, match/switch 3 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb435c607942cbdc89ed895d19969557967538d93b57be1eab3c5b4d8f330ec6"}},{"ruleId":"D2","level":"warning","message":{"text":"PathAssignments::visit_inner (cognitive 24): PathAssignments::visit_inner has cognitive complexity 24 (threshold 15). Drivers by points: if/else 19, match/switch 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":6732}}}],"partialFingerprints":{"codehealthFindingId/v1":"4664378d826c2a4ad2080be05403188b94c5c6416fd23fc3c66a8d6b6b4f867b"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::report (cognitive 24): AssignmentAttributeWriteEvaluator::report has cognitive complexity 24 (threshold 15). Drivers by points: if/else 23, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"597b1dbda32a2e2d12fa0abfa06f248dbf93157fed03fff3effdb18845b01bde"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::parse_enum_members_from_sequence (cognitive 24): TypeInferenceBuilder::parse_enum_members_from_sequence has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20, loops 2, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"739c655e2a1bc335eb3bca47faa36e15a0bd91a5ecda309fcf9cbf7761dee252"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowingConstraintsBuilder::evaluate_expr_compare_op (cognitive 24): NarrowingConstraintsBuilder::evaluate_expr_compare_op has cognitive complexity 24 (threshold 15). Drivers by points: if/else 16, match/switch 6, boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":3024}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b85045ea9f3f642cee3192e65718296db10d59d7039b8951b79ed6292db0f11"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::try_iterate_with_mode::non_async_special_case (cognitive 24): Type::try_iterate_with_mode::non_async_special_case has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13, loops 6, match/switch 5 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ca8e0bceb823a4dacfe31d8c014ac2e978e8cf8066db97b15038092dd551a7"}},{"ruleId":"D2","level":"warning","message":{"text":"generics::bind_typevar (cognitive 24): generics::bind_typevar has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, match/switch 4, loops 3, boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ec49de98eefe766be6d89301fac4a464a975620ba14f40ff149fc8241a12c0"}},{"ruleId":"D2","level":"warning","message":{"text":"InlineFileAssertions::from_comment_ranges (cognitive 23): InlineFileAssertions::from_comment_ranges has cognitive complexity 23 (threshold 15). Drivers by points: if/else 19, loops 4 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/assertion.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"f833a1db77252358bb637ec693ae746f71562c68612f6f193e49479c3cffdccd"}},{"ruleId":"D2","level":"warning","message":{"text":"GroupNameFinder::visit_expr (cognitive 23): GroupNameFinder::visit_expr has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17, loops 4, boolean chains 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64df9982ccc82d881ba6b1a18d25435a580219aa462238f91b4dc571fc15be0"}},{"ruleId":"D2","level":"warning","message":{"text":"compare_to_empty_string::compare_to_empty_string (cognitive 23): compare_to_empty_string::compare_to_empty_string has cognitive complexity 23 (threshold 15). Drivers by points: if/else 22, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/compare_to_empty_string.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eafc066be3cad72ab478df4eb7cf4d4e3c422e8b16bdc58b3881b0a9fa8b7f2"}},{"ruleId":"D2","level":"warning","message":{"text":"deprecated_mock_import::clean_import_aliases (cognitive 23): deprecated_mock_import::clean_import_aliases has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16, match/switch 5, boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_mock_import.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cfc466215c5728c5de8a5efaa72a9c05ba720fcb5c93e5b37146438dc250b0c"}},{"ruleId":"D2","level":"warning","message":{"text":"printf_string_formatting::printf_string_formatting (cognitive 23): printf_string_formatting::printf_string_formatting has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11, loops 6, match/switch 6 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"58723d6303187d4f490ea51db21de6dbf1d3abe3cdd01ad3ae2799156c84cfc4"}},{"ruleId":"D2","level":"warning","message":{"text":"blank_after_summary::blank_after_summary (cognitive 23): blank_after_summary::blank_after_summary has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, loops 7, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/blank_after_summary.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"1978eac3f4b75564aadfc7f57ae6e0cfa674633305ab53416d2c4343ff8577c4"}},{"ruleId":"D2","level":"warning","message":{"text":"call_datetime_strptime_without_zone::call_datetime_strptime_without_zone (cognitive 23): call_datetime_strptime_without_zone::call_datetime_strptime_without_zone has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14, match/switch 6, loops 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_datetimez/rules/call_datetime_strptime_without_zone.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d6f5394b6d1b003bf6167402e987dc0b347b7d46d5a6a8811d85731a83cd17"}},{"ruleId":"D2","level":"warning","message":{"text":"linter::lint_fix (cognitive 23): linter::lint_fix has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16, loops 5, boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/linter.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce0d57f5f6a22b986663d8f6c67d9eff5cd40851e2de8fc6e6ff120ccbc61c18"}},{"ruleId":"D2","level":"warning","message":{"text":"removal_in_3::is_context_key_access (cognitive 23): removal_in_3::is_context_key_access has cognitive complexity 23 (threshold 15). Drivers by points: if/else 21, boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"77cde96b3e0f27c3bd9f9069b7059332d67a020296701eab98c9d72d6bb91c32"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_comma_separated_list (cognitive 23): Parser::parse_comma_separated_list has cognitive complexity 23 (threshold 15). Drivers by points: if/else 21, boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"63699571ca35a1d1bc506e3525dcc9ac372b994b8da663ca36bbec3e1b36e4b7"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalReferencesFinder::enter_node (cognitive 23): LocalReferencesFinder::enter_node has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, loops 4, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/references.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6d679c82c3cc05db046a3446e890d020d1182cd229f0cbe397bd78b0f702b4"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticTokenVisitor::visit_expr (cognitive 23): SemanticTokenVisitor::visit_expr has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12, match/switch 8, loops 2, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"109630b9ca2e5f605248d369f7e3e99ee46c4d6366420a6373bdeb3b8ec9bb99"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundSuperError::report_diagnostic (cognitive 23): BoundSuperError::report_diagnostic has cognitive complexity 23 (threshold 15). Drivers by points: if/else 19, match/switch 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bound_super.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"05efb76c5f7db9918a9eb9a60978022de4e0ee20ec419281a8a13ca1e452b7de"}},{"ruleId":"D2","level":"warning","message":{"text":"Binding::partial_application (cognitive 23): Binding::partial_application has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12, loops 7, boolean chains 2, match/switch 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":7078}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e800aec96e506ef2ef5239016e4f95296c2d46aa56e7e3bb16d17055c9a4299"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::merged_dataclass_params (cognitive 23): StaticClassLiteral::merged_dataclass_params has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13, loops 8, boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"b94431d4604c6c8b6269f4d937f05bf2cd579039ec8a5e63324e0b9ea16632c0"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_paramspec_explicit_specialization_value (cognitive 23): TypeInferenceBuilder::infer_paramspec_explicit_specialization_value has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16, match/switch 3, boolean chains 2, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9f8acd9db8de10849b4f3fd1421f81d0970ef30cd4ede7d33f041d26a45d66"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::add_declaration_with_binding (cognitive 23): TypeInferenceBuilder::add_declaration_with_binding has cognitive complexity 23 (threshold 15). Drivers by points: if/else 21, boolean chains 1, match/switch 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":1638}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdec36bce36eda8f64ea214abbc41da187c9ed8cf0b02b45e277ddabffc5e949"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_assignment_deferred (cognitive 23): TypeInferenceBuilder::infer_assignment_deferred has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, boolean chains 3, loops 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3535}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe7d79a98c7a6a4be2e15d94b3af69f54bb8a82c92939e82ab139bbb9639feb9"}},{"ruleId":"D2","level":"warning","message":{"text":"UnionElement::try_reduce (cognitive 23): UnionElement::try_reduce has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, match/switch 3, boolean chains 2 (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8e09dd37955de5b66768e1bc017c78c4f115aa26f9bfd5df9dc57471a746fa"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::validate_merged_unpacked_keyword_argument (cognitive 23): typed_dict::validate_merged_unpacked_keyword_argument has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, loops 4, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":2757}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db92e7e4ce9d3bcfb9b8876a64eb2053bcfcefdc348910795dba16376a400aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_support::definitions_for_name (cognitive 23): ide_support::definitions_for_name has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, boolean chains 3, match/switch 3, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44b0ca9c8ee21782ce22332ae6a8e560b431a09d2336a088a0f718d165a51b2"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeActionRequestHandler::run_with_snapshot (cognitive 23): CodeActionRequestHandler::run_with_snapshot has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9, match/switch 8, loops 4, boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/api/requests/code_action.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"04e013332748539e452fb052c5234719b15e0e2ef0f303ff4b316b3392ce3578"}},{"ruleId":"D2","level":"warning","message":{"text":"format::format_path (cognitive 22): format::format_path has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, match/switch 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c775baf2be58c4e3204ac29eb3d3e8b9dddf7a3109023a60247afae95300d8c"}},{"ruleId":"D2","level":"warning","message":{"text":"JunitRenderer::render (cognitive 22): JunitRenderer::render has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, loops 5, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/junit.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"a032158df4c029763454065db098f0ad20d36c8a62b203bae6337937ab4c0461"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_rules_table::generate (cognitive 22): generate_rules_table::generate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11, match/switch 7, loops 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_rules_table.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0065da4f79edc0966b3c037397a1772c87623edc933241ec8aac8a6ddad25d"}},{"ruleId":"D2","level":"warning","message":{"text":"FileNoqaDirectives::extract (cognitive 22): FileNoqaDirectives::extract has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11, loops 5, match/switch 5, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/noqa.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0c4e7b56a1f82bc2742cb3934a9ab0a910d75e45aaf9bc9ab3334e45226d14f"}},{"ruleId":"D2","level":"warning","message":{"text":"LoggerCandidateVisitor::visit_expr (cognitive 22): LoggerCandidateVisitor::visit_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 20, match/switch 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/tryceratops/helpers.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0516df86c817734c2ea40d9fdd7939356d096159c0b94640fb49f4f243bf032"}},{"ruleId":"D2","level":"warning","message":{"text":"raises::raises_call (cognitive 22): raises::raises_call has cognitive complexity 22 (threshold 15). Drivers by points: if/else 20, boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/raises.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fff9ff14db8e9dce1619744dd07f834854919ac8023937786f5a9ff2c9c150a"}},{"ruleId":"D2","level":"warning","message":{"text":"sections::is_docstring_section (cognitive 22): sections::is_docstring_section has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/docstrings/sections.rs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff03136582fd42788d1df602fe9d3aef38fd9fd9113b04451b1d4964fe702a13"}},{"ruleId":"D2","level":"warning","message":{"text":"check_string_quotes::strings (cognitive 22): check_string_quotes::strings has cognitive complexity 22 (threshold 15). Drivers by points: if/else 19, boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_quotes/rules/check_string_quotes.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6554ecfd8fb1842d2bd7c5c78a8633be3fc90ca592903aa6d5616f75f4b0e2"}},{"ruleId":"D2","level":"warning","message":{"text":"import_private_name::import_private_name (cognitive 22): import_private_name::import_private_name has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13, boolean chains 4, match/switch 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/import_private_name.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b41ebc178d150fa2a4d0bc27205360ed9ef2ccfd5246a1e91fb56c018a54249"}},{"ruleId":"D2","level":"warning","message":{"text":"fixes::fix_unnecessary_comprehension_in_call (cognitive 22): fixes::fix_unnecessary_comprehension_in_call has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11, loops 6, match/switch 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_comprehensions/fixes.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"b118dccc07ec94cd5be2808e0eb065a110fdeaa01cb85ac22fb610321f215339"}},{"ruleId":"D2","level":"warning","message":{"text":"assertion::fix_composite_condition (cognitive 22): assertion::fix_composite_condition has cognitive complexity 22 (threshold 15). Drivers by points: if/else 20, loops 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/assertion.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed3a275bb7c620ee5c5c7933e4cc45e5c8cf450bffc7d31182c5593bbfb5e507"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::has_slots (cognitive 22): helpers::has_slots has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, loops 4, match/switch 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_slots/helpers.rs"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4618c156301f6708169d33c0ff6b8639e5bcc42f57760417f7877e70875272a"}},{"ruleId":"D2","level":"warning","message":{"text":"sections::missing_args (cognitive 22): sections::missing_args has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, boolean chains 5, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":1895}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdcce468570131b80b67a9b4e8930b03289718f844e7d23ee0655f1b34bbc222"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatExprAttribute::fmt_fields (cognitive 22): FormatExprAttribute::fmt_fields has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14, boolean chains 5, match/switch 3 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_attribute.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"69627006edf18fdbb220dad18903d63ff88043dc9fa8106439145a88bd87911b"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatImplicitConcatenatedStringFlat::fmt (cognitive 22): FormatImplicitConcatenatedStringFlat::fmt has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8, loops 6, match/switch 6, boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/implicit.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"f571887c18fb0f1796d38c182973617932cd892438111a1bd168fec061cf6c7d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_match_pattern_literal (cognitive 22): Parser::parse_match_pattern_literal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 21, match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/pattern.rs"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8d74d17bf146576665815082141fd64257b5acd08af74e4c03740792cfd664"}},{"ruleId":"D2","level":"warning","message":{"text":"RecoveryContextKind::list_terminator_kind (cognitive 22): RecoveryContextKind::list_terminator_kind has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13, match/switch 8, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"186baae8daf7e1801a195539429fadbe8d3c8a554afb5a4019bd213572ad7704"}},{"ruleId":"D2","level":"warning","message":{"text":"StringParser::parse_interpolated_string_middle (cognitive 22): StringParser::parse_interpolated_string_middle has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, match/switch 7, boolean chains 2, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/string.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"245c3fda7419f09b009c3baacba16062f00b0d479de46116db113fe5cd31567c"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeActions::run_with_snapshot (cognitive 22): CodeActions::run_with_snapshot has cognitive complexity 22 (threshold 15). Drivers by points: if/else 19, boolean chains 2, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/server/api/requests/code_action.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3824a3e32811a31eaa3071cf5f450989f37da13d0075797cd4c23607e0bc27"}},{"ruleId":"D2","level":"warning","message":{"text":"resolver::project_files_in_path (cognitive 22): resolver::project_files_in_path has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, loops 6 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9d4553a7682ec3e468fa4932347ea063c31ccf125cadef61ec9dee87f7e21c"}},{"ruleId":"D2","level":"warning","message":{"text":"SectionItem::render (cognitive 22): SectionItem::render has cognitive complexity 22 (threshold 15). Drivers by points: if/else 20, match/switch 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/docstring/markdown/structured.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89a718a870c0294c140ed843a086621f4194e2e23d8793746451828f70df628"}},{"ruleId":"D2","level":"warning","message":{"text":"FoldingRangeVisitor::add_import_ranges (cognitive 22): FoldingRangeVisitor::add_import_ranges has cognitive complexity 22 (threshold 15). Drivers by points: if/else 21, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/folding_range.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"810728814561e70fcfa5e3aa48b9d251e5a1db3986fe9b0eb577cbe6438a7066"}},{"ruleId":"D2","level":"warning","message":{"text":"FoldingRangeVisitor::add_comment_ranges (cognitive 22): FoldingRangeVisitor::add_comment_ranges has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, boolean chains 3, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/folding_range.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"3508d6b43ee13bdde7aa83340d7e04a5b3853c5693b2a91df6bbe2e17a9d66a9"}},{"ruleId":"D2","level":"warning","message":{"text":"structured::render_sections_into (cognitive 22): structured::render_sections_into has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, match/switch 2, boolean chains 1, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/docstring/markdown/structured.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c72e959bb14e951ae52debf7162ede06d18dc407c98b7a9985e9ff91ca3c8b"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayKnownInstanceRepr::fmt_detailed (cognitive 22): DisplayKnownInstanceRepr::fmt_detailed has cognitive complexity 22 (threshold 15). Drivers by points: if/else 19, loops 2, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":3253}}}],"partialFingerprints":{"codehealthFindingId/v1":"459b6e65bdfc61af550c42d76ed1a85f39ddf5accce70b53adfb474d2f82f4e3"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_callable_type::inner (cognitive 22): TypeInferenceBuilder::infer_callable_type::inner has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, loops 3, boolean chains 2, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1873}}}],"partialFingerprints":{"codehealthFindingId/v1":"a739bcbef90b4288d1301c2d61520f70969f04b5ce1343535d22550ca5aa244e"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_literal_parameter_type (cognitive 22): TypeInferenceBuilder::infer_literal_parameter_type has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13, match/switch 6, loops 2, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":2628}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6ca6fe9ca5590603dee241071e88fbb7c76553e42555b5b9419003bbc857e7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_target_impl (cognitive 22): TypeInferenceBuilder::infer_target_impl has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11, loops 6, match/switch 5 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":3083}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c4c40980bf6e838b3ff503c28ede1ac52decebd3976de9ad381d8923bb78d4"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_chained_boolean_types (cognitive 22): TypeInferenceBuilder::infer_chained_boolean_types has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, match/switch 9, boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":10645}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c155db26d291e4d656ebd3267b52ca23da9cde21f0643e5499aa208cb7417ef"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowingConstraintsBuilder::narrow_type_by_exact_len (cognitive 22): NarrowingConstraintsBuilder::narrow_type_by_exact_len has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 12, if/else 8, boolean chains 2 (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":2786}}}],"partialFingerprints":{"codehealthFindingId/v1":"684001f7f7b2d0d4b7e8992b40d2fb2d202f171f2527accab213728fdee3840d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_type_satisfies_protocol (cognitive 22): TypeRelationChecker::check_type_satisfies_protocol has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, boolean chains 7 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/instance.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1dbcd5859bc0ef57d83a6abab8c02fee9994e8113ebd0268c3764a1b0493563"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::find_legacy_typevars_impl (cognitive 22): Type::find_legacy_typevars_impl has cognitive complexity 22 (threshold 15). Drivers by points: loops 10, if/else 8, match/switch 4 (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":6858}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d323a119afaaec038ce347ee1cf1f963948668e9341e1bc38d5af640e29e232"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::validate_typed_dict_class_body_statements (cognitive 22): typed_dict::validate_typed_dict_class_body_statements has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, loops 4, match/switch 2, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/typed_dict.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4daa80c495690e27fe5b2e417c89f3e4428ce1392b1c3cd4976c79f88ade505"}},{"ruleId":"D2","level":"warning","message":{"text":"ty_site_packages::site_packages_directories_from_sys_prefix (cognitive 22): ty_site_packages::site_packages_directories_from_sys_prefix has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, loops 7 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_site_packages/src/lib.rs"},"region":{"startLine":1612}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e6ea6a9f5ead1d2cfdaf5ba65469b36226ad44be29e633b3be8456504b237e1"}},{"ruleId":"D2","level":"warning","message":{"text":"MemoryWalker::walk (cognitive 21): MemoryWalker::walk has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 10, if/else 8, loops 3 (nesting depth added 13). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/system/memory_fs.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a9f68388a6bd40c1fb5540e9b5688a8e35c96e47d6acc70de056486669ba18"}},{"ruleId":"D2","level":"warning","message":{"text":"Document::propagate_expand::propagate_expands (cognitive 21): Document::propagate_expand::propagate_expands has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, match/switch 8, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/format_element/document.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d028b45ead3a80d23b13b77b5f66fe48c4b95bee4dc40a9ac2476579b6d252"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_list_cast::match_mutation (cognitive 21): unnecessary_list_cast::match_mutation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 20, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/perflint/rules/unnecessary_list_cast.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db933390ec10d4edd89e84785a7ab6292f4610590819535a85435efe817337d"}},{"ruleId":"D2","level":"warning","message":{"text":"check_docstring::parse_parameters_numpy (cognitive 21): check_docstring::parse_parameters_numpy has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, loops 6 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"40c94e2313785c52627d7106499b4dbc8cd419b9d94498bc353894b7dcd67a2a"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_spread::unnecessary_spread_fix (cognitive 21): unnecessary_spread::unnecessary_spread_fix has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, match/switch 4, boolean chains 2, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pie/rules/unnecessary_spread.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf89e9975b6796ce89e7bb22a7816762980551e4e6a4c5ad769c73718ef745d"}},{"ruleId":"D2","level":"warning","message":{"text":"collapsible_if::nested_if_statements (cognitive 21): collapsible_if::nested_if_statements has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, match/switch 2, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/collapsible_if.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"498435032029a980ce1abca5a0becb30f15a4ce42b4eae5a67c38228b764dd5e"}},{"ruleId":"D2","level":"warning","message":{"text":"missing_whitespace::missing_whitespace (cognitive 21): missing_whitespace::missing_whitespace has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, match/switch 7, boolean chains 2, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5e9450a2f8e04c20ca969d75219c33e2b33aa79caa2a34e7c3ca6b659b79217"}},{"ruleId":"D2","level":"warning","message":{"text":"printf_string_formatting::convertible (cognitive 21): printf_string_formatting::convertible has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, boolean chains 6, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/printf_string_formatting.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdcb1cd5c93719b91a20245b7bc9d0e9f647021fbac17060a6e07e8cbd856dc7"}},{"ruleId":"D2","level":"warning","message":{"text":"hardcoded_bind_all_interfaces::hardcoded_bind_all_interfaces (cognitive 21): hardcoded_bind_all_interfaces::hardcoded_bind_all_interfaces has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, loops 6, match/switch 4 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/hardcoded_bind_all_interfaces.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c72cd9a9e3987f8cb851c516bb5e5427b364772b72920e4f3aa8173253a8b8c"}},{"ruleId":"D2","level":"warning","message":{"text":"isort::format_imports (cognitive 21): isort::format_imports has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10, loops 7, match/switch 3, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/mod.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2b05e8bfaa470612169d3a4b657aa86f318961d3f09fadace3892fda12bee25"}},{"ruleId":"D2","level":"warning","message":{"text":"directives::extract_isort_directives (cognitive 21): directives::extract_isort_directives has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, boolean chains 3, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/directives.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cc6148db8b2f3691156229a73287c7948f17ed6b2144d95a32a90e5e9f00c41"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::get_section_contexts (cognitive 21): helpers::get_section_contexts has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16, match/switch 3, loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/helpers.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5269ee833022919daf43995254c078fc06726bc56c731a3415f8a74ef17e4f"}},{"ruleId":"D2","level":"warning","message":{"text":"invalid_literal_comparisons::invalid_literal_comparison (cognitive 21): invalid_literal_comparisons::invalid_literal_comparison has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, match/switch 4, boolean chains 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/invalid_literal_comparisons.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf98c6d63f52942fc1c4b312945b497c2749fcb0de05403654a4f505bfca3951"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::any_over_stmt::inner (cognitive 21): helpers::any_over_stmt::inner has cognitive complexity 21 (threshold 15). Drivers by points: boolean chains 20, match/switch 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"b999894c499777e0b96b9135dd27454e2942a222154f87a2696a2f47cf054c4e"}},{"ruleId":"D2","level":"warning","message":{"text":"DocstringLinePrinter::run_action_queue (cognitive 21): DocstringLinePrinter::run_action_queue has cognitive complexity 21 (threshold 15). Drivers by points: loops 16, match/switch 5 (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/docstring.rs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a95452b3a8cf8563b21b8aa175b402b850eeed735a24d82340d06904b2e8237"}},{"ruleId":"D2","level":"warning","message":{"text":"placement::handle_comprehension_comment (cognitive 21): placement::handle_comprehension_comment has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":2201}}}],"partialFingerprints":{"codehealthFindingId/v1":"bad637ff76fc4d1d7270439cfa8f7d1517acc40c3cb9f5944ef6b2a19053f10d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::try_parse_parenthesized_with_items (cognitive 21): Parser::try_parse_parenthesized_with_items has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, match/switch 3, boolean chains 2, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":2350}}}],"partialFingerprints":{"codehealthFindingId/v1":"996fa93aeeadd39c7831f62c7cd6cce8a6b1a8cbed81219361265acd19e659b5"}},{"ruleId":"D2","level":"warning","message":{"text":"Options::to_search_paths (cognitive 21): Options::to_search_paths has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, boolean chains 4, match/switch 3, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/metadata/options.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea1880227c33a4d6a9a779f581decdb8684d9c731473837af5b9e6af97b12404"}},{"ruleId":"D2","level":"warning","message":{"text":"SuppressionsBuilder::add_comment (cognitive 21): SuppressionsBuilder::add_comment has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, match/switch 4, loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/suppression.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee449c3f4178f3073805fa2a354f89db6b87f19b77fe06f448cd01e933ee9a5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_nested_match_pattern (cognitive 21): TypeInferenceBuilder::infer_nested_match_pattern has cognitive complexity 21 (threshold 15). Drivers by points: loops 12, if/else 8, match/switch 1 (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"a54c920df1e9acedd0d43e76c2b8b571c084d7d2eb66d12d7cefe4eb3c902b67"}},{"ruleId":"D2","level":"warning","message":{"text":"Mro::of_dynamic_class (cognitive 21): Mro::of_dynamic_class has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, loops 3, match/switch 2, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/mro.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c894b261b4662a490386513cbf97b12bfd791a722098af13869391a4cad368c"}},{"ruleId":"D2","level":"warning","message":{"text":"Parameters::from_normalized (cognitive 21): Parameters::from_normalized has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, match/switch 2, boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":3861}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a1a20cbe33be13f32c45c8e395480366192e9652f9fc59bfecb252efa5f553"}},{"ruleId":"D2","level":"warning","message":{"text":"Unpacker::unpack_inner (cognitive 21): Unpacker::unpack_inner has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 10, if/else 7, loops 4 (nesting depth added 13). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/unpacker.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"15dc4d8514ccd7f1b1b6736dc0d96a731f949a8f2d71b366ca3740b6fcf87613"}},{"ruleId":"D2","level":"warning","message":{"text":"equality::evaluate_structural_comparison (cognitive 21): equality::evaluate_structural_comparison has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 9, if/else 7, boolean chains 5 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ee837c6667ef50b57180531a981d7671d8b6994f2c434b6b81681b004d2468"}},{"ruleId":"D2","level":"warning","message":{"text":"pydantic::lax_input_type_impl (cognitive 21): pydantic::lax_input_type_impl has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, match/switch 2, boolean chains 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/dedicated/pydantic.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"555c99d7d7dfdbf8a78bfd83be0a535d6ce12facc0af9a519f06cc729c9ff87d"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostic::report_overridden_final_method (cognitive 21): diagnostic::report_overridden_final_method has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16, boolean chains 3, match/switch 2 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":4005}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c2aeab7d5e85df0ea35af8fb7b63a6712ece4423fb5e9431da1b29cd14256f"}},{"ruleId":"D2","level":"warning","message":{"text":"semantic_tokens::generate_semantic_tokens (cognitive 21): semantic_tokens::generate_semantic_tokens has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, loops 7 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/api/semantic_tokens.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18ea7f1a002987ee1a76fbcf2f8bc30ddcef642b81b8f4c6aa2fbd9f342c401"}},{"ruleId":"D2","level":"warning","message":{"text":"ExplicitConfigOverrides::transform (cognitive 20): ExplicitConfigOverrides::transform has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/args.rs"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f99ca7195d75ca25678ecbe84b272e1b9cc5b4211824c2b35a386396817d34"}},{"ruleId":"D2","level":"warning","message":{"text":"check::check (cognitive 20): check::check has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, boolean chains 2, loops 2, match/switch 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/check.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"9363069e87807133a0cf1aa7e4e588c8eff568404ecae9186f315d1a47a8de9b"}},{"ruleId":"D2","level":"warning","message":{"text":"print_empty_string::print_empty_string (cognitive 20): print_empty_string::print_empty_string has cognitive complexity 20 (threshold 15). Drivers by points: if/else 18, boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/print_empty_string.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"5242476d6667a618c48148026aaaf7bdf8ff2e084dbc63f0dcd8ec4e9632dfb3"}},{"ruleId":"D2","level":"warning","message":{"text":"directives::extract_noqa_line_for (cognitive 20): directives::extract_noqa_line_for has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, loops 4, match/switch 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/directives.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b7a5d0c9b139c98fcb0f5da26a90a53c7089a2644597a015896f9084721e8f"}},{"ruleId":"D2","level":"warning","message":{"text":"unused_loop_control_variable::unused_loop_control_variable (cognitive 20): unused_loop_control_variable::unused_loop_control_variable has cognitive complexity 20 (threshold 15). Drivers by points: if/else 18, loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ba583b0f5195d4635c63dcd93b624c1fc3c2fa76dd2ed6143eaef8a9e24f26"}},{"ruleId":"D2","level":"warning","message":{"text":"sorted_min_max::sorted_min_max (cognitive 20): sorted_min_max::sorted_min_max has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9, match/switch 8, boolean chains 2, loops 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/refurb/rules/sorted_min_max.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d4ec1018f617a4051915515050fd7ca5696c1be8ad45ac290f6b83fdc9320d"}},{"ruleId":"D2","level":"warning","message":{"text":"class_as_data_structure::class_as_data_structure (cognitive 20): class_as_data_structure::class_as_data_structure has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12, boolean chains 5, match/switch 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/class_as_data_structure.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e67b3f24882cee79aefb20306419617888ad3095f4df3f33851fd53782dfb42"}},{"ruleId":"D2","level":"warning","message":{"text":"f_strings::f_strings (cognitive 20): f_strings::f_strings has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, match/switch 7, loops 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/f_strings.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9017ef583bd397139f1a09da9a0c38ca439f8b592fbdc32610ddf46ac1b5e86"}},{"ruleId":"D2","level":"warning","message":{"text":"indentation::indentation (cognitive 20): indentation::indentation has cognitive complexity 20 (threshold 15). Drivers by points: if/else 18, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/indentation.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e580411e421ad21c72f22a211a18fe30353d5a7e99977e829610c18a736cf6"}},{"ruleId":"D2","level":"warning","message":{"text":"stylist::detect_indentation (cognitive 20): stylist::detect_indentation has cognitive complexity 20 (threshold 15). Drivers by points: if/else 18, loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/stylist.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeebd307c8e71efc0f54f1f92c604fe8868cd5174e3b24f8a405859d6dbb83da"}},{"ruleId":"D2","level":"warning","message":{"text":"Indentation::trim_start (cognitive 20): Indentation::trim_start has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, match/switch 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/docstring.rs"},"region":{"startLine":1749}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f44838a9e5b4cdca245fee6c6bedf037e1c83cf5075e2fb7feaa57b4c628998"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_binary_expression_or_higher_recursive (cognitive 20): Parser::parse_binary_expression_or_higher_recursive has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, match/switch 2, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6dce3b61d39fd198f5c7e3ab86906d4634a04ba0cec89c2c1e2087d8332ffc2"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_lhs_expression_inner (cognitive 20): Parser::parse_lhs_expression_inner has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, boolean chains 3, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f4796e30c2b64f49ab1d2951c2687a1a56526b72f3c5272fd1eca0dd4347de"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_simple_statement (cognitive 20): Parser::parse_simple_statement has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, match/switch 4, boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b62bacca8ff3ec49f2f0a8b6663311b520db623e797a9f8b95d05937e54c191"}},{"ruleId":"D2","level":"warning","message":{"text":"RuffSettingsIndex::new (cognitive 20): RuffSettingsIndex::new has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, match/switch 7, boolean chains 1, loops 1 (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/session/index/ruff_settings.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c7736af01059da452fd6246c46ef30b0faf2133ca0ada1ee771669efa4bc22"}},{"ruleId":"D2","level":"warning","message":{"text":"TyFormat::format_event (cognitive 20): TyFormat::format_event has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, match/switch 3, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty/src/logging.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e1cdbaad151754829a18269cd72757b2228a20e0d6b64ab502d2b0a1bfd7e6"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::own_class_member (cognitive 20): StaticClassLiteral::own_class_member has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, boolean chains 4, match/switch 2 (nesting depth added 3). Of this number, 18 points are the body\u0027s own statements and 2 belong to one function item declared inside it. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1250}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0f1258e0c3fc930466ab75d2611449af7806d40903cfca123beba495b2fc308"}},{"ruleId":"D2","level":"warning","message":{"text":"MroLookup::instance_member (cognitive 20): MroLookup::instance_member has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, match/switch 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":2672}}}],"partialFingerprints":{"codehealthFindingId/v1":"f69cf1bbf607adc54c4c212028bbd4f086c3060a07788084317ee3e4aa4f01b4"}},{"ruleId":"D2","level":"warning","message":{"text":"PathBounds::compute_simple_bound_conjunction (cognitive 20): PathBounds::compute_simple_bound_conjunction has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, match/switch 3, boolean chains 2, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":3722}}}],"partialFingerprints":{"codehealthFindingId/v1":"8014c94b5797888946d83b647819968415d27e1458cb611f7ae9ab22f1ee7efa"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayParameters::fmt_detailed::display_parameters (cognitive 20): DisplayParameters::fmt_detailed::display_parameters has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, boolean chains 3, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2379}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba6a659a5491f1853ba2d8d1b21c252d036ca52efdfaa30a0a6c3cc6d7e51575"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_region_scope (cognitive 20): TypeInferenceBuilder::infer_region_scope has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 8, loops 7, if/else 5 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"5417c73c53971b0fd97e735ed58b975f5f3f62f027743711aafa1d9986d3baaa"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_class_pattern (cognitive 20): TypeInferenceBuilder::validate_class_pattern has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, match/switch 3, boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"866e113d6bf156b4bc4a70db1b3789d86abca5131eea01bad3eefe047a58bd73"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_all_argument_types (cognitive 20): TypeInferenceBuilder::infer_all_argument_types has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, loops 4, match/switch 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":5767}}}],"partialFingerprints":{"codehealthFindingId/v1":"1444ae8464515dabe8cde1976e93bae5f564ff08a5af43de9e27f99e559844e2"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_tuple_expression (cognitive 20): TypeInferenceBuilder::infer_tuple_expression has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, match/switch 3, boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6563}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39860916ac5c7d5d6e2c6fe8fd805a71d31d3c47610b7ea7c465167d16107dc"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::try_call_dunder_get (cognitive 20): Type::try_call_dunder_get has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, boolean chains 4, match/switch 1 (nesting depth added 2). Most of this is not in the body itself: 6 of the 20 points are its own statements and the rest belongs to one function item declared inside it (try_call_dunder_get_inner). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":3201}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a88c39b36f0c7aff7f00b8b4679073a65a278da6217f40d6079a20fc73bf3b"}},{"ruleId":"D2","level":"warning","message":{"text":"AwaitError::report_diagnostic (cognitive 20): AwaitError::report_diagnostic has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, loops 3, boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":8525}}}],"partialFingerprints":{"codehealthFindingId/v1":"1399b1412a5b9bd7f1f008be93e46103e32665ce5399593bda5b33477955187f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_support::direct_subtypes (cognitive 20): ide_support::direct_subtypes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, boolean chains 4, loops 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":2731}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c2df5fadfd66e338caade7059f13bfd7684a687a59576db80f7ed9476ba410"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostics::to_lsp_diagnostic (cognitive 20): diagnostics::to_lsp_diagnostic has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, loops 3, match/switch 3, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/api/diagnostics.rs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7a06a5ba90609e0431214ce43df35fd1fbb2f0fdc23dff2e2b81acb4d70d71"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatCommandError::fmt (cognitive 19): FormatCommandError::fmt has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc539f773412a146f2785dba375cfa86a218ca5f448d4a1521d7f5d6b0f90a0"}},{"ruleId":"D2","level":"warning","message":{"text":"render::render_short_message (cognitive 19): render::render_short_message has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17, match/switch 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75097cdaf3e137013a1085f416da39737292c2421aed62c6bbc7ba794ca6a65"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportReplacer::with_renames (cognitive 19): ImportReplacer::with_renames has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, loops 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/deprecated_import.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda29088c684c9cf26d1623ccbf10a0e3ae2284e0b29d9cd01428fa73cfa9fef"}},{"ruleId":"D2","level":"warning","message":{"text":"assert_on_string_literal::assert_on_string_literal (cognitive 19): assert_on_string_literal::assert_on_string_literal has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, match/switch 9 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/assert_on_string_literal.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"50478c70f8d44dcac35d73324030e64b4b95d726a810cf280b14760650394c67"}},{"ruleId":"D2","level":"warning","message":{"text":"needless_bool::needless_bool (cognitive 19): needless_bool::needless_bool has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, match/switch 5 (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/needless_bool.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f8045c8de29a64bdebb247a93eb83d5ccd62292127efc36d3b1f665f39396f"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_dict_kwargs::duplicates (cognitive 19): unnecessary_dict_kwargs::duplicates has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, loops 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb47c19db8017dd4a872d1b6d7df1beec466946bdced8ccd3e565eb0b5ecf23f"}},{"ruleId":"D2","level":"warning","message":{"text":"backslashes::backslashes (cognitive 19): backslashes::backslashes has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/backslashes.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b151c6073b45f01e1e13a4b71d9d2067deeb20c4d8cc24192945aaf7668346bb"}},{"ruleId":"D2","level":"warning","message":{"text":"ast_with::multiple_with_statements (cognitive 19): ast_with::multiple_with_statements has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, match/switch 3, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/ast_with.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4763a467537704f83e063a7b6b097210b844bd4ce7f4c135fd2d5c9acdb7a9b"}},{"ruleId":"D2","level":"warning","message":{"text":"subscript::subscript (cognitive 19): subscript::subscript has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, boolean chains 4, match/switch 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_2020/rules/subscript.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"731ba393549dbfd01558170adf7a89196c17cff1acf50ce3f37d2343b8ac2897"}},{"ruleId":"D2","level":"warning","message":{"text":"repeated_keyword_argument::repeated_keyword_argument (cognitive 19): repeated_keyword_argument::repeated_keyword_argument has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, loops 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/repeated_keyword_argument.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7b423596007c7232abe92ed1da21daf59a5a42a162b64feb9711a408ec26402"}},{"ruleId":"D2","level":"warning","message":{"text":"mutable_argument_default::move_initialization (cognitive 19): mutable_argument_default::move_initialization has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, boolean chains 1, loops 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/mutable_argument_default.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1451719ff61bfa3fc6697ba367db0c149538d79c7ec940b3596fd0e79365854"}},{"ruleId":"D2","level":"warning","message":{"text":"multiple_starts_ends_with::multiple_starts_ends_with (cognitive 19): multiple_starts_ends_with::multiple_starts_ends_with has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ca7d98ba7e94ed303d7ac19dd3e79ead925ba4f6611502f21e4544c3a4cc9c0"}},{"ruleId":"D2","level":"warning","message":{"text":"raise_vanilla_args::contains_message (cognitive 19): raise_vanilla_args::contains_message has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9, loops 6, match/switch 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/tryceratops/rules/raise_vanilla_args.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"127343ed4d146362d842fc1fd7a89df6bc28587c29a7af5a48979f29468684d3"}},{"ruleId":"D2","level":"warning","message":{"text":"format::format_single_line (cognitive 19): format::format_single_line has cognitive complexity 19 (threshold 15). Drivers by points: loops 11, if/else 7, boolean chains 1 (nesting depth added 5). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/format.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d994ac5ca1c4757b7eb0375e504a62afec36c89e0f8b13eea975fc15bbe8b63a"}},{"ruleId":"D2","level":"warning","message":{"text":"non_self_return_type::non_self_return_type (cognitive 19): non_self_return_type::non_self_return_type has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12, boolean chains 6, match/switch 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/non_self_return_type.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"682ca545acfe5bd1c94e2bef3eb31ce69fb640fbda5fc2e8d4b9dc00bf557443"}},{"ruleId":"D2","level":"warning","message":{"text":"removal_in_3::check_name (cognitive 19): removal_in_3::check_name has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 17, if/else 2 (nesting depth added 7). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a9cbfc6627c65f668c34dad0e0581fbdfd9385cf54a22b9aa6f41eabfa67b2d"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::is_unpacking_assignment (cognitive 19): helpers::is_unpacking_assignment has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, boolean chains 5, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":1316}}}],"partialFingerprints":{"codehealthFindingId/v1":"54fa87a7bb67ae73e3222d5b3ab3c45ec2e96a2e30d1eacc0ddc84522a85f70c"}},{"ruleId":"D2","level":"warning","message":{"text":"expr_number_literal::normalize_floating_number (cognitive 19): expr_number_literal::normalize_floating_number has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, match/switch 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_number_literal.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"25aa8d72a1ce300f6d434a80e776f4d101e6377d840a42be6f9b5cee52987430"}},{"ruleId":"D2","level":"warning","message":{"text":"placement::handle_lambda_comment (cognitive 19): placement::handle_lambda_comment has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d95cdca22455730a8ffb3b4994f4a34312d2520332202a4d162af1aaade97b"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_slice (cognitive 19): Parser::parse_slice has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, match/switch 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b811941e4ba767bbe812cb36e8c2511e520e251788b3a4a770cdeeeafe25264"}},{"ruleId":"D2","level":"warning","message":{"text":"ty::run_check (cognitive 19): ty::run_check has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, boolean chains 2, match/switch 2. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty/src/lib.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"9884efd352035da1505e3c76245cc7097683d9365cabf1703a7f01017adee3af"}},{"ruleId":"D2","level":"warning","message":{"text":"Group::merge (cognitive 19): Group::merge has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, loops 5 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/all_symbols.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"73c601cffb7985180aa5a4edc0c7204cbc53c73fe6bfe139d4dd84786afebdf5"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextCursor::incomplete_keywords (cognitive 19): ContextCursor::incomplete_keywords has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8, boolean chains 7, match/switch 4 (nesting depth added 1). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dfef0efb4e62eb0bb22158f4be7316861d0156164dfac88371aadb95d3ce963"}},{"ruleId":"D2","level":"warning","message":{"text":"Lister::add_path (cognitive 19): Lister::add_path has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17, boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/list.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"a83d1c0adae59f16c23c66b4d4a7830f2641e3dc669711ce19b46ae01f4eb930"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticIndexBuilder::update_lazy_snapshots (cognitive 19): SemanticIndexBuilder::update_lazy_snapshots has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, loops 4, boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f40ac34a1c1decd80705e064e042b7f10fd6aedbeede3006f5cbce169717d8d"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowingProjector::project (cognitive 19): NarrowingProjector::project has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11, match/switch 5, boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/reachability.rs"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94293f1bb39842b629d34bb3d4ecd14552e8b29a237b0a5188033769c04b63c"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::validate_members (cognitive 19): StaticClassLiteral::validate_members has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, boolean chains 2, match/switch 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d60a62db9dca6a2699d3291a2bade50ff91b2e34cbd31c580678609f21e1e3"}},{"ruleId":"D2","level":"warning","message":{"text":"PathBounds::compute (cognitive 19): PathBounds::compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, loops 3, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":3572}}}],"partialFingerprints":{"codehealthFindingId/v1":"373b56f5d4a64e2a93194dcf944eebf75782bd035983d015d9eeca552590e479"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayCallableType::fmt_detailed (cognitive 19): DisplayCallableType::fmt_detailed has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, loops 2, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2158}}}],"partialFingerprints":{"codehealthFindingId/v1":"38c2d09c92e7009859620e0e7d29275c79d2cac4b23fbefa68c8d51b759fc64f"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayParameter::fmt_detailed (cognitive 19): DisplayParameter::fmt_detailed has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11, match/switch 7, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":2541}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce546a1bd77ba49a7629031a8b6246c071a5d2d0b727055c77e5eeafeb72876"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::invalid_assignment_to_final_attribute (cognitive 19): TypeInferenceBuilder::invalid_assignment_to_final_attribute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/final_attribute.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"423c1757e5fddad07b3d43b20f6d367dc413c3780dc4dce815cc7b4e8c53d3c8"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_collections_namedtuple_fields (cognitive 19): TypeInferenceBuilder::infer_collections_namedtuple_fields has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, boolean chains 4, loops 2 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/named_tuple.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41a1dec22d79a9fcc9d3a98cd95592cacdb1cb81559a8ddcd61d792398f6574"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::validate_fields_arg (cognitive 19): TypeInferenceBuilder::validate_fields_arg has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, loops 2, boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typed_dict.rs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7737f6a67a20a98a4ad11354119bdc9cf454aeb2589c6f7253b20ae78d4d50c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_fixed_length_tuple_vs_tuple_spec (cognitive 19): TypeRelationChecker::check_fixed_length_tuple_vs_tuple_spec has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, loops 4, match/switch 3, boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e3ad232411a97a9c24c0836f124ea8e34b094c95a2d59dc4399cc3a09ee3a9"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigArgumentParser::parse_ref (cognitive 18): ConfigArgumentParser::parse_ref has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, match/switch 6 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/args.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ad380778e3c0de59de26959b6806db0ebb7248eeef6c281b4aeea02432c13d"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::write_once (cognitive 18): Printer::write_once has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/printer.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"09c879cf2cf6f54922250e10db5af385cdcaa0b0231fb9fb2f4d5ed722684f25"}},{"ruleId":"D2","level":"warning","message":{"text":"format_dev::format_dev_multi_project (cognitive 18): format_dev::format_dev_multi_project has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, loops 6, match/switch 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/format_dev.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"033cd1306f196424d51ffcd50b83191d2c5b4d6a5d259fe6377f53a6c6b1a699"}},{"ruleId":"D2","level":"warning","message":{"text":"Checker::add_binding (cognitive 18): Checker::add_binding has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":2677}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5ddc695071ae1f02d4871efccaba56be301765de0a3db07b6ad0505536e728"}},{"ruleId":"D2","level":"warning","message":{"text":"UnittestAssert::generate_assert (cognitive 18): UnittestAssert::generate_assert has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, match/switch 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/unittest_assert.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be291c0095e19590766d9476cd0a29c69ee539e5c73eb92ab77a1f51e4ec5af"}},{"ruleId":"D2","level":"warning","message":{"text":"logging::logging_call (cognitive 18): logging::logging_call has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/logging.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"22605e1146d4ce79272e9beb0e08366e0402e56bd363d706a54f0e63f6560a6a"}},{"ruleId":"D2","level":"warning","message":{"text":"duplicate_exceptions::duplicate_handler_exceptions (cognitive 18): duplicate_exceptions::duplicate_handler_exceptions has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba140e14946e13b5a9874701807585973fe034b92bbd5709d269abc85d771d70"}},{"ruleId":"D2","level":"warning","message":{"text":"if_else_block_instead_of_dict_lookup::if_else_block_instead_of_dict_lookup (cognitive 18): if_else_block_instead_of_dict_lookup::if_else_block_instead_of_dict_lookup has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 2, boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/if_else_block_instead_of_dict_lookup.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f22c984a0399a40d5d59da334b9979f19707a1c68d2c8ca6f718e51cadbc59f"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_map::unnecessary_map (cognitive 18): unnecessary_map::unnecessary_map has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 3, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_comprehensions/rules/unnecessary_map.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7fa226da002b69e7a171aa42b7570ecab0151e1d3538e8f840d013d1903e66f"}},{"ruleId":"D2","level":"warning","message":{"text":"fastapi_unused_path_parameter::fastapi_unused_path_parameter (cognitive 18): fastapi_unused_path_parameter::fastapi_unused_path_parameter has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 2, boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/fastapi/rules/fastapi_unused_path_parameter.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb81231a2c7ded70e470505178bac5b2206902cbb71469a813460a1ba5430f9"}},{"ruleId":"D2","level":"warning","message":{"text":"todos::todos (cognitive 18): todos::todos has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, loops 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"243b7be9bb50554c24cb5da41893751f5987a28b506d67b42d6dcce58aae2f03"}},{"ruleId":"D2","level":"warning","message":{"text":"except_handler::except_handler (cognitive 18): except_handler::except_handler has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/except_handler.rs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ddb68efef9272f6d8dc8d44b3cdc68032ef731332fa735db3e232bf9609cde"}},{"ruleId":"D2","level":"warning","message":{"text":"inplace_argument::inplace_argument (cognitive 18): inplace_argument::inplace_argument has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pandas_vet/rules/inplace_argument.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"b549aeb2649e2ae4308395f002a83d8db034bc5c8838cddb3b980a062ac5cab9"}},{"ruleId":"D2","level":"warning","message":{"text":"all_with_model_form::all_with_model_form (cognitive 18): all_with_model_form::all_with_model_form has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8, loops 6, match/switch 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_django/rules/all_with_model_form.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcfe96e83370a592af421ae47d197e14ae0cf1438139adc297be21dee621783"}},{"ruleId":"D2","level":"warning","message":{"text":"redundant_backslash::redundant_backslash (cognitive 18): redundant_backslash::redundant_backslash has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, loops 5, match/switch 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/logical_lines/redundant_backslash.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc70ff2fa82a488fd8cdf9c52a6aa81d1505f4f52354670f76b24bc564e42ea"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprSubscript::needs_parentheses (cognitive 18): ExprSubscript::needs_parentheses has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, match/switch 2, boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_subscript.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f13a47676fb956c8d836f843edf12a3c4954c9ac9d7642c79b39e475842f59"}},{"ruleId":"D2","level":"warning","message":{"text":"QualifiedName::fmt (cognitive 18): QualifiedName::fmt has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, loops 6 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/name.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd1397e6552c6c38b1d90a55866d9e1506f8bc3615c956ee721e033aae58d98"}},{"ruleId":"D2","level":"warning","message":{"text":"AnyStringFlags::prefix (cognitive 18): AnyStringFlags::prefix has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/nodes.rs"},"region":{"startLine":2348}}}],"partialFingerprints":{"codehealthFindingId/v1":"2361259eadfeffa34b6bbda8fb8a7b8bbef087c9cdde6a81fd78c6cd286cc8b6"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatBody::fmt (cognitive 18): FormatBody::fmt has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/expr_lambda.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba501381df18a6d082b8321cb87c11186b0af5307779412b4592dd6c437fe4b9"}},{"ruleId":"D2","level":"warning","message":{"text":"FieldNamePart::parse_part (cognitive 18): FieldNamePart::parse_part has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, loops 4, boolean chains 1, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_literal/src/format.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4fa9bf3133a5ccd1e0ea4491d17e5a8b69e97b1c5355200ba5939ff6267c35c"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser::parse_except_clause (cognitive 18): Parser::parse_except_clause has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":1687}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd22992d0bcb2a873840ebc7709f9218e31affbaf181cb1985fa88f0ad6f34ca"}},{"ruleId":"D2","level":"warning","message":{"text":"typing::match_annotated_subscript (cognitive 18): typing::match_annotated_subscript has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, boolean chains 1, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/typing.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"79df4a8b05558385ffe8bcdb35ac688a2f02e7b68e969d979f206147dae30cd1"}},{"ruleId":"D2","level":"warning","message":{"text":"hover::hover (cognitive 18): hover::hover has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 3, boolean chains 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/hover.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8656b9458dec175fe17b2f940479ccd73aac798a3c8f83e2e163ada9c1bb601"}},{"ruleId":"D2","level":"warning","message":{"text":"completion::completion (cognitive 18): completion::completion has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9, loops 5, match/switch 3, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c76515e011452f41bf1bb944e08dcdfcee2956186f1573b3a68bf928eded6b3"}},{"ruleId":"D2","level":"warning","message":{"text":"Bindings::apply_generic_context_in_place (cognitive 18): Bindings::apply_generic_context_in_place has cognitive complexity 18 (threshold 15). Drivers by points: loops 11, if/else 4, match/switch 3 (nesting depth added 12). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"6306553dbe10f0489ad5982704964a7ba0f9cca09764935b3dbe43b6573cac68"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::total_ordering_root_method (cognitive 18): StaticClassLiteral::total_ordering_root_method has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, loops 3, match/switch 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ff5d7591e80e146a5f7c392f2b5a82d7a6136803462cf933d6293449650d43"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticClassLiteral::try_metaclass::try_metaclass_inner (cognitive 18): StaticClassLiteral::try_metaclass::try_metaclass_inner has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 2, boolean chains 1, loops 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"107ab45af4ac67c52a5f201076fdaf475bd9aa8c823270f83971294b2e75caeb"}},{"ruleId":"D2","level":"warning","message":{"text":"NodeId::satisfied_by_all_typevars (cognitive 18): NodeId::satisfied_by_all_typevars has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, loops 4, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":2849}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ecb214651ace62970c2b1e18a0efc41c99069f0be4ef744f39ac17103d6bfff"}},{"ruleId":"D2","level":"warning","message":{"text":"AmbiguousNameCollector::record (cognitive 18): AmbiguousNameCollector::record has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, match/switch 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"0036277d93f7a3d533456f6f7f343e8df323c205f9392dcf748b4dc2ff4d20cb"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayTuple::fmt_detailed (cognitive 18): DisplayTuple::fmt_detailed has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, match/switch 3, boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":1532}}}],"partialFingerprints":{"codehealthFindingId/v1":"4339caad8d1f189dbbbbaccd6e79a285aaec93a613d39e1c4f80d8dde48969e1"}},{"ruleId":"D2","level":"warning","message":{"text":"OverloadLiteral::raw_signature (cognitive 18): OverloadLiteral::raw_signature has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, boolean chains 5 (nesting depth added 2). Of this number, 13 points are the body\u0027s own statements and 5 belong to one function item declared inside it. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfac632baac877b51a8b10b93e3c19e8d87c4340fdabd2c194b6b6d0e9fa8f6e"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentAttributeWriteEvaluator::evaluate_protocol_descriptor_write (cognitive 18): AssignmentAttributeWriteEvaluator::evaluate_protocol_descriptor_write has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, loops 2, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c75ed467bb48eb2c855e3ce6fc305d1a07f43f0ea178cdd10d5b34c2ed7dce1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_enum_spec (cognitive 18): TypeInferenceBuilder::infer_enum_spec has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 11, if/else 7 (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e88db078ed21a45a6ac7d1faf7514d3ab9838c9ad8c047676b381a8750c8077"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_lambda_expression (cognitive 18): TypeInferenceBuilder::infer_lambda_expression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, match/switch 5, boolean chains 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":7998}}}],"partialFingerprints":{"codehealthFindingId/v1":"f929a6385103ded8c83958fcb6069e17c8ea8cc219923239e6760c0be8e08bdc"}},{"ruleId":"D2","level":"warning","message":{"text":"Parameters::with_transformed_parameters (cognitive 18): Parameters::with_transformed_parameters has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, boolean chains 3, match/switch 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":3998}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba018e29955b77a6aaf67aeb9a0bd00268732f50c92b0c7ff4b1505aef650fe"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedDictType::openness::class_based_openness (cognitive 18): TypedDictType::openness::class_based_openness has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 3, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"f711e56449f9dd59e83a8399f960ce7a1c28826e0caea39861bc1be4670a0d6d"}},{"ruleId":"D2","level":"warning","message":{"text":"BoundTypeVarInstance::apply_type_mapping_impl (cognitive 18): BoundTypeVarInstance::apply_type_mapping_impl has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, boolean chains 2, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typevar.rs"},"region":{"startLine":1126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7716b2f26cc82ceac212b34c78142c563d59c303cf1c70da5718de5cda9b1f8"}},{"ruleId":"D2","level":"warning","message":{"text":"Type::try_iterate_with_mode (cognitive 18): Type::try_iterate_with_mode has cognitive complexity 18 (threshold 15). Drivers by points: if/else 20, match/switch 16, loops 6 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"109dca370b34cd812940b84a22681ba04a0da1d5ab6b42c2a92b83b067f7689d"}},{"ruleId":"D2","level":"warning","message":{"text":"equality::compare_nominal_instances (cognitive 18): equality::compare_nominal_instances has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9, boolean chains 4, match/switch 3, loops 2 (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34b5946f067109fc6327284e075a2a86e21fab0a00b9073cf8dd092920e2250"}},{"ruleId":"D2","level":"warning","message":{"text":"typed_dict::collect_guaranteed_keys_from_merged_unpacked_keyword (cognitive 18): typed_dict::collect_guaranteed_keys_from_merged_unpacked_keyword has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 4 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3cf99d3efdd5fb0b18c167c89c6f6a8a9c46e4666e17faccb4cbff88a29de2"}},{"ruleId":"D2","level":"warning","message":{"text":"comparisons::infer_tuple_rich_comparison (cognitive 18): comparisons::infer_tuple_rich_comparison has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 10, if/else 4, loops 4 (nesting depth added 11). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/comparisons.rs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4beeded23cafe5c705bb76d69216d6097f82790a062c96c9cb4b8cb1ee93a16"}},{"ruleId":"D2","level":"warning","message":{"text":"overloaded_function::check_non_generic_overload_implementation_consistency (cognitive 18): overloaded_function::check_non_generic_overload_implementation_consistency has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, loops 3, match/switch 2, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/overloaded_function.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"184aa0fcb4570ceeb5e7b2d688f61bea3afb6d7ea481f8159377806e238ecf26"}},{"ruleId":"D2","level":"warning","message":{"text":"type_expansion::expand_type (cognitive 18): type_expansion::expand_type has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, match/switch 6, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/type_expansion.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb66aec0e4316bd88a308da20c60f1892edc4dd4f914d292681e65492cd1b193"}},{"ruleId":"D2","level":"warning","message":{"text":"DocumentHandle::close (cognitive 18): DocumentHandle::close has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, boolean chains 2, match/switch 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/session.rs"},"region":{"startLine":1894}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebb5ac42605038220da293ea630b4d548de72174a583687b4b6a5ed627ac90d1"}},{"ruleId":"D2","level":"warning","message":{"text":"mdtest::validate_inline_snapshot (cognitive 17): mdtest::validate_inline_snapshot has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/lib.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"70894e48f869d4c8c7c001c8aeb0b8b69131097c3ed71e14493e3d546c991056"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatResults::to_diagnostics (cognitive 17): FormatResults::to_diagnostics has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c09946f927e6059f44042d9f3cdc4a2c29f7260d27f63be367e33dbccbd40fd"}},{"ruleId":"D2","level":"warning","message":{"text":"check_stdin::check_stdin (cognitive 17): check_stdin::check_stdin has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/check_stdin.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"b53affed74397701a126977b2fa058977908f7fc234af4d93dc13f4fa5f6be59"}},{"ruleId":"D2","level":"warning","message":{"text":"AzureRenderer::render (cognitive 17): AzureRenderer::render has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, match/switch 2, boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render/azure.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f4aebe7ff2798d93efefc230e575118f3b9a84ea83b623d7070ba843516ee9"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_ty_rules::generate_markdown (cognitive 17): generate_ty_rules::generate_markdown has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, match/switch 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/generate_ty_rules.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6bde2c0f3a3d33eac574e17e913ec61b744c4d85af3961ac8fab3b179853e7"}},{"ruleId":"D2","level":"warning","message":{"text":"SectionContexts::from_docstring (cognitive 17): SectionContexts::from_docstring has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/docstrings/sections.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"50503570ce6a906517febd69551e11b142e3486ccea848691c12edb9f4ad7992"}},{"ruleId":"D2","level":"warning","message":{"text":"SuppressionParser::eat_codes (cognitive 17): SuppressionParser::eat_codes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb018f1c2177bf0bcfae890ae74fd61ed523612c80490072171ddb9f6abcad3"}},{"ruleId":"D2","level":"warning","message":{"text":"explicit::explicit (cognitive 17): explicit::explicit has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_implicit_str_concat/rules/explicit.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e37890f92e3ca18c4bfd996db82a772068544d62c8ea9b96cf0cb0afdd72cd"}},{"ruleId":"D2","level":"warning","message":{"text":"duplicate_union_member::duplicate_union_member (cognitive 17): duplicate_union_member::duplicate_union_member has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, loops 2, match/switch 2, boolean chains 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/duplicate_union_member.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"4395d5e49e35e2bfcfd4b841fb02261a87dc0ff789f5e82dc49ccd81bf9ba2bd"}},{"ruleId":"D2","level":"warning","message":{"text":"todos::static_errors (cognitive 17): todos::static_errors has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_todos/rules/todos.rs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9d3724a773d5cf034a4324327b9221469792944465006236d8e1bf61e71053"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::num_statements (cognitive 17): helpers::num_statements has cognitive complexity 17 (threshold 15). Drivers by points: loops 10, if/else 5, match/switch 2 (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/helpers.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"f145de4ee5068b94246bebabf2023392c686c62528254f3354f73b4c75afc56d"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_assign_before_yield::unnecessary_assign_before_yield (cognitive 17): unnecessary_assign_before_yield::unnecessary_assign_before_yield has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, match/switch 2, boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/unnecessary_assign_before_yield.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"37bb2806ddd03b0d5131f2a7abaab91da489db073a84ff5ba8d2410cb7f542c3"}},{"ruleId":"D2","level":"warning","message":{"text":"dict_index_missing_items::extract_dict_name (cognitive 17): dict_index_missing_items::extract_dict_name has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/dict_index_missing_items.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"477a93113a24028566d14df0f529be149a5b1daeb1f3de01f26263cb188e372e"}},{"ruleId":"D2","level":"warning","message":{"text":"map_codes::map_codes (cognitive 17): map_codes::map_codes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, loops 7 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_macros/src/map_codes.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54d617f14ed6bf0b7fbd4497e804922ddfe97f4815e7d6be3b3033428277e8c"}},{"ruleId":"D2","level":"warning","message":{"text":"Generator::unparse_pattern (cognitive 17): Generator::unparse_pattern has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, loops 6, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":769}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e7a332b8748d8c73518d13a0f3fbd99ec413a3c194163461a693f8977b2e34"}},{"ruleId":"D2","level":"warning","message":{"text":"ClauseHeader::visit (cognitive 17): ClauseHeader::visit has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, loops 2, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/clause.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2460802c940c945c4532f19173480526e0998f5d939936ac05b5537c35480377"}},{"ruleId":"D2","level":"warning","message":{"text":"stmt_function_def::format_function_header (cognitive 17): stmt_function_def::format_function_header has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/stmt_function_def.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1dbf6d4ccfc382c883971a53fa73f216060a175eb368a9dbaaccc95b54b621"}},{"ruleId":"D2","level":"warning","message":{"text":"expression::has_own_parentheses (cognitive 17): expression::has_own_parentheses has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, boolean chains 4, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"b20a2ed8a096a8547ea61373765988116f3c5919694585c260a9e355d95b85d1"}},{"ruleId":"D2","level":"warning","message":{"text":"Insertion::start_of_file (cognitive 17): Insertion::start_of_file has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, loops 3, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_importer/src/insertion.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e793da8123e93ccbcdb1daf700e507e134d38bc553c49acdbf1b287cf5ccdf"}},{"ruleId":"D2","level":"warning","message":{"text":"RecoveryContextKind::create_error (cognitive 17): RecoveryContextKind::create_error has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, match/switch 5 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f87db4c852dfb8bdaa4b898eb5c706e9b61fca124e0a22b67e11702e7ec6813"}},{"ruleId":"D2","level":"warning","message":{"text":"class::any_member_declaration::any_stmt_in_body (cognitive 17): class::any_member_declaration::any_stmt_in_body has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, boolean chains 3, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/class.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09824082d0d3a3d662bedde3387ed69b4cb3023f4810788c243cadec17c397d"}},{"ruleId":"D2","level":"warning","message":{"text":"typing::is_immutable_annotation (cognitive 17): typing::is_immutable_annotation has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, boolean chains 2, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/typing.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e8f1a5cc2d80c3a77176742dd3aa82c6ffd059380139eb72e70325fd3d8068"}},{"ruleId":"D2","level":"warning","message":{"text":"lint::check (cognitive 17): lint::check has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, loops 4, boolean chains 2 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/lint.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca748d0fb9f2c4a184a6961845444e6845d604307f858ce1c4359e16414dbc61"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::package_roots (cognitive 17): Resolver::package_roots has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, loops 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"194ac58c2377ae26453bc70d8571017a373f21a5ce28d3598db578598444f677"}},{"ruleId":"D2","level":"warning","message":{"text":"pyproject::load_options (cognitive 17): pyproject::load_options has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/pyproject.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd8b82115fb3685c524c7f4a69fed56ebe4813c7872e189b16be8a8cf2203c30"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentTypeChecker::check_argument_type (cognitive 17): ArgumentTypeChecker::check_argument_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, boolean chains 6 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":5624}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea730d13326e9f2b871f755a76cef44d463bba5863c3fd4bf81e400c74439941"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentTypeChecker::check_argument_types (cognitive 17): ArgumentTypeChecker::check_argument_types has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9, loops 4, boolean chains 2, match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":5844}}}],"partialFingerprints":{"codehealthFindingId/v1":"620456d751b4b73657cde41673096b0f1ebd867a0a06092ba56ec536c694fb6b"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentTypeChecker::evaluate_paramspec_sub_call (cognitive 17): ArgumentTypeChecker::evaluate_paramspec_sub_call has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, boolean chains 2, match/switch 2 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":5961}}}],"partialFingerprints":{"codehealthFindingId/v1":"c19ee0aaa956a00a73e3ebdb684317e29700ac79c93e3b2980b1d232de68beef"}},{"ruleId":"D2","level":"warning","message":{"text":"NodeId::is_never_satisfied (cognitive 17): NodeId::is_never_satisfied has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, match/switch 3, boolean chains 2, loops 1 (nesting depth added 7). Most of this is not in the body itself: 6 of the 17 points are its own statements and the rest belongs to one function item declared inside it (simple_conjunction_is_satisfiable). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":2520}}}],"partialFingerprints":{"codehealthFindingId/v1":"0489cd3d7ffeac2ead31701534e25cd55ce0c9a9ba5294882ef090045f9e5603"}},{"ruleId":"D2","level":"warning","message":{"text":"PathAssignments::add_assignment (cognitive 17): PathAssignments::add_assignment has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, match/switch 4, boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":7033}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6726367834591db9d846e4ba2d67a6eb01b97a9c1658411bab3879a566b75f6"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_class_type_params (cognitive 17): TypeInferenceBuilder::infer_class_type_params has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9, loops 4, match/switch 3, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/class.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceadc296ab6711895d273a4d3ae6f3ab6e0e427df996c9f4c6250c744b1e8d51"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowingConstraintsBuilder::narrow_type_by_len (cognitive 17): NarrowingConstraintsBuilder::narrow_type_by_len has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":2723}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65f549588dab496e85f99d9a6c901e1e66d2b9eb38956e3679414ae8d793d76"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_protocol_member_read (cognitive 17): TypeRelationChecker::check_protocol_member_read has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, boolean chains 3 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/protocol_class.rs"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d3b51b190c0ea7f2a6b6778b1579d79cc93338af55421e0f61f839a6144f1c"}},{"ruleId":"D2","level":"warning","message":{"text":"equality::evaluate_target_union (cognitive 17): equality::evaluate_target_union has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, loops 2, match/switch 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d87d8de494d8219f16ba9a0df15412e7ab06e9d176329daa5fb85535cbafc9"}},{"ruleId":"D2","level":"warning","message":{"text":"diagnostic::report_unsupported_comparison (cognitive 17): diagnostic::report_unsupported_comparison has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, loops 2, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":4246}}}],"partialFingerprints":{"codehealthFindingId/v1":"35adc6efb82f91c3955647a4e895fbc82342b26783bc6898a07b44e78f70b96d"}},{"ruleId":"D2","level":"warning","message":{"text":"subscript::py_slice_with_step (cognitive 17): subscript::py_slice_with_step has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9, match/switch 8 (nesting depth added 6). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/subscript.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"eae34892956b0a61efb142ed6cdc840e2445bf78da19d2fd5eff9f936d23267a"}},{"ruleId":"D2","level":"warning","message":{"text":"render::draw_line (cognitive 16): render::draw_line has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, loops 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"74af0af2e843820212f9a43954c1bd0f8b6f254019a95734b55d4c6835b714bb"}},{"ruleId":"D2","level":"warning","message":{"text":"real_world_projects::copy_directory_recursive (cognitive 16): real_world_projects::copy_directory_recursive has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 2, loops 2, match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_benchmark/src/real_world_projects.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdad62c6a963a4b20b94959eb3170162784a7397bc06713a9e94c05b3fa9a6a5"}},{"ruleId":"D2","level":"warning","message":{"text":"SequenceIndexVisitor::visit_expr (cognitive 16): SequenceIndexVisitor::visit_expr has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/helpers.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"417e6f554c6c0e07ea9a5faaa91e70a45af32da14c9e69dced24e5bdb4acbcec"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeDiff::fmt (cognitive 16): CodeDiff::fmt has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, loops 3, match/switch 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/source_kind.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8333a34c7e6c1b0cbc82f9a9b37ba86f9b02431e6426c79ae91010155d33214"}},{"ruleId":"D2","level":"warning","message":{"text":"implicit_optional::implicit_optional (cognitive 16): implicit_optional::implicit_optional has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/ruff/rules/implicit_optional.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05f80f4cea5fc96c0483f7ad55f063c0f9089516a186c7de99e75a10b46e1c6"}},{"ruleId":"D2","level":"warning","message":{"text":"unnecessary_encode_utf8::unnecessary_encode_utf8 (cognitive 16): unnecessary_encode_utf8::unnecessary_encode_utf8 has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec6e0cf304b40e339d6f27a1ecd740974ed6c20acd72504dcef274b22005e5f"}},{"ruleId":"D2","level":"warning","message":{"text":"redundant_numeric_union::check_annotation (cognitive 16): redundant_numeric_union::check_annotation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, boolean chains 5, match/switch 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/redundant_numeric_union.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf0715a12ad6020a2649e43e59a42a33fa909ad58c416772790873db1a0a1de"}},{"ruleId":"D2","level":"warning","message":{"text":"comparison_with_itself::comparison_with_itself (cognitive 16): comparison_with_itself::comparison_with_itself has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pylint/rules/comparison_with_itself.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4acd5db4a5616c655a4e790204a6ba1498f2669a6347d68fb8625654d2d0708"}},{"ruleId":"D2","level":"warning","message":{"text":"exit_annotations::non_none_annotation_element (cognitive 16): exit_annotations::non_none_annotation_element has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/exit_annotations.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c3db07dda1e632acd623b24838dad96ed7f0936e7b1a6c3478a06000b91c94"}},{"ruleId":"D2","level":"warning","message":{"text":"open_file_with_context_handler::match_async_exit_stack (cognitive 16): open_file_with_context_handler::match_async_exit_stack has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, loops 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c325f16f00a35161ecd62be9aea2bc74bb27b9b75a6bd3f5c8cdfd9aff8279"}},{"ruleId":"D2","level":"warning","message":{"text":"open_file_with_context_handler::match_exit_stack (cognitive 16): open_file_with_context_handler::match_exit_stack has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, loops 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5c3802e9e33c02d575622d18060701e8ffaeb0cd4ee1bd63d201e394613a3a"}},{"ruleId":"D2","level":"warning","message":{"text":"parametrize::handle_value_rows (cognitive 16): parametrize::handle_value_rows has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pytest_style/rules/parametrize.rs"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"da1b1c14295d02b44be6a9768a4a99371a87dc2d0c2902bf88f03e84c7488cc2"}},{"ruleId":"D2","level":"warning","message":{"text":"replaceable_by_pathlib::replaceable_by_pathlib (cognitive 16): replaceable_by_pathlib::replaceable_by_pathlib has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d8967431068a44c17b21d6473dd9a0ce127011dc68d1d2f0be98b1cf9cbb99"}},{"ruleId":"D2","level":"warning","message":{"text":"not_missing::not_missing (cognitive 16): not_missing::not_missing has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, boolean chains 2, match/switch 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/not_missing.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"5501ec7a40b90c295c2e3db6c1047448e3c4d48ec501e03fd9763faa52de9d47"}},{"ruleId":"D2","level":"warning","message":{"text":"trailing_commas::trailing_commas (cognitive 16): trailing_commas::trailing_commas has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, match/switch 3, boolean chains 2, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_commas/rules/trailing_commas.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"da80a2deda418c1663088be5bfc5833b976a48625df9f14776eb9bfc5f698f66"}},{"ruleId":"D2","level":"warning","message":{"text":"trailing_commas::check_token (cognitive 16): trailing_commas::check_token has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 5, match/switch 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_commas/rules/trailing_commas.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf294e5fc144681aa8d0e0798dd9d004d71fb28926277b1a4fb2d93a837ccb01"}},{"ruleId":"D2","level":"warning","message":{"text":"extraneous_parentheses::match_extraneous_parentheses (cognitive 16): extraneous_parentheses::match_extraneous_parentheses has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, match/switch 6, loops 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyupgrade/rules/extraneous_parentheses.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"a977ebfa9ac9e3d37e7acc90d128a62630491221c4443f2390875874701bd23a"}},{"ruleId":"D2","level":"warning","message":{"text":"simple_defaults::is_valid_default_value_with_annotation (cognitive 16): simple_defaults::is_valid_default_value_with_annotation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 3, match/switch 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_pyi/rules/simple_defaults.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a0d1dcfc079e313bdb99d306eb3aaa347cef53f4a62f6ba7623d92cc178b13"}},{"ruleId":"D2","level":"warning","message":{"text":"ast_bool_op::is_short_circuit (cognitive 16): ast_bool_op::is_short_circuit has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, boolean chains 2, match/switch 2, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_simplify/rules/ast_bool_op.rs"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"452ae4f93c1928a4fa920c86d0bbf5c781eab44fbd6e9cdb8ed61cf5007e64d4"}},{"ruleId":"D2","level":"warning","message":{"text":"repeated_keys::repeated_keys (cognitive 16): repeated_keys::repeated_keys has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, match/switch 5, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pyflakes/rules/repeated_keys.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fef00f6abf85c1838d70c8e874a6923d5b8cbddcd5c4f6f914afd10256e1020"}},{"ruleId":"D2","level":"warning","message":{"text":"try_consider_else::try_consider_else (cognitive 16): try_consider_else::try_consider_else has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15, boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/tryceratops/rules/try_consider_else.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74f2a2953667584adf8f0b366dda8b326d2791c99cfb7b6cce18b3ceb707c3f"}},{"ruleId":"D2","level":"warning","message":{"text":"organize_imports::organize_imports (cognitive 16): organize_imports::organize_imports has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, loops 2, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/rules/organize_imports.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc199cae2aad72d60cf9648398186d67842b3924f686d71430ca0a98ed78f2b"}},{"ruleId":"D2","level":"warning","message":{"text":"jinja2_autoescape_false::jinja2_autoescape_false (cognitive 16): jinja2_autoescape_false::jinja2_autoescape_false has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, match/switch 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34002c39064221d982d74f2d4f68bb1e52f353b905fa7505204f2b2a9e5db8b"}},{"ruleId":"D2","level":"warning","message":{"text":"format::format_multi_line (cognitive 16): format::format_multi_line has cognitive complexity 16 (threshold 15). Drivers by points: loops 10, if/else 5, boolean chains 1 (nesting depth added 4). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/isort/format.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9be7e11530e3002c56d7fbdc83c6572e1c11629bf1299d703dff64e402dfe29"}},{"ruleId":"D2","level":"warning","message":{"text":"builtin_open::builtin_open (cognitive 16): builtin_open::builtin_open has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, match/switch 3, boolean chains 2 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_use_pathlib/rules/builtin_open.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f4305d415968824d926c3ed63e86a95d011e3e5a339bf5c49bb5bfaaea7dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"logging_call::check_log_record_attr_clash (cognitive 16): logging_call::check_log_record_attr_clash has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, loops 4, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_logging_format/rules/logging_call.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"b970cfd4d4e3087b06335b4e62e569e01bdc9870794a14b01fcfeb2a85efa414"}},{"ruleId":"D2","level":"warning","message":{"text":"sections::parameters_section (cognitive 16): sections::parameters_section has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 6, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a4a60c9daa7099c3cf153677662d92768e70197da7c8ab0e02e92480e31b5f"}},{"ruleId":"D2","level":"warning","message":{"text":"cache_key::derive_cache_key (cognitive 16): cache_key::derive_cache_key has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, match/switch 3, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_macros/src/cache_key.rs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c6ab4427e12646c395655680ce82bf9abd906241a2359d811faee2f3e501bf"}},{"ruleId":"D2","level":"warning","message":{"text":"AnyNodeRef::last_child_in_body (cognitive 16): AnyNodeRef::last_child_in_body has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/node.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf843709f97fb7f09c60b4e7d5d3eff2ce11c42c2d9ff0c73235230fa31567a7"}},{"ruleId":"D2","level":"warning","message":{"text":"SideEffect::from_expr (cognitive 16): SideEffect::from_expr has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"26161d73d882c0ec2888ef191b80f0377cc1e432a0e6e4223802553717e615f5"}},{"ruleId":"D2","level":"warning","message":{"text":"helpers::extract_handled_exceptions (cognitive 16): helpers::extract_handled_exceptions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 6, match/switch 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba466bcb2aa8ef4d4156c71edfe4ca96823021c9c1aebc5de827116a01ce2a02"}},{"ruleId":"D2","level":"warning","message":{"text":"CallChainLayout::from_expression (cognitive 16): CallChainLayout::from_expression has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9278e488a0d50dde1b10ed07e47ded5c76771ac44ecc44343b148b3f565a67"}},{"ruleId":"D2","level":"warning","message":{"text":"NarrowRange::enter_node (cognitive 16): NarrowRange::enter_node has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6, loops 6, boolean chains 3, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/range.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"536d032c3bd62bbbd2f4f53d9095fec2b43faa4524ab2eef4abfde4674bf2bdc"}},{"ruleId":"D2","level":"warning","message":{"text":"terminal::sometimes_breaks (cognitive 16): terminal::sometimes_breaks has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/terminal.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a72af2c1925a457bb0fef8636e6a219bd75932a195991c13711e31c560415a"}},{"ruleId":"D2","level":"warning","message":{"text":"TriviaRanges::from (cognitive 16): TriviaRanges::from has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, match/switch 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/token/tokens.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"167d44660fc533901253b417a26f7a5e5847b9ba3dc191b2e45bca0e465bafda"}},{"ruleId":"D2","level":"warning","message":{"text":"Importer::find (cognitive 16): Importer::find has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/importer.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f163550c5c9e60d210474d5adaeae43ca939cf2cf84a5b506da6c382ac942f"}},{"ruleId":"D2","level":"warning","message":{"text":"completion::add_argument_completions (cognitive 16): completion::add_argument_completions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71e2021e860f65b23cb46331227779a963965dacf6e851b639663627410fa60"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticIndexBuilder::with_type_params (cognitive 16): SemanticIndexBuilder::with_type_params has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, match/switch 6, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":2540}}}],"partialFingerprints":{"codehealthFindingId/v1":"47d53cc3ae13262985861c7c36cbde2f18bf8e50b7bec001fe2a7e463cff0616"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorBinding::analyze_overload_returns (cognitive 16): ConstructorBinding::analyze_overload_returns has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 3, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind/constructor.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4b65c57205b3a6ebd778f2195228c58b6e394d2cd35f6b69627d7e34cdbae9"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentMatcher::match_keyword_variadic (cognitive 16): ArgumentMatcher::match_keyword_variadic has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 4, match/switch 3, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":4862}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bcc011c8bdb5ac7978ebc21f25985db9d615bd77084d3a69c548439c229d36f"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassBase::try_from_type (cognitive 16): ClassBase::try_from_type has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, match/switch 8 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class_base.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d4d9f7a5850738d50e7c2d53f22b212ac672959109b62182364908bab4c108"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassDecoratorUnknownResultPolicy::known_from_decorator (cognitive 16): ClassDecoratorUnknownResultPolicy::known_from_decorator has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, match/switch 3, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/class.rs"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dbf5bca9ff79cffde5e5c024396a7ccde22e14ff84b772b022fb4cb80d18acc"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::infer_typevar_deferred (cognitive 16): TypeInferenceBuilder::infer_typevar_deferred has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, match/switch 4, boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6abbb285c067ca307050437d5bedd54f796b84b7f1f6e97619ef5ecb17caddf"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeInferenceBuilder::specialize_generic_class_from_context (cognitive 16): TypeInferenceBuilder::specialize_generic_class_from_context has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, boolean chains 3, loops 3, match/switch 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":6197}}}],"partialFingerprints":{"codehealthFindingId/v1":"1278c96c58b3330dea31bae0539d1bc7e4c4d6bf11a516a7a0c6405b017e0dfe"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtocolClass::for_each_member_candidate (cognitive 16): ProtocolClass::for_each_member_candidate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 7 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/protocol_class.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc36ddbe4414979dfc165d32f45522b93831fbeef693c816eb1d68eeafa20f4"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRelationChecker::check_protocol_member_access_pair (cognitive 16): TypeRelationChecker::check_protocol_member_access_pair has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 4, match/switch 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/protocol_class.rs"},"region":{"startLine":2897}}}],"partialFingerprints":{"codehealthFindingId/v1":"55125566076f35e37e9a58861525e3abef3fa35c6ddf31a897dc8ce433fc89b4"}},{"ruleId":"D2","level":"warning","message":{"text":"Parameters::expand_starred_variadic_annotations (cognitive 16): Parameters::expand_starred_variadic_annotations has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 7, if/else 6, boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":4461}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e94f6521d7ddd49c1b18f9dcddaeed8baf0c2cfd3bbb4077c73256b1ddef0f0"}},{"ruleId":"D2","level":"warning","message":{"text":"function::check_classinfo_in_isinstance (cognitive 16): function::check_classinfo_in_isinstance has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, match/switch 3, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c7285bf1ad3c5b8fd756ee00823f7c171ac9a9b296f9871c4bc455f3eb71b0"}},{"ruleId":"D2","level":"warning","message":{"text":"comparisons::infer_binary_intersection_type_comparison (cognitive 16): comparisons::infer_binary_intersection_type_comparison has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 11, if/else 3, loops 2 (nesting depth added 5). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/comparisons.rs"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38f2aba8081da96677fe94541e9e7c58f793da8135f141a4d875f080fad14f9"}},{"ruleId":"D2","level":"warning","message":{"text":"reachability::analyze_enum_literal_union_pattern_predicate (cognitive 16): reachability::analyze_enum_literal_union_pattern_predicate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, loops 3 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/reachability.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a878125252d0e661b903b971972ecc4105e2ae3bf807874d960886584594a47"}},{"ruleId":"D2","level":"warning","message":{"text":"place::place_from_declarations_impl (cognitive 16): place::place_from_declarations_impl has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, loops 3, boolean chains 1, match/switch 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/place.rs"},"region":{"startLine":1852}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0123af3fa07127cc7ae0c097d02b47c0b613690e6ce1c0e79720531866e9f0a"}},{"ruleId":"D2","level":"warning","message":{"text":"DidChangeWatchedFiles::run (cognitive 16): DidChangeWatchedFiles::run has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 4, match/switch 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/api/notifications/did_change_watched_files.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed6fa6f00b361b416c5f1bfceced3a495d0e07482a0566cb74f448dc9c9237e7"}},{"ruleId":"D2","level":"warning","message":{"text":"Pool::new (cognitive 16): Pool::new has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, loops 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/schedule/thread/pool.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c097effa5245717efa7ff1c5ea1c5ebf6ddc3f697421ca18c3112fca22f9b29"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/builder.rs: FileTooLong \u2014 7679 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a75b9584702ceb54cafbf0d8c25b34a7358570721be099a2443b1d0d07490f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeInferenceBuilder: TooManyMethods \u2014 368 methods, declared across 19 files: infer/builder.rs (223), builder/type_expression.rs (21), builder/function.rs (18), builder/subscript.rs (18), \u002B15 more file(s)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ca8ee7e9d4082e1fbfd29e0680def082075d582471d08f0d0d1fc7717aeafd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/types.rs: FileTooLong \u2014 5396 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd63b6eb606eeeca0d372f6df3da121c670a1eebe73c58bd7123817f7d0c334"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: call/bind.rs: FileTooLong \u2014 5235 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"40cca8b97b609efd21b8be811c927521acae2664a011c43ddd0f8701fac9f7b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/constraints.rs: FileTooLong \u2014 4325 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e06a6c74f82c8a6736add815e12fe9cdf017bb7a8aaa46f064e580c44dce769f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/diagnostic.rs: FileTooLong \u2014 3209 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5eac3c4cc10a064b0dd0de0c949280238ae013b1b6b3788c3d206ee9f2a1ea1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/builder.rs: FileTooLong \u2014 3202 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6123a171ccb906cbf6002e7ad85f1a8aee2c51143555e340d6c7e2c56dedb81"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/signatures.rs: FileTooLong \u2014 3183 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b02d4dcedcc176ba204e714c88834a419557a4d1a277dd3752c0cae13caad1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Parser: TooManyMethods \u2014 186 methods, declared across 4 files: parser/expression.rs (63), parser/statement.rs (62), parser/mod.rs (46), parser/pattern.rs (15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cd3ec5f5a1a484f4a755a93d4ae29d6f7dde2dc949e9af3cce42622c4ac435"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/narrow.rs: FileTooLong \u2014 2885 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa78ecf48f88c4547986db4a706824f00330a143a01d9e7b6883f37161567203"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SemanticModel: TooManyMethods \u2014 138 methods, declared across 2 files: src/model.rs (136), model/all.rs (2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"393c2de234e79e92f4836dcf0fd293703d61998a9b7fc6bb3595fcfa8fbd3fbd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/display.rs: FileTooLong \u2014 2295 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/display.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f308298cf764a24c912534a5e2c273204cfca676a645e5402b6f55d0e48c861"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/options.rs: FileTooLong \u2014 2245 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/options.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf1568317d78b2c2c4662951a021b07d36f1e2509d816a750a8defa139c5f2d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/protocol_class.rs: FileTooLong \u2014 2242 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/protocol_class.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"673d4b94407bacd86aa72d7781533f408fecce51934c9be59efa4a74212b2637"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/mod.rs: FileTooLong \u2014 2195 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39dece3ca282b3649db692a86bc843046629d70267e8adf941cb21e508a049d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/generics.rs: FileTooLong \u2014 2127 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75cbf79a8292bd436a26da7fb7bb4caf52fef67d7300dd01876fbe58bc0bea4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: class/static_literal.rs: FileTooLong \u2014 2082 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"22988f66c0fedf731ba875a9bb1c7f3c6c8ae38f0f1e90958e541314fb1c27eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/nodes.rs: FileTooLong \u2014 2038 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/nodes.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27dbdcc61a5c85cc09e83a5128923758bf4e74599d490f8e63e83eb7a895a781"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/type_expression.rs: FileTooLong \u2014 2032 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/type_expression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d75eded783effcf39b091c384da1df95f81627cdfe38106c5722afc9204530"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/relation.rs: FileTooLong \u2014 1993 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f8a649274515294b7b485892f3685b7948ec4f6cbc5f82d4f37773c255f1987"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/typed_dict.rs: FileTooLong \u2014 1978 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd64f5512dbca47a361a71bf49ac6f1c3132dcd998f9daa0ee677b16bd93f4f0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SemanticIndexBuilder: TooManyMethods \u2014 108 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e90b130b72fcff0e0b464ccff320e4d8e6af8806c7f5ef6ad8092038d6dbad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/tuple.rs: FileTooLong \u2014 1800 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdce2454e510f2513c3c1a54a57b89a7f414b48a1163f9cfce1996947c45c75"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/use_def.rs: FileTooLong \u2014 1794 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/use_def.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2433bfc803b168e2987d0cb087fa9697451359322de615ac4b46bf7837c85b1e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/render.rs: FileTooLong \u2014 1762 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/render.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed09b2dc6af31e52dfc1f5b95c4d7752716eb526777162a25ccee339a432e4a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/class.rs: FileTooLong \u2014 1724 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f1b190f7d039637674a60f8a1e11e207ff2309b67c49f1a1c9845f2c9db120"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/ide_support.rs: FileTooLong \u2014 1723 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"943bc3e66efcd1e54ccb8b93caa29820460bf813d697602baeb678a5d9cb26d8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/subscript.rs: FileTooLong \u2014 1686 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/subscript.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bce0f255385a1eefc59756cf528cb40bacd25a42718508557de46adf1183dd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: class/known.rs: FileTooLong \u2014 1665 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/known.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c84aeaa24bce591bd272ba6113661d486b92ee9865d9323a78f353c05eb6672"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/completion.rs: FileTooLong \u2014 1663 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/completion.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"091d8aadef7c7c73c0f442e1111b45b9f3984d7fe291cd3a46dbe03c116267a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/expression.rs: FileTooLong \u2014 1651 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/expression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a091ec4855970a6854d58f65f94f1cd3079f31e25c11fd579e44b70688eca034"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/function.rs: FileTooLong \u2014 1648 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b1055a6403f808ee3ecc73e2dc7d735886018bc01e9a5f6b4ecc38aff123e8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/statement.rs: FileTooLong \u2014 1611 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/statement.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d5e1cb7a64862614fbd4e65a97c170b00b311e3abfdcccac330626503960d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/comparable.rs: FileTooLong \u2014 1462 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/comparable.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e82d19c85b08647043756544f28f952a18379e6e555ae06cf5881aa76eb0ffdf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: metadata/options.rs: FileTooLong \u2014 1367 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/metadata/options.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabe4fb99f0c0449b100f9e65ce6e747a84673b8f41b6bf4e4116544e68e994f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analyze/expression.rs: FileTooLong \u2014 1328 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/expression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8dab290fe6825dddf84482df0a1f4757b92408fe327e7326143673515e6524a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/configuration.rs: FileTooLong \u2014 1321 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/configuration.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b5a82166f738a0804a248037352a3620667ba759731114185e716b4d6f38e8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::types::diagnostic: TooManyFunctions \u2014 79 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/diagnostic.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb497f617d05f26ae2da0304e9a790402eef5d2c97a83671905b33540e8c30b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/model.rs: FileTooLong \u2014 1305 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/model.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"51d372c6fb55bbed56185a349e70d42bf43539af5f755c0ee905887ab601d464"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StaticClassLiteral: TooManyMethods \u2014 77 methods, declared across 2 files: class/static_literal.rs (76), types/protocol_class.rs (1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2ff04fa4609e7c6f8eddb591d98db66fc9108d6302cfabd131c65e773268a1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/place.rs: FileTooLong \u2014 1275 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/place.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b3a399610e3a0d8a6f4393579f8d9383a9175ca089f44d8a022b7a3c49e2cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 1270 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_site_packages/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2826c15cef8c66a3bb149e26f04f3eac646bc72cfc43ff354bf0f8cdb91af1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/generator.rs: FileTooLong \u2014 1211 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"197a46667398d207a9b438ac0e5cf6193d08a3f5dc53e7937561a7a202e3fad3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/typevar.rs: FileTooLong \u2014 1204 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typevar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2e5a2083f4ca3a500d632f813f3930523ef8c52c8849660d0b7c279b4ef6d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/helpers.rs: FileTooLong \u2014 1200 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe8ef81f7a255e564570efa402ed2db09894bcf0ebd69533c138abe500963f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 1184 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_wasm/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bbb957e150b3881e7ac4dacc1e5f1215d709a8b64b2b9a8a5230eb368e807ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analyze/statement.rs: FileTooLong \u2014 1171 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/statement.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ffa97c68778dca074243644303b3360fc3913dfc515881bb4b80c5994819057"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/definition.rs: FileTooLong \u2014 1142 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/definition.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a90918d23f3da2db9110c5c94feccde5c9246d01d096a6ced11ac298e5f2dc1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/overrides.rs: FileTooLong \u2014 1127 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/overrides.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b114142493732304c339fcfe9c478d0ed76f6b9c7c155afa0a96d0d7ee5e8472"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/equality.rs: FileTooLong \u2014 1120 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9776a0a38418dcb10841e0addc90466a1aa1f5c02418dac8abcb17590fcbf636"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/typevar.rs: FileTooLong \u2014 1118 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/typevar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec189a6db93391cffb2d4524a9b4d3a898867160c57622126e033d81d699bbb0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/infer.rs: FileTooLong \u2014 1107 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0dc43d2a6884d7f5d2a53b5d62586ed095ce27957713fb388a72676bbefdd10"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeRelationChecker: TooManyMethods \u2014 66 methods, declared across 13 files: types/relation.rs (25), types/protocol_class.rs (15), types/signatures.rs (6), types/instance.rs (4), \u002B9 more file(s)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"1139257c9123a146c31b83cdfb414f4835cd65c835d30cb0d01724d8eaf115db"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::preview: TooManyFunctions \u2014 65 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/preview.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ce2e08b3a13bbf95055696d20b518116324ee994792b247a9e3763376d6d77"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: set_theoretic/builder.rs: FileTooLong \u2014 1073 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"183e02bd38b9cd4bbdd4c9fa229b6f2dbe1f253822d64f75cd30382b3e7c1c0d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/codes.rs: FileTooLong \u2014 1062 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/codes.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edeb372e585ff69188879edcf35fb24c23fd20c2c7db26d96d1e8916158b69fe"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/semantic_errors.rs: FileTooLong \u2014 1062 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/semantic_errors.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3da4f298613da4ec8f2c871352b6ebf62f2df7758dce14a6926990fa84cabe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Checker: TooManyMethods \u2014 63 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"c264b7b57fdc17bacf093e629d6f8bac733f85d9961297e2c9dab643c4871f95"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resolve.rs: FileTooLong \u2014 1008 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/resolve.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92f2827720d00d804003f8e91151d7e6465462ad6518e29fb9b97cda5869137"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/reachability.rs: FileTooLong \u2014 1001 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/reachability.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08f61725c718ed921d47b72d85572836556a89789400ed8f76ff5e4c8c5f0b2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/args.rs: FileTooLong \u2014 990 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/args.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"152accea5eee9a7985dd6adb4c4489a11138826df1ddffc2bbda26bc2783d9a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/session.rs: FileTooLong \u2014 989 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/session.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c261f9ef1442d72ac687a4e23d74691f0ec3dd5c729af693adc1bc3461068e9d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/mod.rs: FileTooLong \u2014 959 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/parser/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c944a4c910ba853c213a2efeb0b8a2d7971e3db3776e68c2889a7fdd4a31a976"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: printer/mod.rs: FileTooLong \u2014 953 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/printer/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0c39554adcb1f39f62ae301a633b0a653bc8461655f694a9be794c10dcc9d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/enums.rs: FileTooLong \u2014 918 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/enums.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14afe8e4e691f4a6cfe2ff0b5c6756b49a0f97fa77bc297089e6bfd20cf5e62a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/moved_to_provider_in_3.rs: FileTooLong \u2014 915 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/moved_to_provider_in_3.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de39830502d941daff4a43651fe297ca3e8597d41039d974ae2fff052641884"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lexer.rs: FileTooLong \u2014 912 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5863db4e76b9703ace506dcfd14d9e0fd1f5000b70332f822a29d4353b1b7621"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: post_inference/static_class.rs: FileTooLong \u2014 910 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/post_inference/static_class.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2604b2f0242284c5f93135c8b189e73d099f27d75baf5e9ca6d9c1f6a946b1d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: comments/placement.rs: FileTooLong \u2014 901 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0688d524deeb504cfa779aab6cfa9346c831513d3e5e0c7fe3c61ecf1146632b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Diagnostic: TooManyMethods \u2014 54 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/mod.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3fb3c3dd028f6d3e1c3eb9e1a07b8b1c713590d67453d5ebfe657b2412bb4b5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/goto.rs: FileTooLong \u2014 871 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/goto.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c12963bb1b47c1c12cb9d0c4f39eaf645362fd45a95f23d63f8260977a2b3ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/instance.rs: FileTooLong \u2014 871 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/instance.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec347e8a11cf27b107346aff82ec7c5152147f3cb798e1ac66e3bfde6ee263cc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Bindings: TooManyMethods \u2014 52 methods, declared across 2 files: call/bind.rs (51), bind/enum_property.rs (1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"7803735a09400b2997826c4b8d662ef9f6c0b0c4ae5d85d1fcb9eff2d79eba4f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Session: TooManyMethods \u2014 51 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/session.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1417a352027cf66df77a8b1eeef7c6579ee18ce12ec713a7b3e0f9d744e9a6cb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VariableLengthTuple: TooManyMethods \u2014 50 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/tuple.rs"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"16eed32a49a2a73ac94fa9236351b779a5ace0d388d9c1e7d7cfaa38833c4f98"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dedicated/pydantic.rs: FileTooLong \u2014 833 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/dedicated/pydantic.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9b7efd98c1963a77d8a7d25ec5d1210ae4960964802aa49902cabdb2eba7b0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/function.rs: FileTooLong \u2014 816 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/function.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"462d38a9ececa832ba964a3959abcdb3503763b4f2d2d4727cb03ef4735223f3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/noqa.rs: FileTooLong \u2014 815 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/noqa.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be014cf4744e541f34ce896f22dba0ae2e6445457ee99d93e9035809dabe6cec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/removal_in_3.rs: FileTooLong \u2014 814 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/airflow/rules/removal_in_3.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f9fde498fa53ae04b2b97f51269806e82eb5af1a193ddc9567fd617a6fac19"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::helpers: TooManyFunctions \u2014 48 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/helpers.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8441e3fb140e4ed8694096863a61fe9366b11ab9602fb9dbea7be4ec782ba98"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UseDefMapBuilder: TooManyMethods \u2014 47 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/use_def.rs"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"e456e9c3d9fde60d993465c4819544ed08b951dc72662660e12a54836ad47fec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commands/format.rs: FileTooLong \u2014 783 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff/src/commands/format.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34bdeb77fe7e4edb813100782a74d47f75b7a2c0a6fef166beb77a0796c71fb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/suppression.rs: FileTooLong \u2014 782 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/suppression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0432a083124803b31333e9e8026ea04fb0429d1a016673af48e02179d41d80e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: string/docstring.rs: FileTooLong \u2014 779 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/docstring.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2fd1de65acbdfefb3d50426b74fd01b3fe851d68ffcc10efb65fc29207dd4b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: equality/enums.rs: FileTooLong \u2014 775 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality/enums.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c00c9a87b1ed31f2557b0f18ac169121f7f626ae334514da82906f20611697"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::types::ide_support: TooManyFunctions \u2014 46 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/ide_support.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0b7cac5c0d5e20d56df06471004846f35d0a99be21773ba1308359c3a1c5ba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expression/mod.rs: FileTooLong \u2014 761 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5078d0e7403615c9208443a310d40e1bea37d1fa05906af5dc55155ca607d951"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/semantic_tokens.rs: FileTooLong \u2014 751 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/semantic_tokens.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad02ad980320fc65b12c806949df2d0f2d1e8608c09a0c9d425e17da1b88ec5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Signature: TooManyMethods \u2014 45 methods, declared across 2 files: types/signatures.rs (43), types/display.rs (2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"610f1fa4113da22cb3d6cc9dc5e577e97e68f0542a19bcbf0d8caf31efdacc06"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/symbols.rs: FileTooLong \u2014 743 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/symbols.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c01e92ceef3deb65fa0f17ed402fe599a66e787ee2b18523e390fd46122e7a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: diagnostic/mod.rs: FileTooLong \u2014 740 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fe613114c003941da1122e24ee447e927477454989df3d6354fe0eac67dcfd9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/comparisons.rs: FileTooLong \u2014 736 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/comparisons.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9b25bc98ea7e6ea4f145a58f3499af107b224843262eaffb9b18dcaa9d6b2c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: settings/mod.rs: FileTooLong \u2014 728 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/settings/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6b8aa94c9b7cf8325fb2e18e2a6220ea823c4fd810338b7f6470ac0bc3daee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analyze/typing.rs: FileTooLong \u2014 724 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/typing.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19809bfe807ad0df3fef4d11ac1bac784f9a063f57282d9ea982132ce4ddc20"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/special_form.rs: FileTooLong \u2014 718 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/special_form.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b799af94e1946237a9b8fa2e2f8747cf4f1cc7e12ec7fa24ba65effeeaeacf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/set_theoretic.rs: FileTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/set_theoretic.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e04ffb823d177956fc5b8c167cfed9e008f584285cc112444084a58bdd8f9ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: class/typed_dict.rs: FileTooLong \u2014 710 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/typed_dict.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"41666877ad87215498ce4ca83be6f9312735c6d6d77c4da1845a58a98b79aee1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/binary_expressions.rs: FileTooLong \u2014 710 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/binary_expressions.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a455ba32ebe37bd5b07f890340b18460030d9e7236f169cd3c50775de3a5fb1f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/sections.rs: FileTooLong \u2014 707 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydocstyle/rules/sections.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cede5eef8c9500d696a74194ed173b7ae6bfb647d54a86967d853acabf837ff7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/bound_super.rs: FileTooLong \u2014 707 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/bound_super.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"138c51469865edd15a397f747b9dd1961d41a9c002b52a4c3debf01bde7829b6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NarrowingConstraintsBuilder: TooManyMethods \u2014 42 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"6461d5acc2fc027d2465cbfbec468416ebf103613ed6359f2d13c001a179de02"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/match_pattern.rs: FileTooLong \u2014 688 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/match_pattern.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"25109ee27af87df82545fe59c54f33497c3712b1aad7226760443500aaed8c33"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/attribute_assignment.rs: FileTooLong \u2014 684 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/attribute_assignment.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f998289ffeb854f4d9c0540caae7e7383009ccb7cb1bb80a63ed6244fee59a4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::comments::placement: TooManyFunctions \u2014 41 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/comments/placement.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a0e586eed40ba35c4be41437dca375d5bd57105481c6ea677bd706e1baa245"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FunctionType: TooManyMethods \u2014 41 methods, declared across 2 files: types/function.rs (40), types/display.rs (1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/function.rs"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1a530d98e62157f79d6f281c777d49e573b64900810a7387c15b419e2068bd6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PatternSuccessAnalyzer: TooManyMethods \u2014 41 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7330717de65d7457a891bad15739fee97a8c150b2bd4411112fe9e98a31e61"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: flake8_comprehensions/fixes.rs: FileTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/flake8_comprehensions/fixes.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"253049240c612080282f85b8bf41db7c7203c6cb9e454e5c53cdf76acc2817d1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Generator: TooManyMethods \u2014 39 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_codegen/src/generator.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"879fe4d5f67014583d39687293ee19169b34fc341aba385bac237b667bb81337"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SemanticIndex: TooManyMethods \u2014 39 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/lib.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"15775171bb0e8b8b66c642271c5f73e796c5b2984f8d973eab9a76d50fa61884"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Binding: TooManyMethods \u2014 39 methods, declared across 2 files: call/bind.rs (34), bind/constructor.rs (5)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":6420}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ee5f87fad66fdaaa80b4e1085479373b9fc708065ae9c793ecdafd2a1785c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/stmt_assign.rs: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/stmt_assign.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f4d320bb82b853b13dc44cce4402e39ed832bd5d0fabb0803f46f5c778eac4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/check_docstring.rs: FileTooLong \u2014 645 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be01dd6e268b0bd365c28183884636cf08d53a7768ebb70b88088c7ba0551579"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/iteration.rs: FileTooLong \u2014 640 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/iteration.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"995e9dc2e104d500664e3548349c8d4aa2fce4012153eb3b8c8492c61af3b851"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/format_dev.rs: FileTooLong \u2014 638 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_dev/src/format_dev.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7946dd292e478b83c0064e0a6c369203e640c36b66ce1c3177221d11333850f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/builders.rs: FileTooLong \u2014 637 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/builders.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d832433ed842ebfc9f2752af2340a9e150c3845b0744069b9547a5ace3bb5c6f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: visitor/transformer.rs: FileTooLong \u2014 633 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/transformer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6844c8469e2ebe6b4d881606f8df337d23cb7484684ccac07599e03dfa4427f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/visitor.rs: FileTooLong \u2014 627 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79365bce59c8166f2edb60d208486c96bd623cd105d73a1e3e64c28424292022"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: settings/types.rs: FileTooLong \u2014 624 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/settings/types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad31c789c602f4b6dd0cbb00e74c8784a1e411333f7ce41bf1bbcd996c8c535e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/parser.rs: FileTooLong \u2014 620 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdtest/src/parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0629d11bb260f4290f2ade14350edfaa7f307e72cbf2a0c9a1856d73fe38da"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::types::equality: TooManyFunctions \u2014 37 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/equality.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb97cac8ae2337990c344a954c6c19729e59c98857e16d875b2756e0de749dc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Parameters: TooManyMethods \u2014 37 methods, declared across 2 files: types/signatures.rs (36), types/display.rs (1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":3780}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6bb6b1c8408533146db8b0d6f5ebb2ac53f47a47ff1de81e30642fc35eaf2bf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/subscript.rs: FileTooLong \u2014 611 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/subscript.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f187d951bb17e47e41f776d17dc2cc634775b37adef3bb17020e324d94d78d87"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: diagnostic/render.rs: FileTooLong \u2014 608 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_db/src/diagnostic/render.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9e9adb95365356158c024345c8f4a2b7ec76d8387e6d9a9644b6720cd5b76b7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::analyze::typing: TooManyFunctions \u2014 36 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_semantic/src/analyze/typing.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5a67a0ee654d55365c8fa1c1fb202555c67ccf34fe6f885bfb8ac99c925e21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/enum_call.rs: FileTooLong \u2014 591 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder/enum_call.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed9b948094381f75a05511a9cdc1db7a942729eb77bbca0c0d8b059df579a9d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UseDefMap: TooManyMethods \u2014 35 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/use_def.rs"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f0072834a8d57d000f80fb44c84f12b67285b0cab96ef941c0d66ae211184e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/tokenizer.rs: FileTooLong \u2014 578 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_trivia/src/tokenizer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e69ecd4dbeab23adc973e64e2fb2b9b6ce6ef380211819334c566603a49cdc75"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/member.rs: FileTooLong \u2014 576 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/member.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc8f047b60197ad7514a4d38f18d9d9b3e8b3090dee8abd74255ee91239a5c73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expression/binary_like.rs: FileTooLong \u2014 571 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/expression/binary_like.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"140831696a2d64fcb72a2f33fd940f63357de50994c3dd4f0ce0d5ec0f888b4d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: string/normalize.rs: FileTooLong \u2014 570 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/string/normalize.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a53d2b429f9363326f4231394f616db2494c1e7514c1c71645a5364614f29d77"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::visitor::source_order: TooManyFunctions \u2014 34 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/visitor/source_order.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eb0db83a5e7b055168d145910d4196817483e82cebdf3aa6859a65f0f4b101c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84388a3ae1dfb5b6ba6350ba18db382a13ca540e2e7d02e2cb9d0443ae95838c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resolver.rs: FileTooLong \u2014 557 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_workspace/src/resolver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"451b9b87a0c088e4d94e83b7ae9ef2cd72149d602b6c33dfcc494782ef61334b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/token.rs: FileTooLong \u2014 556 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_ast/src/token.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb921663d8b1325fcc971dfa87b7cd82f8959037f903a65423626d6d93d753a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Lexer: TooManyMethods \u2014 33 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_parser/src/lexer.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e676cca0331cfbfcec02c70b2bf76582258eb1d3d5bed391b9b072822237d210"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeId: TooManyMethods \u2014 33 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/constraints.rs"},"region":{"startLine":2289}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9777d82cc14a936ff7d27ee6b289f6d32cd0fb2f2ea101864fe8d217b48acc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/numpy_2_0_deprecation.rs: FileTooLong \u2014 550 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/numpy/rules/numpy_2_0_deprecation.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27592dbf451d67a88d5118c332cbfe0ed18a056a094b050334d950294fd7354d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GenericContext: TooManyMethods \u2014 32 methods, declared across 2 files: types/generics.rs (29), types/display.rs (3)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"061fb10ee5dcd30467f716bbc35c88484d25b171e4b7b2eef03c5ab3a414a447"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Parameter: TooManyMethods \u2014 32 methods, declared across 2 files: types/signatures.rs (31), types/display.rs (1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":4645}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3bcf3c01f65aba849515ac98abfbe4e5cb3b583190f44d130c7d5418248512"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/source_map.rs: FileTooLong \u2014 532 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_annotate_snippets/src/renderer/source_map.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"694201094c2a941dd67e446b7a98e13630cf87a9c569abd36275a4e7a6ab922e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/clause.rs: FileTooLong \u2014 530 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/statement/clause.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"881e41f15c8081b5dc25c2e308e4dd2b438ecc6b4929ba3cb025233759378e9c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/blank_lines.rs: FileTooLong \u2014 526 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pycodestyle/rules/blank_lines.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f8ada1cf26e8edda2c9912e9d90784338c8f9581ff76b6feb77ea578fd90bf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/linter.rs: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/linter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee536dd30cc6fbd756604cefaa2ec87695d88170c099c4bff33b30455f9b413"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/path.rs: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/path.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"877cd7342d1d36d22658d78913ae463761252508438fe80f04462520c96f5d62"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::builders: TooManyFunctions \u2014 31 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_formatter/src/builders.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9df6c4dc49c54e96217216567df459035977e9089dc1ed884ad2da2aac703bf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CallableBinding: TooManyMethods \u2014 31 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":3058}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b91f731514f2942c216ef5ff4417e63de6d8c55d6dbdab216dcb3f0f8eb536f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::types::match_pattern: TooManyFunctions \u2014 31 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/match_pattern.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee213f8e5e9c69826ab5ccc3aa64caebb001ace414f837cc87df4c2f994c5d9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: crate::types::typed_dict: TooManyFunctions \u2014 31 free functions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/typed_dict.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"707dc2198e462ca3d18cdecb16ce00810872e7c6bb8198365a9e69bd94313b15"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/method.rs: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/method.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ee6875814998b144ae27eb8f8d278e84bd62ab64ff31f16e2ffd8d22272922"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/db.rs: FileTooLong \u2014 513 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_project/src/db.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af32d62e7c62ed24d840aa4d8a1526f40a7f3d43bced8b885b400af6270cafc2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: types/known_instance.rs: FileTooLong \u2014 512 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/known_instance.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8c72b9d978de6ca96907a5c2838d87c0fd9b1b9050faafb22493a85ed90c08"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/semantic_model.rs: FileTooLong \u2014 511 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/semantic_model.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad73ea56a3855fca76393c040b46fac8cdb419d32e4b657c31b4b61b8847314"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/verbatim.rs: FileTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_python_formatter/src/verbatim.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d42181bc7bb988bf142555bc29d17d9e4875a4f64218454ba35d2ae7b76bdca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: document/google.rs: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/docstring/document/google.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb536e377985553f44604ea410a7c24eab40ead6f7e88f6bc7ae7dd513593da"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ruff_linter/src/codes.rs: crates/ruff_linter/src/codes.rs changed 15 times in last 90 days, max complexity 984. 1 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/codes.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58dea680a2c0c16e223806963d88bd23b257a0e84d6d6850b13f71a9446d963"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types.rs: crates/ty_python_semantic/src/types.rs changed 130 times in last 90 days, max complexity 107. 12 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aceee51e741bdb112f56a0dc2706e0288e0f8036f96dc925789d68605eae12d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/call/bind.rs: crates/ty_python_semantic/src/types/call/bind.rs changed 60 times in last 90 days, max complexity 214. 3 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/call/bind.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"839c52a649dc8ff8e7aaaac0eaa17c5d0cd37b8a6e68ee8ca7ed923a4d0a04da"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/infer/builder.rs: crates/ty_python_semantic/src/types/infer/builder.rs changed 116 times in last 90 days, max complexity 97. 5 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/infer/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b936988e295fa4421e0bb2bc47d01aa6b0e2a8ebcc165cb3cc595d0a365f877"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/relation.rs: crates/ty_python_semantic/src/types/relation.rs changed 50 times in last 90 days, max complexity 194. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/relation.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f00be5f2fa6218d262de6b53d8fe02b201f1a2b5eb5f1fe16feef46e75b9b779"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_core/src/builder.rs: crates/ty_python_core/src/builder.rs changed 50 times in last 90 days, max complexity 147. 3 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0ef8265bea017d1d4e50ebbc73416ab14fa717b018c23dbb62dad3798c22d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/signatures.rs: crates/ty_python_semantic/src/types/signatures.rs changed 36 times in last 90 days, max complexity 180."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/signatures.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"707444bba62f72d6a0e39eab27916a812f9147bfad63f6a2f757ab3ceead713d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/generics.rs: crates/ty_python_semantic/src/types/generics.rs changed 51 times in last 90 days, max complexity 82. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/generics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd389691e6c1f81b81e1e1b25b436afd9dc17b07db0393f4f84f2ba643948974"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/class/static_literal.rs: crates/ty_python_semantic/src/types/class/static_literal.rs changed 50 times in last 90 days, max complexity 71."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/class/static_literal.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"126e596b4c0174206b9f986911d39f621fa639aeb0ed5b1636e84f47d1ffb2ce"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ty_python_semantic/src/types/narrow.rs: crates/ty_python_semantic/src/types/narrow.rs changed 55 times in last 90 days, max complexity 64. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/types/narrow.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c9e1d2e686adaa0dd85316224c497d19b1c2b42550238dfdca5c1c990d010e"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 24 significant file(s) lose their only recent owner: crates/ty_python_semantic/src/types/equality.rs, crates/ty_python_semantic/src/types/match_pattern.rs, crates/ty_python_core/src/member.rs, crates/ty_python_semantic/src/types/infer/builder/typed_dict.rs, crates/ty_python_semantic/src/types/infer/builder/post_inference/overloaded_function.rs, crates/ty_python_semantic/src/types/infer/builder/post_inference/typed_dict.rs, crates/ty_python_core/src/scope.rs, crates/ruff_linter/src/rules/flake8_tidy_imports/mod.rs (\u002B16 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"37bc62fd79247d4576a104d44e2fbdc0a90e0a09b166a3a8fb993c81f33e58b3"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 11 significant file(s) lose their only recent owner: crates/mdtest/src/lib.rs, crates/ruff_linter/src/message/mod.rs, crates/ruff_db/src/diagnostic/render/gitlab.rs, crates/ruff_db/src/diagnostic/render/rdjson.rs, crates/ruff_linter/src/rules/ruff/rules/access_annotations_from_class_dict.rs, crates/ruff_annotate_snippets/src/renderer/styled_buffer.rs, crates/ruff_macros/src/violation_metadata.rs, crates/ruff_linter/src/rules/flake8_implicit_str_concat/rules/collection_literal.rs (\u002B3 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"747b207144770f43ac2c39f73d0b50220bd9267c02f1325c7df47bfae41f2fc7"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 10 significant file(s) lose their only recent owner: crates/ty_module_resolver/src/typeshed.rs, crates/ty_project/src/watch/watcher.rs, crates/ty_project/src/glob/exclude.rs, crates/ruff_python_parser/src/parser/recovery.rs, crates/ruff_db/src/files/directory.rs, scripts/ty_benchmark/src/benchmark/lsp_client.py, crates/ty_project/src/watch/project_watcher.rs, crates/ty_project/src/watch.rs (\u002B2 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2e3ed49f02c1c8c833e8c28aef638a8c1c7b8e457ce45811ef681268b5665e29"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #4: If anonymized user #4 becomes unavailable, 9 significant file(s) lose their only recent owner: crates/ty_ide/src/docstring/document/rst.rs, crates/ty_ide/src/docstring/markdown/general/inline.rs, crates/ty_ide/src/docstring/markdown/structured.rs, crates/ty_ide/src/docstring/markdown/structured/rst.rs, crates/ty_ide/src/docstring/document/preformatted.rs, crates/ty_ide/src/docstring/document.rs, crates/ty_python_semantic/src/types/tuple/promotion.rs, crates/ruff_python_parser/src/lexer/indentation.rs (\u002B1 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"07082c5df4c28fca7b3f02e47b03bd2b64850895b6fa3b9396fd6f8142f45109"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 5 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (60 single-owned of 1353 analysed files in total)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0fa191403240013b57c91bf930e99dcd42a0806ba0d2e4a17ec715cb24333ddc"},"taxa":[{"id":"CWE-95","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f0e8e9d07eab7c9dcbf24200705014d564c2d65139be3a6734f6f02cd1edc3e2"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a5a6037c5dd801e20e0a495400760d49c014a3b4817f3f44710199bfdedb1d1b"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3d5221d88af9a1975bd540a1cbe4094340859594dae7165aa20e71d7d157a1b1"},"taxa":[{"id":"CWE-939","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e19a6f2c9ab36823f2c19f365cce3c37bad2de562c12fb647bd56130ce8824b"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fe2d688610b51e0a5a02c7c5dd1724a4986e40f2689fb84510e2ec0164c27d6a"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"755e77a63dc56f2de5e4f829e0486b85d8b080bbb5bda9ea38744fc0c7a65fa1"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"becbc5502f94878197b05d70c7ef15f1353fd99a90efcb824b9c43f11ae5ce7a"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e5c61782ce2fef47c593d5c18a3dbb5390cf79e61793c4bc1fe8e684fa5b0ec5"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 76 of 1353 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it. None is large enough to schedule a dedicated read-through on its own, so they are folded into the freshness score rather than raised individually \u2014 largest first: crates/ruff_python_literal/src/cformat.rs, crates/ruff_linter/src/rules/flake8_copyright/mod.rs, crates/ruff_source_file/src/line_ranges.rs (and 73 more)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: mod.rs \u2194 check_docstring.rs: \u0060crates/ruff_linter/src/rules/pydoclint/mod.rs\u0060 and \u0060crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs\u0060 change together 70% of the time (7 of the 10 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/rules/pydoclint/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad07694926177fbbaea0aaeec07d61672fcde2ed19762b6234b0097735e11e5"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: fix.rs \u2194 lint.rs: \u0060crates/ruff_server/src/fix.rs\u0060 and \u0060crates/ruff_server/src/lint.rs\u0060 change together 65% of the time (15 of the 23 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. They already sit in the same directory, so if they share structure, extract the common part into one unit; otherwise break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_server/src/fix.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"459629e836ce5df0381922d956c652bf6804dbbb82ad10d56350b894e1dab072"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: testing.rs \u2194 program.rs: \u0060crates/ty_module_resolver/src/testing.rs\u0060 and \u0060crates/ty_python_core/src/program.rs\u0060 change together 65% of the time (20 of the 31 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_module_resolver/src/testing.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23dbdf19a4f5b7ef21f3f6cbed21e827bf4ebd009e36b5509befe5ffaea3387"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: lib.rs \u2194 requests.rs: \u0060crates/ty_ide/src/lib.rs\u0060 and \u0060crates/ty_server/src/server/api/requests.rs\u0060 change together 58% of the time (15 of the 26 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_ide/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"845c9a7fd90bb0fc19a5916f905c87af49eda1043c216c3421c7a29f290a56c7"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: symbol.rs \u2194 infer.rs: \u0060crates/ty_python_core/src/symbol.rs\u0060 and \u0060crates/ty_python_semantic/src/types/infer.rs\u0060 change together 57% of the time (30 of the 53 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_core/src/symbol.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6137f48786ff4f6c5482a763a064437ac7be9c219abf5086277c2594af1b54a8"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: goto_type_definition.rs \u2194 hover.rs: \u0060crates/ty_server/src/server/api/requests/goto_type_definition.rs\u0060 and \u0060crates/ty_server/src/server/api/requests/hover.rs\u0060 change together 56% of the time (10 of the 18 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. They already sit in the same directory, so if they share structure, extract the common part into one unit; otherwise break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server/api/requests/goto_type_definition.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd032efd1eab1bfa7ad680a249b385c89cfa74b3353e81f45b4cc09a1cba0dd"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: server.rs \u2194 requests.rs: \u0060crates/ty_server/src/server.rs\u0060 and \u0060crates/ty_server/src/server/api/requests.rs\u0060 change together 54% of the time (14 of the 26 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/server.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dbf5f36f2988531236e41e13060926ca05cb09bd38e87cfc5590979c2b4289e"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: expression.rs \u2194 codes.rs: \u0060crates/ruff_linter/src/checkers/ast/analyze/expression.rs\u0060 and \u0060crates/ruff_linter/src/codes.rs\u0060 change together 52% of the time (86 of the 164 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ruff_linter/src/checkers/ast/analyze/expression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48556b9db214989b42b6deaafe5f55013c75efa45797002005bf3f8b2d834fa0"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: capabilities.rs \u2194 requests.rs: \u0060crates/ty_server/src/capabilities.rs\u0060 and \u0060crates/ty_server/src/server/api/requests.rs\u0060 change together 50% of the time (13 of the 26 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_server/src/capabilities.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8796adb2f1db4437f8a58cce82d5fda07f020a2e90abe88a03ec7854f5643c58"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: dunder_all.rs \u2194 class.rs: \u0060crates/ty_python_semantic/src/dunder_all.rs\u0060 and \u0060crates/ty_python_semantic/src/types/class.rs\u0060 change together 50% of the time (11 of the 22 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ty_python_semantic/src/dunder_all.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a251b4f6239d7811b5bde2623767ceed08a8d59896803d581b8580a435a62e3e"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30989297abd2252c19d058dfed644b099a91631280719cb353482f4d4f00fc41"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"450f02e5f3f658757e5c00ab1957e489fffddb3438019d382a3b46fb59a6b233"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ba03f0f060961b8d1c63cde27d288f148e9cf15d6aff897c88f90a697c9a029b"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8c7aa90908449deae8bd327fe693eeb96ad0c8f1f50e08442e600bbc158e3732"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ad02975b7eaa72981513134ad6fbe62d9feb303aa569807d8522af74c19dfb1e"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dbc4b8bff7457ddeb8f9f7c4b9abe04e5c81009c97422e5beba102e0c1e971b2"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dbcefc268a3f1099d647d9f0623d986e012176d8b2da098b67641eb6fe0350db"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b15345776253e2345402783aa4171ffcf82d0c3492885fe9a86be386f3b83011"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1aefc699683fe0f774899ef11f2bb5e8b557ee7d2b73d870013e3a22e76fb170"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b79e3f60274805531c877c6c83555cce0a7eb48d0a42c8b6b4ebb74b4cd4b32"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"80fd1f10f73f5b4db4ad28ef4b70b7cc5184756868ba1d4be3909edda86cf3ad"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"08ba96a4cf5f90f0ead11286ec710869cdae8f29a7becc8553896758acbe6e0e"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b793b79441e85e0fe98b64e2137c3bda93742ecf5b8c8d54d01b119cfde8471f"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7a2c6edea0cf1d0cae1cbe6b5ae064c75606f67704e89ab373170d0b9863107d"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f1dc6482f587088334362f13dbbec15bf6fb742fec9d9a84e26627ba49868a77"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"07c8c21c16d78da0f19d6793507497afac20f9ee45fa01573db13dd9a6751cfe"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"89497df0ee4e7550497f2dda5ade80329d48afcdbffb6418fdcecf2e9fdf7856"}},{"ruleId":"D38","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6e89f831f4a0bd687ec8feb65553f0de190ebc80b08d024e7a9fd29e909e9f55"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-939","guid":"12397742-f2c4-8254-8012-482c3356c551","name":"CWE-939","shortDescription":{"text":"CWE-939"},"helpUri":"https://cwe.mitre.org/data/definitions/939.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"},{"id":"CWE-95","guid":"400bba4e-483c-5c50-a695-114fa9168003","name":"CWE-95","shortDescription":{"text":"CWE-95"},"helpUri":"https://cwe.mitre.org/data/definitions/95.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":28,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}