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


Python astroid.Expr方法代码示例

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


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

示例1: test_conditional_expr

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_conditional_expr(self):
    # See https://bitbucket.org/plas/thonny/issues/108/ast-marker-crashes-with-conditional
    source = "a = True if True else False\nprint(a)"
    m = self.create_mark_checker(source)
    name_a = 'AssignName:a' if self.is_astroid_test else 'Name:a'
    const_true = ('Const:True' if self.is_astroid_test else
                  'Name:True' if six.PY2 else
                  'Constant:True')
    self.assertEqual(m.view_nodes_at(1, 0),
                     {name_a, "Assign:a = True if True else False", "Module:" + source})
    self.assertEqual(m.view_nodes_at(1, 4),
                     {const_true, 'IfExp:True if True else False'})
    if six.PY2:
      self.assertEqual(m.view_nodes_at(2, 0), {"Print:print(a)"})
    else:
      self.assertEqual(m.view_nodes_at(2, 0), {"Name:print", "Call:print(a)", "Expr:print(a)"}) 
开发者ID:gristlabs,项目名称:asttokens,代码行数:18,代码来源:test_mark_tokens.py

示例2: test_parens_around_func

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_parens_around_func(self):
    source = textwrap.dedent(
      '''
      foo()
      (foo)()
      (lambda: 0)()
      (lambda: ())()
      (foo)((1))
      (lambda: ())((2))
      x = (obj.attribute.get_callback() or default_callback)()
      ''')
    m = self.create_mark_checker(source)
    self.assertEqual(m.view_nodes_at(2, 0), {"Name:foo", "Expr:foo()", "Call:foo()"})
    self.assertEqual(m.view_nodes_at(3, 1), {"Name:foo"})
    self.assertEqual(m.view_nodes_at(3, 0), {"Expr:(foo)()", "Call:(foo)()"})
    self.assertEqual(m.view_nodes_at(4, 0), {"Expr:(lambda: 0)()", "Call:(lambda: 0)()"})
    self.assertEqual(m.view_nodes_at(5, 0), {"Expr:(lambda: ())()", "Call:(lambda: ())()"})
    self.assertEqual(m.view_nodes_at(6, 0), {"Expr:(foo)((1))", "Call:(foo)((1))"})
    self.assertEqual(m.view_nodes_at(7, 0), {"Expr:(lambda: ())((2))", "Call:(lambda: ())((2))"})
    self.assertEqual(m.view_nodes_at(8, 4),
                     {"Call:(obj.attribute.get_callback() or default_callback)()"})
    self.assertIn('BoolOp:obj.attribute.get_callback() or default_callback', m.view_nodes_at(8, 5)) 
开发者ID:gristlabs,项目名称:asttokens,代码行数:24,代码来源:test_mark_tokens.py

示例3: parse_snippet

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def parse_snippet(self, text, node):
    """
    Returns the parsed AST tree for the given text, handling issues with indentation and newlines
    when text is really an extracted part of larger code.
    """
    # If text is indented, it's a statement, and we need to put in a scope for indents to be valid
    # (using textwrap.dedent is insufficient because some lines may not indented, e.g. comments or
    # multiline strings). If text is an expression but has newlines, we parenthesize it to make it
    # parsable.
    # For expressions and statements, we add a dummy statement '_' before it because if it's just a
    # string contained in an astroid.Const or astroid.Expr it will end up in the doc attribute and be
    # a pain to extract for comparison
    indented = re.match(r'^[ \t]+\S', text)
    if indented:
      return self.module.parse('def dummy():\n' + text).body[0].body[0]
    if util.is_expr(node):
      return self.module.parse('_\n(' + text + ')').body[1].value
    if util.is_module(node):
      return self.module.parse(text)
    return self.module.parse('_\n' + text).body[1] 
开发者ID:gristlabs,项目名称:asttokens,代码行数:22,代码来源:test_mark_tokens.py

