当前位置: 首页>>代码示例>>Python>>正文


Python astroid.Assign方法代码示例

本文整理汇总了Python中astroid.Assign方法的典型用法代码示例。如果您正苦于以下问题:Python astroid.Assign方法的具体用法?Python astroid.Assign怎么用?Python astroid.Assign使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在astroid的用法示例。


在下文中一共展示了astroid.Assign方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: attr_attributes_transform

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def attr_attributes_transform(node):
    """Given that the ClassNode has an attr decorator,
    rewrite class attributes as instance attributes
    """
    # Astroid can't infer this attribute properly
    # Prevents https://github.com/PyCQA/pylint/issues/1884
    node.locals["__attrs_attrs__"] = [astroid.Unknown(parent=node.body)]

    for cdefbodynode in node.body:
        if not isinstance(cdefbodynode, astroid.Assign):
            continue
        if isinstance(cdefbodynode.value, astroid.Call):
            if cdefbodynode.value.func.as_string() != ATTR_IB:
                continue
        else:
            continue
        for target in cdefbodynode.targets:

            rhs_node = astroid.Unknown(
                lineno=cdefbodynode.lineno,
                col_offset=cdefbodynode.col_offset,
                parent=cdefbodynode
            )
            node.locals[target.name] = [rhs_node] 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:26,代码来源:brain_attrs.py

示例2: clobber_in_except

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def clobber_in_except(node):
    """Checks if an assignment node in an except handler clobbers an existing
    variable.

    Returns (True, args for W0623) if assignment clobbers an existing variable,
    (False, None) otherwise.
    """
    if isinstance(node, astroid.AssignAttr):
        return (True, (node.attrname, 'object %r' % (node.expr.as_string(),)))
    elif isinstance(node, astroid.AssignName):
        name = node.name
        if is_builtin(name):
            return (True, (name, 'builtins'))
        else:
            stmts = node.lookup(name)[1]
            if (stmts and not isinstance(stmts[0].assign_type(),
                                         (astroid.Assign, astroid.AugAssign,
                                          astroid.ExceptHandler))):
                return (True, (name, 'outer scope (line %s)' % stmts[0].fromlineno))
    return (False, None) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:22,代码来源:utils.py

示例3: visit_starred

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def visit_starred(self, node):
        """Check that a Starred expression is used in an assignment target."""
        if isinstance(node.parent, astroid.Call):
            # f(*args) is converted to Call(args=[Starred]), so ignore
            # them for this check.
            return
        if PY35 and isinstance(node.parent,
                               (astroid.List, astroid.Tuple,
                                astroid.Set, astroid.Dict)):
            # PEP 448 unpacking.
            return

        stmt = node.statement()
        if not isinstance(stmt, astroid.Assign):
            return

        if stmt.value is node or stmt.value.parent_of(node):
            self.add_message('star-needs-assignment-target', node=node) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:20,代码来源:base.py

示例4: test_annassign_subscript_multi_list

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_annassign_subscript_multi_list():
    program = """
    l1: List
    l2: List
    
    l1 = [1, 2, 3]
    l2 = ['Hello', 'Goodbye']
    """
    module, inferer = cs._parse_text(program)

    for ann_node in module.nodes_of_class(astroid.AnnAssign):
        variable_type = lookup_type(inferer, ann_node, ann_node.target.name)
        assert variable_type == List[Any]

    assign_nodes = list(module.nodes_of_class(astroid.Assign))

    assign_node_1 = assign_nodes[0]
    assign_type_1 = lookup_type(inferer, assign_node_1, assign_node_1.targets[0].name)
    assert assign_type_1 == List[Any]

    assign_node_2 = assign_nodes[1]
    assign_type_2 = lookup_type(inferer, assign_node_2, assign_node_2.targets[0].name)
    assert assign_type_2 == List[Any] 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:25,代码来源:test_annassign.py

示例5: test_assign_complex

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_assign_complex(variables, values):
    """Test whether visitors properly set the type constraint of the a Assign node representing a multi-target-assign
     with a homogeneous list as the value.
    """
    assume(type(values[0]) != type(values[1]) and len(variables) == len(values))
    val_types = [type(val) for val in values]
    if int in val_types:
        assume(bool not in val_types)
    if bool in val_types:
        assume(int not in val_types)
    program = ("x = ["
               + ", ".join([repr(val) for val in values])
               + "]\n"
               + ", ".join(variables)
               + " = x")
    module, TypeInferrer = cs._parse_text(program)
    for variable_name in variables:
        variable_type_var = module.type_environment.lookup_in_env(variable_name)
        assert TypeInferrer.type_constraints.resolve(variable_type_var).getValue() == Any 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:21,代码来源:test_assign.py

示例6: test_from_import_function

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_from_import_function():
    src = """
    from mod import func

    x = func(0, 1)
    y = func(0, 1) + 1
    undefined_func(0, 1)
    """
    ast_mod, ti = cs._parse_text(src, reset=True)
    for call_node in ast_mod.nodes_of_class(astroid.Call):
        if call_node.func.name == 'func1':
            assert call_node.inf_type.getValue() == Any
        if call_node.func.name == 'func2':
            assert isinstance(call_node.inf_type, TypeFail)
    for assgn_node in ast_mod.nodes_of_class(astroid.Assign):
        if assgn_node.targets[0].name == 'x':
            x = ti.lookup_typevar(assgn_node, 'x')
            assert ti.type_constraints.resolve(x).getValue() == Any
        if assgn_node.targets[0].name == 'y':
            y = ti.lookup_typevar(assgn_node, 'y')
            assert ti.type_constraints.resolve(y).getValue() == int 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:23,代码来源:test_imports.py

