Module rulebook-pylint.rulebook_pylint.internals.nodes

Functions

def get_assignname(node: astroid.nodes.node_classes.Assign) ‑> astroid.nodes.node_classes.AssignName | None
Expand source code
def get_assignname(node: Assign) -> AssignName | None:
    target: NodeNG
    if isinstance(node, AnnAssign):
        target = node.target
    elif isinstance(node.targets[0], AssignName):
        target = node.targets[0]
    else:
        return None
    return target if isinstance(target, AssignName) else None
def has_decorator(node: astroid.nodes.scoped_nodes.scoped_nodes.FunctionDef | astroid.nodes.scoped_nodes.scoped_nodes.ClassDef,
name: str) ‑> bool
Expand source code
def has_decorator(node: FunctionDef | ClassDef, name: str) -> bool:
    return any(
        ((isinstance(n, Name) and n.name == name) or \
         (isinstance(n, Attribute) and n.attrname == name) \
         for n in node.decorators.nodes),
    ) if node.decorators \
        else False
def has_jump_statement(node: astroid.nodes.node_ng.NodeNG) ‑> bool
Expand source code
def has_jump_statement(node: NodeNG) -> bool:
    return any(isinstance(n, (Return, Raise, Break, Continue)) for n in node.body) \
        if isinstance(node, (If, MatchCase)) \
        else False
def is_comment_empty(token: tokenize.TokenInfo) ‑> bool
Expand source code
def is_comment_empty(token: TokenInfo) -> bool:
    return token.type == COMMENT and token.string == '#'
def is_multiline(node: astroid.nodes.node_ng.NodeNG) ‑> bool
Expand source code
def is_multiline(node: NodeNG) -> bool:
    if isinstance(node, If):
        return node.body[-1].end_lineno > node.body[0].lineno or \
            is_multiline(node.test)
    if isinstance(node, MatchCase):
        return node.body[-1].end_lineno > node.body[0].lineno or \
            is_multiline(node.pattern)
    if isinstance(node, ClassDef):
        return node.body[-1].end_lineno > node.body[0].lineno or \
            is_multiline(node.bases)
    return node.end_lineno > node.lineno