示例4: _check_docstring

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def _check_docstring(self, node_type, node, report_missing=True,
                         confidence=interfaces.HIGH):
        """check the node has a non empty docstring"""
        docstring = node.doc
        if docstring is None:
            if not report_missing:
                return
            lines = get_node_last_lineno(node) - node.lineno

            if node_type == 'module' and not lines:
                # If the module has no body, there's no reason
                # to require a docstring.
                return
            max_lines = self.config.docstring_min_length

            if node_type != 'module' and max_lines > -1 and lines < max_lines:
                return
            self.stats['undocumented_'+node_type] += 1
            if (node.body and isinstance(node.body[0], astroid.Expr) and
                    isinstance(node.body[0].value, astroid.Call)):
                # Most likely a string with a format call. Let's see.
                func = utils.safe_infer(node.body[0].value.func)
                if (isinstance(func, astroid.BoundMethod)
                        and isinstance(func.bound, astroid.Instance)):
                    # Strings in Python 3, others in Python 2.
                    if PY3K and func.bound.name == 'str':
                        return
                    elif func.bound.name in ('str', 'unicode', 'bytes'):
                        return
            self.add_message('missing-docstring', node=node, args=(node_type,),
                             confidence=confidence)
        elif not docstring.strip():
            self.stats['undocumented_'+node_type] += 1
            self.add_message('empty-docstring', node=node, args=(node_type,),
                             confidence=confidence) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:37,代码来源:base.py

示例5: _no_context_variadic_keywords

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def _no_context_variadic_keywords(node):
    statement = node.statement()
    scope = node.scope()
    variadics = ()

    if not isinstance(scope, astroid.FunctionDef):
        return False

    if isinstance(statement, astroid.Expr) and isinstance(statement.value, astroid.Call):
        call = statement.value
        variadics = call.keywords or ()

    return _no_context_variadic(node, scope.args.kwarg, astroid.Keyword, variadics) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:15,代码来源:typecheck.py

示例6: _no_context_variadic_positional

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def _no_context_variadic_positional(node):
    statement = node.statement()
    scope = node.scope()
    variadics = ()

    if not isinstance(scope, astroid.FunctionDef):
        return False

    if isinstance(statement, astroid.Expr) and isinstance(statement.value, astroid.Call):
        call = statement.value
        variadics = call.starargs

    return _no_context_variadic(node, scope.args.vararg, astroid.Starred, variadics) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:15,代码来源:typecheck.py

示例7: expr_node

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def expr_node(draw, value=None):
    value = value or expr
    node = astroid.Expr()
    node.postinit(draw(value))
    return node 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:7,代码来源:custom_hypothesis_support.py

示例8: test_expr

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_expr(expr):
    module, _ = cs._parse_text(expr)
    for expr_node in module.nodes_of_class(astroid.Expr):
        assert expr_node.inf_type.getValue() == expr_node.value.inf_type.getValue() 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:6,代码来源:test_literals.py

示例9: test_bad_attribute_access

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_bad_attribute_access():
    """ User tries to access a non-existing attribute; or misspells the attribute name.
    """
    program = f'x = 1\n' \
              f'x.wrong_name\n'
    module, inferer = cs._parse_text(program)
    expr_node = next(module.nodes_of_class(astroid.Expr))
    expected_msg = 'TypeFail: Invalid attribute lookup x.wrong_name'
    assert expr_node.inf_type.getValue() == expected_msg 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:11,代码来源:test_classdef.py

示例10: test_function_def_call_no_args

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_function_def_call_no_args(function_name, return_value):
    """Test type setting in environment of a function call for a function with no parameters."""
    program = _parse_to_function(function_name, [], repr(return_value)) + "\n" + function_name + "()\n"
    module, inferer = cs._parse_text(program)
    # there should be a single Expr node in this program
    function_def_node = list(module.nodes_of_class(astroid.FunctionDef))[0]
    return_tvar = function_def_node.type_environment.lookup_in_env('return')
    return_type = inferer.type_constraints.resolve(return_tvar).getValue()
    expr_node = next(module.nodes_of_class(astroid.Expr))
    assert expr_node.inf_type.getValue() == return_type 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:12,代码来源:test_functions.py

示例11: _no_context_variadic_keywords

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def _no_context_variadic_keywords(node):
    statement = node.statement()
    scope = node.scope()
    variadics = ()

    if not isinstance(scope, astroid.FunctionDef):
        return False

    if isinstance(statement, (astroid.Return, astroid.Expr)) and isinstance(
        statement.value, astroid.Call
    ):
        call = statement.value
        variadics = list(call.keywords or []) + call.kwargs

    return _no_context_variadic(node, scope.args.kwarg, astroid.Keyword, variadics) 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:17,代码来源:typecheck.py

