Path 1: 308 calls (1.0)

'MyClass' (25) 'Foo' (16) 'CustomTypedDict2' (12) 'MyClass1' (11) 'ClassUnpacking' (8) 'CustomDataClass' (7) 'CustomNamedTuple' (6) 'Custom1' (6) 'Der...

False (283) True (25)

1def _is_abstract_class_name(name: str) -> bool:
2    lname = name.lower()
3    is_mixin = lname.endswith("mixin")
4    is_abstract = lname.startswith("abstract")
5    is_base = lname.startswith("base") or lname.endswith("base")
6    return is_mixin or is_abstract or is_base