當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。