Path 1: 1112 calls (0.6)

ClassDef (1112)

False (1112)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 2: 569 calls (0.31)

ClassDef (569)

False (569)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 3: 37 calls (0.02)

ClassDef (37)

False (37)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 4: 32 calls (0.02)

ClassDef (32)

True (32)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 5: 31 calls (0.02)

ClassDef (31)

True (31)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 6: 20 calls (0.01)

ClassDef (20)

True (20)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 7: 18 calls (0.01)

ClassDef (18)

False (18)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 8: 13 calls (0.01)

ClassDef (13)

True (13)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 9: 9 calls (0.0)

ClassDef (9)

False (9)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False
            

Path 10: 3 calls (0.0)

ClassDef (3)

False (3)

1def class_is_abstract(node: nodes.ClassDef) -> bool:
2    """Return true if the given class node should be considered as an abstract
3    class.
4    """
5    # Protocol classes are considered "abstract"
6    if is_protocol_class(node):
7        return True
8
9    # Only check for explicit metaclass=ABCMeta on this specific class
10    meta = node.declared_metaclass()
11    if meta is not None:
12        if meta.name == "ABCMeta" and meta.root().name in ABC_MODULES:
13            return True
14
15    for ancestor in node.ancestors():
16        if ancestor.name == "ABC" and ancestor.root().name in ABC_MODULES:
17            # abc.ABC inheritance
18            return True
19
20    for method in node.methods():
21        if method.parent.frame(future=True) is node:
22            if method.is_abstract(pass_is_abstract=False):
23                return True
24    return False