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


Python astroid.Return方法代码示例

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


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

示例1: returns_something

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def returns_something(return_node):
    """Check if a return node returns a value other than None.

    :param return_node: The return node to check.
    :type return_node: astroid.Return

    :rtype: bool
    :return: True if the return node returns a value other than None,
        False otherwise.
    """
    returns = return_node.value

    if returns is None:
        return False

    return not (isinstance(returns, astroid.Const) and returns.value is None) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:18,代码来源:_check_docs_utils.py

示例2: _if_statement_is_always_returning

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _if_statement_is_always_returning(if_node):
    def _has_return_node(elems, scope):
        for node in elems:
            if isinstance(node, astroid.If):
                yield _if_statement_is_always_returning(node)
            elif isinstance(node, astroid.Return):
                yield node.scope() is scope

    scope = if_node.scope()
    body_returns = _all_elements_are_true(
        _has_return_node(if_node.body, scope=scope)
    )
    if if_node.orelse:
        orelse_returns = _all_elements_are_true(
            _has_return_node(if_node.orelse, scope=scope)
        )
    else:
        orelse_returns = False

    return body_returns and orelse_returns 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:22,代码来源:refactoring.py

示例3: _check_consistent_returns

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _check_consistent_returns(self, node):
        """Check that all return statements inside a function are consistent.

        Return statements are consistent if:
            - all returns are explicit and if there is no implicit return;
            - all returns are empty and if there is, possibly, an implicit return.

        Args:
            node (astroid.FunctionDef): the function holding the return statements.

        """
        # explicit return statements are those with a not None value
        explicit_returns = [_node for _node in self._return_nodes[node.name]
                            if _node.value is not None]
        if not explicit_returns:
            return
        if (len(explicit_returns) == len(self._return_nodes[node.name])
                and self._is_node_return_ended(node)):
            return
        self.add_message('inconsistent-return-statements', node=node) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:22,代码来源:refactoring.py

示例4: visit_return

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def visit_return(self, node: astroid.Return) -> None:
        return_tvar = self.lookup_typevar(node, 'return')
        # TODO: Replace with isinstance() once proper TypeFail subclass is created for unbound indentifiers
        if return_tvar == TypeFail("Unbound identifier"):
            return_target = TypeFailReturn(node)
        else:
            return_target = return_tvar

        if node.value is not None and getattr(node.scope(), 'returns', None) is not None:
            return_annotation = _ann_node_to_type(node.scope().returns)
            return_value = self.type_constraints.unify(node.value.inf_type, return_annotation, node)
        elif node.value is not None:
            return_value = node.value.inf_type
        else:
            return_value = TypeInfo(None)

        val_inf_type = self.type_constraints.unify(return_value, return_target, node)
        node.inf_type = val_inf_type if isinstance(val_inf_type, TypeFail) else NoType() 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:20,代码来源:type_inference_visitor.py

示例5: accept_failable

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def accept_failable(f: Callable) -> Callable:
    """Decorator to allow function fo to optionally acceptance instances of Failable as arguments."""
    def _f(*args, **kwargs):
        """Extract value from Failable arguments, pass values to function f.
        Return TypeFail instead if found.
        """
        new_args = []
        new_kwargs = {}
        for a in args:
            if isinstance(a, Failable):
                if isinstance(a, TypeFail):
                    return a
                a >> new_args.append
            else:
                new_args.append(a)
        for kw in kwargs:
            if isinstance(kwargs[kw], Failable):
                if isinstance(kwargs[kw], Failable):
                    return kwargs[kw]
                new_kwargs += kwargs[kw] >> (lambda t: dict(kw=t))
            else:
                new_kwargs[kw] = kwargs[kw]
        return f(*new_args, **new_kwargs)

    return _f 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:27,代码来源:base.py

示例6: resolve

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def resolve(self, t: type) -> TypeResult:
        """Return the concrete type or set representative associated with the given type.
        """
        if isinstance(t, _GenericAlias):
            if t.__args__ is not None:
                res_args = [self.resolve(arg) for arg in t.__args__]
                return _wrap_generic_meta(t, failable_collect(res_args))
            else:
                return TypeInfo(t)
        elif isinstance(t, TypeVar):
            try:
                repr = self.find_repr(self.type_to_tnode[str(t)])
                if repr and repr.type is not t:
                    if any(elt is t for elt in getattr(repr.type, '__args__', [])):
                        return TypeInfo(t)
                    else:
                        return self.resolve(repr.type)
            except KeyError:
                return TypeInfo(t)
        return TypeInfo(t) 
开发者ID:pyta-uoft,项目名称:pyta,代码行数:22,代码来源:base.py

示例7: _check_consistent_returns

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _check_consistent_returns(self, node):
        """Check that all return statements inside a function are consistent.

        Return statements are consistent if:
            - all returns are explicit and if there is no implicit return;
            - all returns are empty and if there is, possibly, an implicit return.

        Args:
            node (astroid.FunctionDef): the function holding the return statements.

        """
        # explicit return statements are those with a not None value
        explicit_returns = [
            _node for _node in self._return_nodes[node.name] if _node.value is not None
        ]
        if not explicit_returns:
            return
        if len(explicit_returns) == len(
            self._return_nodes[node.name]
        ) and self._is_node_return_ended(node):
            return
        self.add_message("inconsistent-return-statements", node=node) 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:24,代码来源:refactoring.py

