Ejemplo n.º 1
0
    def _check_implicit_in(self, node: ast.BoolOp) -> None:
        variables: List[Set[str]] = []

        for cmp in node.values:
            if not isinstance(cmp, ast.Compare) or len(cmp.ops) != 1:
                return
            if not isinstance(cmp.ops[0], self._allowed[node.op.__class__]):
                return

            variables.append({source.node_to_string(cmp.left)})

        for duplicate in _get_duplicate_names(variables):
            self.add_violation(
                ImplicitInConditionViolation(node, text=duplicate), )
Ejemplo n.º 2
0
    def _check_implicit_in(self, node: ast.BoolOp) -> None:
        allowed_ops: Dict[Type[ast.boolop], Type[ast.cmpop]] = {
            ast.And: ast.NotEq,
            ast.Or: ast.Eq,
        }

        variables: List[Set[str]] = []

        for compare in node.values:
            if not isinstance(compare, ast.Compare) or len(compare.ops) != 1:
                return

            if not isinstance(compare.ops[0], allowed_ops[node.op.__class__]):
                return

            variables.append({source.node_to_string(compare.left)})

        for duplicate in _get_duplicate_names(variables):
            self.add_violation(
                ImplicitInConditionViolation(node, text=duplicate), )