示例12: _no_context_variadic_positional

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def _no_context_variadic_positional(node):
    statement = node.statement()
    scope = node.scope()
    variadics = ()

    if not isinstance(scope, astroid.FunctionDef):
        return False

    if isinstance(statement, (astroid.Expr, astroid.Return)) and isinstance(
        statement.value, astroid.Call
    ):
        call = statement.value
        variadics = call.starargs + call.kwargs

    return _no_context_variadic(node, scope.args.vararg, astroid.Starred, variadics) 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:17,代码来源:typecheck.py

示例13: test_mark_tokens_simple

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_mark_tokens_simple(self):
    source = tools.read_fixture('astroid', 'module.py')
    m = self.create_mark_checker(source)

    # Line 14 is: [indent 4] MY_DICT[key] = val
    self.assertEqual(m.view_nodes_at(14, 4), {
      "Name:MY_DICT",
      "Subscript:MY_DICT[key]",
      "Assign:MY_DICT[key] = val"
    })

    # Line 35 is: [indent 12] raise XXXError()
    self.assertEqual(m.view_nodes_at(35, 12), {'Raise:raise XXXError()'})
    self.assertEqual(m.view_nodes_at(35, 18), {'Call:XXXError()', 'Name:XXXError'})

    # Line 53 is: [indent 12] autre = [a for (a, b) in MY_DICT if b]
    self.assertEqual(m.view_nodes_at(53, 20), {'ListComp:[a for (a, b) in MY_DICT if b]'})
    self.assertEqual(m.view_nodes_at(53, 21), {'Name:a'})
    if self.is_astroid_test:
      self.assertEqual(m.view_nodes_at(53, 23), {'Comprehension:for (a, b) in MY_DICT if b'})
    else:
      self.assertEqual(m.view_nodes_at(53, 23), {'comprehension:for (a, b) in MY_DICT if b'})

    # Line 59 is: [indent 12] global_access(local, val=autre)
    self.assertEqual(m.view_node_types_at(59, 12), {'Name', 'Call', 'Expr'})
    self.assertEqual(m.view_nodes_at(59, 26), {'Name:local'})
    if self.is_astroid_test:
      self.assertEqual(m.view_nodes_at(59, 33), {'Keyword:val=autre'})
    else:
      self.assertEqual(m.view_nodes_at(59, 33), {'keyword:val=autre'})
    self.assertEqual(m.view_nodes_at(59, 37), {'Name:autre'}) 
开发者ID:gristlabs,项目名称:asttokens,代码行数:33,代码来源:test_mark_tokens.py

示例14: test_print_function

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_print_function(self):
    # This testcase imports print as function (using from __future__). Check that we can parse it.
    # verify_all_nodes doesn't work on Python 2 because the print() call parsed in isolation
    # is viewed as a Print node since it doesn't see the future import
    source = tools.read_fixture('astroid/nonregr.py')
    m = self.create_mark_checker(source, verify=six.PY3)

    # Line 16 is: [indent 8] print(v.get('yo'))
    self.assertEqual(m.view_nodes_at(16, 8),
                     { "Call:print(v.get('yo'))", "Expr:print(v.get('yo'))", "Name:print" })
    self.assertEqual(m.view_nodes_at(16, 14), {"Call:v.get('yo')", "Attribute:v.get", "Name:v"})

  # To make sure we can handle various hard cases, we include tests for issues reported for a
  # similar project here: https://bitbucket.org/plas/thonny 
开发者ID:gristlabs,项目名称:asttokens,代码行数:16,代码来源:test_mark_tokens.py

示例15: test_splat

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Expr [as 别名]
def test_splat(self):
    # See https://bitbucket.org/plas/thonny/issues/151/debugger-crashes-when-encountering-a-splat
    source = textwrap.dedent("""
      arr = [1,2,3,4,5]
      def print_all(a, b, c, d, e):
          print(a, b, c, d ,e)
      print_all(*arr)
    """)
    m = self.create_mark_checker(source)
    self.assertEqual(m.view_nodes_at(5, 0),
        { "Expr:print_all(*arr)", "Call:print_all(*arr)", "Name:print_all" })
    if not six.PY2 or self.is_astroid_test:
      self.assertEqual(m.view_nodes_at(5, 10), { "Starred:*arr" })
    self.assertEqual(m.view_nodes_at(5, 11), { "Name:arr" }) 
开发者ID:gristlabs,项目名称:asttokens,代码行数:16,代码来源:test_mark_tokens.py


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