示例7: test_subscript_slice

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_subscript_slice():
    program = '''
        x = List[:]
        '''
    module, _ = cs._parse_text(program)
    assign_node = next(module.nodes_of_class(astroid.Assign))
    assert isinstance(assign_node.inf_type, TypeFail)


# TODO: this test needs to be converted, but will also fail
# @given(cs.random_list(min_size=2), cs.random_slice_indices())
# def test_subscript_heterogeneous_list_slice(input_list, slice):
#     """Test visitor of Subscript node representing slicing of heterogeneous list."""
#     assume(not isinstance(input_list[0], type(input_list[1])))
#     input_slice = ':'.join([str(index) if index else '' for index in slice])
#     program = f'{input_list}[{input_slice}]'
#     module, _ = cs._parse_text(program)
#     subscript_node = list(module.nodes_of_class(astroid.Subscript))[0]
#     assert subscript_node.inf_type.getValue() == List[Any] 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:21,代码来源:test_subscript.py

示例8: test_message_simple

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_message_simple(self):
        src = """
        x = 10
        x = 230
        print(x)
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_1, _ = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertAddsMessages(
            pylint.testutils.Message(
                msg_id='redundant-assignment',
                node=assign_1,
            ),
        ):
            self.checker.visit_assign(assign_1) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:20,代码来源:test_redundant_assignment_checker.py

示例9: test_message_if_stmt

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_message_if_stmt(self):
        src = """
        x = 10
        y = 5
        if y > 5:
            x = 20
        else:
            x = 15
        print(x)
            
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_x, *_ = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertAddsMessages(
            pylint.testutils.Message(
                msg_id='redundant-assignment',
                node=assign_x,
            ),
        ):
            self.checker.visit_assign(assign_x) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:25,代码来源:test_redundant_assignment_checker.py

示例10: test_message_scope

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_message_scope(self):
        src = """
        x = 25
        def func():
            def func2():
                print(x - 1)
            func2()
        x = 10
        func()
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_x, *_ = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertAddsMessages(
                pylint.testutils.Message(
                    msg_id='redundant-assignment',
                    node=assign_x,
                )
        ):
            self.checker.visit_assign(assign_x) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:24,代码来源:test_redundant_assignment_checker.py

示例11: test_no_message_loop_complex

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_no_message_loop_complex(self):
        src = """
        x = 10
        for y in range(1, 10):
            x = func(y)
            print(x)
        x = x - 1
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_x1, assign_x2, assign_x3 = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertNoMessages():
            self.checker.visit_assign(assign_x1)
            self.checker.visit_assign(assign_x2)
            self.checker.visit_assign(assign_x3) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:19,代码来源:test_redundant_assignment_checker.py

示例12: test_no_message_if_complex

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_no_message_if_complex(self):
        src = """
        x = 10
        y = 5
        if y > 5:
            x = 20
        elif y > 50:
            x = 15
        else:
            pass
        print(x)
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_x, *_ = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertNoMessages():
            self.checker.visit_assign(assign_x) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:21,代码来源:test_redundant_assignment_checker.py

示例13: test_no_message_function_def

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_no_message_function_def(self):
        src = """
        x = 10
        if False:
            x = 20
        else:
            def func():
                x = 1
        print(x)
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())
        assign_x, *_ = mod.nodes_of_class(astroid.Assign)

        self.checker.visit_module(mod)
        with self.assertNoMessages():
            self.checker.visit_assign(assign_x) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:19,代码来源:test_redundant_assignment_checker.py

示例14: test_augassign_multiple_no_message

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def test_augassign_multiple_no_message(self):
        src = """
        y_pos = 5
        y_pos += 10
        y_pos += 10
        y_pos += 10
        y_pos += 10
        """
        mod = astroid.parse(src)
        mod.accept(CFGVisitor())

        self.checker.visit_module(mod)
        with self.assertNoMessages():
            for node in mod.nodes_of_class(astroid.Assign):
                self.checker.visit_assign(node)
            for node in mod.nodes_of_class(astroid.AugAssign):
                self.checker.visit_augassign(node) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:19,代码来源:test_redundant_assignment_checker.py

示例15: attr_attributes_transform

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Assign [as 别名]
def attr_attributes_transform(node):
    """Given that the ClassNode has an attr decorator,
    rewrite class attributes as instance attributes
    """
    # Astroid can't infer this attribute properly
    # Prevents https://github.com/PyCQA/pylint/issues/1884
    node.locals["__attrs_attrs__"] = [astroid.Unknown(parent=node)]

    for cdefbodynode in node.body:
        if not isinstance(cdefbodynode, astroid.Assign):
            continue
        if isinstance(cdefbodynode.value, astroid.Call):
            if cdefbodynode.value.func.as_string() not in ATTRIB_NAMES:
                continue
        else:
            continue
        for target in cdefbodynode.targets:

            rhs_node = astroid.Unknown(
                lineno=cdefbodynode.lineno,
                col_offset=cdefbodynode.col_offset,
                parent=cdefbodynode,
            )
            node.locals[target.name] = [rhs_node] 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:26,代码来源:brain_attrs.py


注:本文中的astroid.Assign方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。