Python ast.IsNot() Examples
The following are 14
code examples of ast.IsNot().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
ast
, or try the search function
.
Example #1
Source File: helper.py From YAPyPy with MIT License | 6 votes |
def comp_op_rewrite(op: t.Union[Tokenizer, t.List[Tokenizer]]): """ ('<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not') """ if isinstance(op, list): op = tuple(map(lambda it: it.value, op)) else: op = op.value return { '<': ast.Lt, '>': ast.Gt, '==': ast.Eq, '>=': ast.GtE, '<=': ast.LtE, '<>': lambda: raise_exp(NotImplemented), '!=': ast.NotEq, 'in': ast.In, ('is', ): ast.Is, ('is', 'not'): ast.IsNot, ('not', 'in'): ast.NotIn, }[op]()
Example #2
Source File: pyupgrade.py From pyupgrade with MIT License | 6 votes |
def _process_is_literal( tokens: List[Token], i: int, compare: Union[ast.Is, ast.IsNot], ) -> None: while tokens[i].src != 'is': i -= 1 if isinstance(compare, ast.Is): tokens[i] = tokens[i]._replace(src='==') else: tokens[i] = tokens[i]._replace(src='!=') # since we iterate backward, the dummy tokens keep the same length i += 1 while tokens[i].src != 'not': tokens[i] = Token('DUMMY', '') i += 1 tokens[i] = Token('DUMMY', '')
Example #3
Source File: rewrite.py From ward with MIT License | 6 votes |
def visit_Assert(self, node): if is_binary_comparison(node): if is_comparison_type(node, ast.Eq): return make_call_node(node, assert_equal.__name__) elif is_comparison_type(node, ast.NotEq): return make_call_node(node, assert_not_equal.__name__) elif is_comparison_type(node, ast.In): return make_call_node(node, assert_in.__name__) elif is_comparison_type(node, ast.NotIn): return make_call_node(node, assert_not_in.__name__) elif is_comparison_type(node, ast.Is): return make_call_node(node, assert_is.__name__) elif is_comparison_type(node, ast.IsNot): return make_call_node(node, assert_is_not.__name__) elif is_comparison_type(node, ast.Lt): return make_call_node(node, assert_less_than.__name__) elif is_comparison_type(node, ast.LtE): return make_call_node(node, assert_less_than_equal_to.__name__) elif is_comparison_type(node, ast.Gt): return make_call_node(node, assert_greater_than.__name__) elif is_comparison_type(node, ast.GtE): return make_call_node(node, assert_greater_than_equal_to.__name__) return node
Example #4
Source File: pyupgrade.py From pyupgrade with MIT License | 5 votes |
def __init__(self) -> None: self.dicts: Dict[Offset, ListCompOrGeneratorExp] = {} self.sets: Dict[Offset, ast.expr] = {} self.set_empty_literals: Dict[Offset, ListOrTuple] = {} self.is_literal: Dict[Offset, Union[ast.Is, ast.IsNot]] = {}
Example #5
Source File: pyupgrade.py From pyupgrade with MIT License | 5 votes |
def visit_Compare(self, node: ast.Compare) -> None: left = node.left for op, right in zip(node.ops, node.comparators): if ( isinstance(op, (ast.Is, ast.IsNot)) and ( isinstance(left, LITERAL_TYPES) or isinstance(right, LITERAL_TYPES) ) ): self.is_literal[_ast_to_offset(right)] = op left = right self.generic_visit(node)
Example #6
Source File: builder.py From staticfg with Apache License 2.0 | 5 votes |
def invert(node): """ Invert the operation in an ast node object (get its negation). Args: node: An ast node object. Returns: An ast node object containing the inverse (negation) of the input node. """ inverse = {ast.Eq: ast.NotEq, ast.NotEq: ast.Eq, ast.Lt: ast.GtE, ast.LtE: ast.Gt, ast.Gt: ast.LtE, ast.GtE: ast.Lt, ast.Is: ast.IsNot, ast.IsNot: ast.Is, ast.In: ast.NotIn, ast.NotIn: ast.In} if type(node) == ast.Compare: op = type(node.ops[0]) inverse_node = ast.Compare(left=node.left, ops=[inverse[op]()], comparators=node.comparators) elif isinstance(node, ast.BinOp) and type(node.op) in inverse: op = type(node.op) inverse_node = ast.BinOp(node.left, inverse[op](), node.right) elif type(node) == ast.NameConstant and node.value in [True, False]: inverse_node = ast.NameConstant(value=not node.value) else: inverse_node = ast.UnaryOp(op=ast.Not(), operand=node) return inverse_node
Example #7
Source File: expressions.py From lexpredict-contraxsuite with GNU Affero General Public License v3.0 | 5 votes |
def test_correct_comparing(self, node: Any = None) -> None: if not node: return if isinstance(node, Iterable): for item in node: self.test_correct_comparing(item) return if isinstance(node, ast.Expr): self.test_correct_comparing(node.value) return if isinstance(node, ast.BinOp): self.test_correct_comparing(node.left) self.test_correct_comparing(node.right) return if isinstance(node, ast.BoolOp): for val in node.values: self.test_correct_comparing(val) return if isinstance(node, ast.IfExp): self.test_correct_comparing(node.body) self.test_correct_comparing(node.test) self.test_correct_comparing(node.orelse) return if isinstance(node, ast.Compare): if isinstance(node.left, ast.Name): comparator = node.comparators[0] operation = node.ops[0] if isinstance(operation, ast.Is) or isinstance(operation, ast.IsNot): # Is or IsNot are allowed for NameConstant - None - only if isinstance(comparator, ast.NameConstant) and comparator.value is None: return node_text = self.stringify_node(node) self.warnings.append(f'Checking "{node_text}" ' 'is unsafe, use "==" operator instead') self.test_correct_comparing(comparator)
Example #8
Source File: _recompute.py From icontract with MIT License | 5 votes |
def visit_Compare(self, node: ast.Compare) -> Any: """Recursively visit the comparators and apply the operations on them.""" # pylint: disable=too-many-branches left = self.visit(node=node.left) comparators = [self.visit(node=comparator) for comparator in node.comparators] result = None # type: Optional[Any] for comparator, op in zip(comparators, node.ops): if isinstance(op, ast.Eq): comparison = left == comparator elif isinstance(op, ast.NotEq): comparison = left != comparator elif isinstance(op, ast.Lt): comparison = left < comparator elif isinstance(op, ast.LtE): comparison = left <= comparator elif isinstance(op, ast.Gt): comparison = left > comparator elif isinstance(op, ast.GtE): comparison = left >= comparator elif isinstance(op, ast.Is): comparison = left is comparator elif isinstance(op, ast.IsNot): comparison = left is not comparator elif isinstance(op, ast.In): comparison = left in comparator elif isinstance(op, ast.NotIn): comparison = left not in comparator else: raise NotImplementedError("Unhandled op of {}: {}".format(node, op)) if result is None: result = comparison else: result = result and comparison left = comparator self.recomputed_values[node] = result return result
Example #9
Source File: checker.py From pyflakes with MIT License | 5 votes |
def COMPARE(self, node): left = node.left for op, right in zip(node.ops, node.comparators): if ( isinstance(op, (ast.Is, ast.IsNot)) and ( _is_const_non_singleton(left) or _is_const_non_singleton(right) ) ): self.report(messages.IsLiteral, node) left = right self.handleChildren(node)
Example #10
Source File: hgawk_grammar.py From histogrammar-python with Apache License 2.0 | 5 votes |
def p_comp_op_10(p): '''comp_op : IS NOT''' # 1 2 p[0] = ast.IsNot(rule=inspect.currentframe().f_code.co_name) # expr: xor_expr ('|' xor_expr)*
Example #11
Source File: test_rewrite.py From ward with MIT License | 5 votes |
def _( src=each("assert x == y", "assert x is y", "assert x < y", "assert x is not y"), node_type=each(ast.Eq, ast.Is, ast.Lt, ast.IsNot), ): assert_node = ast.parse(src).body[0] assert is_comparison_type(assert_node, node_type)
Example #12
Source File: compares.py From wemake-python-styleguide with MIT License | 5 votes |
def _check_constant(self, op: ast.cmpop, comparator: ast.expr) -> None: if not isinstance(op, (ast.Eq, ast.NotEq, ast.Is, ast.IsNot)): return real = get_assigned_expr(comparator) if not isinstance(real, (ast.List, ast.Dict, ast.Tuple)): return length = len(real.keys) if isinstance( real, ast.Dict, ) else len(real.elts) if not length: self.add_violation(FalsyConstantCompareViolation(comparator))
Example #13
Source File: compares.py From wemake-python-styleguide with MIT License | 5 votes |
def _check_is_constant_comprare( self, op: ast.cmpop, comparator: ast.expr, ) -> None: if not isinstance(op, (ast.Is, ast.IsNot)): return unwrapped = operators.unwrap_unary_node( get_assigned_expr(comparator), ) if isinstance(unwrapped, self._forbidden_for_is): self.add_violation(WrongIsCompareViolation(comparator))
Example #14
Source File: transformers.py From mutatest with MIT License | 4 votes |
def visit_Compare(self, node: ast.Compare) -> ast.AST: """Compare nodes are ``==, >=, is, in`` etc. There are multiple Compare categories.""" self.generic_visit(node) log_header = f"visit_Compare: {self.src_file}:" # taking only the first operation in the compare node # in basic testing, things like (a==b)==1 still end up with lists of 1, # but since the AST docs specify a list of operations this seems safer. # idx = LocIndex("CompareIs", node.lineno, node.col_offset, type(node.ops[0])) cmpop_is_types: Set[type] = {ast.Is, ast.IsNot} cmpop_in_types: Set[type] = {ast.In, ast.NotIn} op_type = type(node.ops[0]) node_span = NodeSpan(node) locidx_kwargs = { "lineno": node_span.lineno, "col_offset": node_span.col_offset, "op_type": op_type, "end_lineno": node_span.end_lineno, "end_col_offset": node_span.end_col_offset, } if op_type in cmpop_is_types: idx = LocIndex(ast_class="CompareIs", **locidx_kwargs) # type: ignore elif op_type in cmpop_in_types: idx = LocIndex(ast_class="CompareIn", **locidx_kwargs) # type: ignore else: idx = LocIndex(ast_class="Compare", **locidx_kwargs) # type: ignore self.locs.add(idx) if idx == self.target_idx and self.mutation and not self.readonly: LOGGER.debug("%s mutating idx: %s with %s", log_header, self.target_idx, self.mutation) # TODO: Determine when/how this case would actually be called if len(node.ops) > 1: # unlikely test case where the comparison has multiple values LOGGER.debug("%s multiple compare ops in node, len: %s", log_header, len(node.ops)) existing_ops = [i for i in node.ops] mutation_ops = [self.mutation()] + existing_ops[1:] return ast.copy_location( ast.Compare(left=node.left, ops=mutation_ops, comparators=node.comparators), node, ) else: # typical comparison case, will also catch (a==b)==1 as an example. LOGGER.debug("%s single comparison node operation", log_header) return ast.copy_location( ast.Compare( left=node.left, ops=[self.mutation()], comparators=node.comparators ), node, ) LOGGER.debug("%s (%s, %s): no mutations applied.", log_header, node.lineno, node.col_offset) return node