Path 1: 5584 calls (0.79)

ClassDef (3856) List (490) Dict (478) Instance (450) Tuple (178) Const (99) Set (26) FrozenSet (4) ExceptionInstance (2) Generator (1)

None (5584)

True (5522) False (62)

1def has_known_bases(
2    klass: nodes.ClassDef, context: InferenceContext | None = None
3) -> bool:
4    """Return true if all base classes of a class could be inferred."""
5    try:
6        return klass._all_bases_known  # type: ignore[no-any-return]
7    except AttributeError:
8        pass
9    for base in klass.bases:
10        result = safe_infer(base, context=context)
11        if (
12            not isinstance(result, nodes.ClassDef)
13            or result is klass
14            or not has_known_bases(result, context=context)
15        ):
16            klass._all_bases_known = False
17            return False
18    klass._all_bases_known = True
19    return True
            

Path 2: 768 calls (0.11)

ClassDef (723) Instance (25) Const (10) Generator (5) AsyncGenerator (5)

None (768)

True (768)

AttributeError (768)

1def has_known_bases(
2    klass: nodes.ClassDef, context: InferenceContext | None = None
3) -> bool:
4    """Return true if all base classes of a class could be inferred."""
5    try:
6        return klass._all_bases_known  # type: ignore[no-any-return]
7    except AttributeError:
8        pass
9    for base in klass.bases:
10        result = safe_infer(base, context=context)
11        if (
12            not isinstance(result, nodes.ClassDef)
13            or result is klass
14            or not has_known_bases(result, context=context)
15        ):
16            klass._all_bases_known = False
17            return False
18    klass._all_bases_known = True
19    return True
            

Path 3: 708 calls (0.1)

ClassDef (359) Instance (311) Const (20) Tuple (10) Dict (6) Set (1) FrozenSet (1)

None (708)

True (708)

AttributeError (708)

1def has_known_bases(
2    klass: nodes.ClassDef, context: InferenceContext | None = None
3) -> bool:
4    """Return true if all base classes of a class could be inferred."""
5    try:
6        return klass._all_bases_known  # type: ignore[no-any-return]
7    except AttributeError:
8        pass
9    for base in klass.bases:
10        result = safe_infer(base, context=context)
11        if (
12            not isinstance(result, nodes.ClassDef)
13            or result is klass
14            or not has_known_bases(result, context=context)
15        ):
16            klass._all_bases_known = False
17            return False
18    klass._all_bases_known = True
19    return True
            

Path 4: 30 calls (0.0)

ClassDef (24) Instance (6)

None (30)

False (30)

AttributeError (30)

1def has_known_bases(
2    klass: nodes.ClassDef, context: InferenceContext | None = None
3) -> bool:
4    """Return true if all base classes of a class could be inferred."""
5    try:
6        return klass._all_bases_known  # type: ignore[no-any-return]
7    except AttributeError:
8        pass
9    for base in klass.bases:
10        result = safe_infer(base, context=context)
11        if (
12            not isinstance(result, nodes.ClassDef)
13            or result is klass
14            or not has_known_bases(result, context=context)
15        ):
16            klass._all_bases_known = False
17            return False
18    klass._all_bases_known = True
19    return True
            

Path 5: 2 calls (0.0)

ClassDef (2)

None (2)

False (2)

AttributeError (2)

1def has_known_bases(
2    klass: nodes.ClassDef, context: InferenceContext | None = None
3) -> bool:
4    """Return true if all base classes of a class could be inferred."""
5    try:
6        return klass._all_bases_known  # type: ignore[no-any-return]
7    except AttributeError:
8        pass
9    for base in klass.bases:
10        result = safe_infer(base, context=context)
11        if (
12            not isinstance(result, nodes.ClassDef)
13            or result is klass
14            or not has_known_bases(result, context=context)
15        ):
16            klass._all_bases_known = False
17            return False
18    klass._all_bases_known = True
19    return True