示例8: _has_homonym_in_upper_function_scope

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _has_homonym_in_upper_function_scope(self, node, index):
        """
        Return True if there is a node with the same name in the to_consume dict of an upper scope
        and if that scope is a function

        :param node: node to check for
        :type node: astroid.Node
        :param index: index of the current consumer inside self._to_consume
        :type index: int
        :return: True if there is a node with the same name in the to_consume dict of an upper scope
                 and if that scope is a function
        :rtype: bool
        """
        for _consumer in self._to_consume[index - 1 :: -1]:
            if _consumer.scope_type == "function" and node.name in _consumer.to_consume:
                return True
        return False 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:19,代码来源:variables.py

示例9: _check_return_at_the_end

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _check_return_at_the_end(self, node):
        """Check for presence of a *single* return statement at the end of a
        function. "return" or "return None" are useless because None is the
        default return type if they are missing.

        NOTE: produces a message only if there is a single return statement
        in the function body. Otherwise _check_consistent_returns() is called!
        Per its implementation and PEP8 we can have a "return None" at the end
        of the function body if there are other return statements before that!
        """
        if len(self._return_nodes[node.name]) > 1:
            return
        if len(node.body) <= 1:
            return

        last = node.body[-1]
        if isinstance(last, astroid.Return):
            # e.g. "return"
            if last.value is None:
                self.add_message("useless-return", node=node)
            # return None"
            elif isinstance(last.value, astroid.Const) and (last.value.value is None):
                self.add_message("useless-return", node=node) 
开发者ID:sofia-netsurv,项目名称:python-netsurv,代码行数:25,代码来源:refactoring.py

示例10: check_functiondef_returns

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def check_functiondef_returns(self, node, node_doc):
        if ((not node_doc.supports_yields and node.is_generator())
                or node.is_abstract()):
            return

        return_nodes = node.nodes_of_class(astroid.Return)
        if ((node_doc.has_returns() or node_doc.has_rtype()) and
                not any(utils.returns_something(ret_node) for ret_node in return_nodes)):
            self.add_message(
                'redundant-returns-doc',
                node=node) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:13,代码来源:docparams.py

示例11: _check_late_binding_closure

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _check_late_binding_closure(self, node, assignment_node):
        def _is_direct_lambda_call():
            return (isinstance(node_scope.parent, astroid.Call)
                    and node_scope.parent.func is node_scope)

        node_scope = node.scope()
        if not isinstance(node_scope, (astroid.Lambda, astroid.FunctionDef)):
            return
        if isinstance(node.parent, astroid.Arguments):
            return

        if isinstance(assignment_node, astroid.Comprehension):
            if assignment_node.parent.parent_of(node.scope()):
                self.add_message('cell-var-from-loop', node=node, args=node.name)
        else:
            assign_scope = assignment_node.scope()
            maybe_for = assignment_node
            while not isinstance(maybe_for, astroid.For):
                if maybe_for is assign_scope:
                    break
                maybe_for = maybe_for.parent
            else:
                if (maybe_for.parent_of(node_scope)
                        and not _is_direct_lambda_call()
                        and not isinstance(node_scope.statement(), astroid.Return)):
                    self.add_message('cell-var-from-loop', node=node, args=node.name) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:28,代码来源:variables.py

示例12: _ignore_class_scope

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _ignore_class_scope(self, node):
        """
        Return True if the node is in a local class scope, as an assignment.

        :param node: Node considered
        :type node: astroid.Node
        :return: True if the node is in a local class scope, as an assignment. False otherwise.
        :rtype: bool
        """
        # Detect if we are in a local class scope, as an assignment.
        # For example, the following is fair game.
        #
        # class A:
        #    b = 1
        #    c = lambda b=b: b * b
        #
        # class B:
        #    tp = 1
        #    def func(self, arg: tp):
        #        ...
        # class C:
        #    tp = 2
        #    def func(self, arg=tp):
        #        ...

        name = node.name
        frame = node.statement().scope()
        in_annotation_or_default = self._defined_in_function_definition(node, frame)
        if in_annotation_or_default:
            frame_locals = frame.parent.scope().locals
        else:
            frame_locals = frame.locals
        return not ((isinstance(frame, astroid.ClassDef) or in_annotation_or_default) and
                    name in frame_locals) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:36,代码来源:variables.py

示例13: _check_exception_inherit_from_stopiteration

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _check_exception_inherit_from_stopiteration(exc):
        """Return True if the exception node in argument inherit from StopIteration"""
        stopiteration_qname = '{}.StopIteration'.format(utils.EXCEPTIONS_MODULE)
        return any(_class.qname() == stopiteration_qname for _class in exc.mro()) 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:6,代码来源:refactoring.py

示例14: visit_functiondef

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def visit_functiondef(self, node):
        self._return_nodes[node.name] = []
        return_nodes = node.nodes_of_class(astroid.Return)
        self._return_nodes[node.name] = [_rnode for _rnode in return_nodes
                                         if _rnode.frame() == node.frame()] 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:7,代码来源:refactoring.py

示例15: _is_function_def_never_returning

# 需要导入模块: import astroid [as 别名]
# 或者: from astroid import Return [as 别名]
def _is_function_def_never_returning(self, node):
        """Return True if the function never returns. False otherwise.

        Args:
            node (astroid.FunctionDef): function definition node to be analyzed.

        Returns:
            bool: True if the function never returns, False otherwise.
        """
        try:
            return node.qname() in self._never_returning_functions
        except TypeError:
            return False 
开发者ID:AtomLinter,项目名称:linter-pylama,代码行数:15,代码来源:refactoring.py


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