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),