From 2cf6d055860edb8ce2fe8a8618f11641fa5459fa Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Sun, 1 Jan 2023 17:00:17 -0500 Subject: [PATCH] Avoid triggering PD errors on method calls (#1537) --- foo.py | 3 --- src/checkers/ast.rs | 5 +++++ src/pandas_vet/mod.rs | 3 +-- src/pyupgrade/plugins/unpack_list_comprehension.rs | 5 +---- 4 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 foo.py diff --git a/foo.py b/foo.py deleted file mode 100644 index 4817a150a0..0000000000 --- a/foo.py +++ /dev/null @@ -1,3 +0,0 @@ -import mock.mock - -x = mock.mock.Mock() diff --git a/src/checkers/ast.rs b/src/checkers/ast.rs index 865909fefc..d0daa9ae13 100644 --- a/src/checkers/ast.rs +++ b/src/checkers/ast.rs @@ -1629,6 +1629,11 @@ where ] { if self.settings.enabled.contains(&code) { if attr == name { + if let Some(parent) = self.current_expr_parent() { + if matches!(parent.0.node, ExprKind::Call { .. }) { + continue; + } + } self.add_check(Check::new(code.kind(), Range::from_located(expr))); }; } diff --git a/src/pandas_vet/mod.rs b/src/pandas_vet/mod.rs index a1ced4cd55..c26a476a00 100644 --- a/src/pandas_vet/mod.rs +++ b/src/pandas_vet/mod.rs @@ -81,8 +81,7 @@ mod tests { #[test_case("result = df.to_array()", &[]; "PD011_pass_to_array")] #[test_case("result = df.array", &[]; "PD011_pass_array")] #[test_case("result = df.values", &[CheckCode::PD011]; "PD011_fail_values")] - // TODO(edgarrmondragon): Check that the attribute access is NOT a method call. - // #[test_case("result = {}.values()", &[]; "PD011_pass_values_call")] + #[test_case("result = {}.values()", &[]; "PD011_pass_values_call")] #[test_case("result = values", &[]; "PD011_pass_node_name")] #[test_case("employees = pd.read_csv(input_file)", &[]; "PD012_pass_read_csv")] #[test_case("employees = pd.read_table(input_file)", &[CheckCode::PD012]; "PD012_fail_read_table")] diff --git a/src/pyupgrade/plugins/unpack_list_comprehension.rs b/src/pyupgrade/plugins/unpack_list_comprehension.rs index 1f379c85f8..c147cb0f53 100644 --- a/src/pyupgrade/plugins/unpack_list_comprehension.rs +++ b/src/pyupgrade/plugins/unpack_list_comprehension.rs @@ -17,10 +17,7 @@ fn contains_await(expr: &Expr) -> bool { ExprKind::IfExp { test, body, orelse } => { contains_await(test) || contains_await(body) || contains_await(orelse) } - ExprKind::Dict { keys, values } => keys - .iter() - .chain(values.iter()) - .any(contains_await), + ExprKind::Dict { keys, values } => keys.iter().chain(values.iter()).any(contains_await), ExprKind::Set { elts } => elts.iter().any(contains_await), ExprKind::ListComp { elt, .. } => contains_await(elt), ExprKind::SetComp { elt, .. } => contains_await(elt),