From ab327e6c9394dcdf9492996865a8b120da6bd4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Mon, 13 Sep 2021 13:31:23 +0200 Subject: [PATCH 1/2] Remove most `typing.cast()` calls --- pylint/checkers/classes.py | 6 +----- pylint/checkers/refactoring/recommendation_checker.py | 7 ------- pylint/checkers/refactoring/refactoring_checker.py | 4 +--- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/pylint/checkers/classes.py b/pylint/checkers/classes.py index 3ce95033eb..9225efa375 100644 --- a/pylint/checkers/classes.py +++ b/pylint/checkers/classes.py @@ -47,7 +47,7 @@ """ import collections from itertools import chain, zip_longest -from typing import List, Pattern, cast +from typing import List, Pattern import astroid from astroid import nodes @@ -907,7 +907,6 @@ def leave_classdef(self, node: nodes.ClassDef) -> None: def _check_unused_private_functions(self, node: nodes.ClassDef) -> None: for function_def in node.nodes_of_class(nodes.FunctionDef): - function_def = cast(nodes.FunctionDef, function_def) if not is_attr_private(function_def.name): continue parent_scope = function_def.parent.scope() @@ -918,7 +917,6 @@ def _check_unused_private_functions(self, node: nodes.ClassDef) -> None: ): continue for attribute in node.nodes_of_class(nodes.Attribute): - attribute = cast(nodes.Attribute, attribute) if ( attribute.attrname != function_def.name or attribute.scope() == function_def # We ignore recursive calls @@ -978,7 +976,6 @@ def _check_unused_private_variables(self, node: nodes.ClassDef) -> None: def _check_unused_private_attributes(self, node: nodes.ClassDef) -> None: for assign_attr in node.nodes_of_class(nodes.AssignAttr): - assign_attr = cast(nodes.AssignAttr, assign_attr) if not is_attr_private(assign_attr.attrname) or not isinstance( assign_attr.expr, nodes.Name ): @@ -999,7 +996,6 @@ def _check_unused_private_attributes(self, node: nodes.ClassDef) -> None: ) for attribute in node.nodes_of_class(nodes.Attribute): - attribute = cast(nodes.Attribute, attribute) if attribute.attrname != assign_attr.attrname: continue diff --git a/pylint/checkers/refactoring/recommendation_checker.py b/pylint/checkers/refactoring/recommendation_checker.py index 5982a0ec65..f6d45ed2dd 100644 --- a/pylint/checkers/refactoring/recommendation_checker.py +++ b/pylint/checkers/refactoring/recommendation_checker.py @@ -127,11 +127,9 @@ def _check_use_maxsplit_arg(self, node: nodes.Call) -> None: # Check if var is mutated within loop (Assign/AugAssign) for assignment_node in loop_node.nodes_of_class(nodes.AugAssign): - assignment_node = cast(nodes.AugAssign, assignment_node) if node.parent.slice.name == assignment_node.target.name: return for assignment_node in loop_node.nodes_of_class(nodes.Assign): - assignment_node = cast(nodes.Assign, assignment_node) if node.parent.slice.name in [ n.name for n in assignment_node.targets ]: @@ -209,7 +207,6 @@ def _check_consider_using_enumerate(self, node: nodes.For) -> None: # for body. for child in node.body: for subscript in child.nodes_of_class(nodes.Subscript): - subscript = cast(nodes.Subscript, subscript) if not isinstance(subscript.value, expected_subscript_val_type): continue @@ -247,8 +244,6 @@ def _check_consider_using_dict_items(self, node: nodes.For) -> None: # for body. for child in node.body: for subscript in child.nodes_of_class(nodes.Subscript): - subscript = cast(nodes.Subscript, subscript) - if not isinstance(subscript.value, (nodes.Name, nodes.Attribute)): continue @@ -297,8 +292,6 @@ def _check_consider_using_dict_items_comprehension( for child in node.parent.get_children(): for subscript in child.nodes_of_class(nodes.Subscript): - subscript = cast(nodes.Subscript, subscript) - if not isinstance(subscript.value, (nodes.Name, nodes.Attribute)): continue diff --git a/pylint/checkers/refactoring/refactoring_checker.py b/pylint/checkers/refactoring/refactoring_checker.py index 525e77112e..763c65d46c 100644 --- a/pylint/checkers/refactoring/refactoring_checker.py +++ b/pylint/checkers/refactoring/refactoring_checker.py @@ -6,7 +6,7 @@ import itertools import tokenize from functools import reduce -from typing import Dict, Iterator, List, NamedTuple, Optional, Tuple, Union, cast +from typing import Dict, Iterator, List, NamedTuple, Optional, Tuple, Union import astroid from astroid import nodes @@ -1862,8 +1862,6 @@ def _check_unnecessary_dict_index_lookup( ) for child in children: for subscript in child.nodes_of_class(nodes.Subscript): - subscript = cast(nodes.Subscript, subscript) - if not isinstance(subscript.value, (nodes.Name, nodes.Attribute)): continue From 2e173ebc258472566d46553433a3b79f2aa24bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Wed, 15 Sep 2021 16:11:06 +0200 Subject: [PATCH 2/2] Remove additional `cast()` --- pylint/checkers/refactoring/recommendation_checker.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pylint/checkers/refactoring/recommendation_checker.py b/pylint/checkers/refactoring/recommendation_checker.py index f6d45ed2dd..7bc71d3857 100644 --- a/pylint/checkers/refactoring/recommendation_checker.py +++ b/pylint/checkers/refactoring/recommendation_checker.py @@ -1,6 +1,6 @@ # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE -from typing import Union, cast +from typing import Union import astroid from astroid import nodes @@ -121,7 +121,6 @@ def _check_use_maxsplit_arg(self, node: nodes.Call) -> None: # Check if loop present within the scope of the node scope = node.scope() for loop_node in scope.nodes_of_class((nodes.For, nodes.While)): - loop_node = cast(nodes.NodeNG, loop_node) if not loop_node.parent_of(node): continue