(ignore_subclasses=())
| 1421 | |
| 1422 | |
| 1423 | def all_hascachekey_subclasses(ignore_subclasses=()): |
| 1424 | def find_subclasses(cls: type): |
| 1425 | for s in class_hierarchy(cls): |
| 1426 | if ( |
| 1427 | # class_hierarchy may return values that |
| 1428 | # aren't subclasses of cls |
| 1429 | not issubclass(s, cls) |
| 1430 | or "_traverse_internals" not in s.__dict__ |
| 1431 | or any(issubclass(s, ignore) for ignore in ignore_subclasses) |
| 1432 | ): |
| 1433 | continue |
| 1434 | yield s |
| 1435 | |
| 1436 | return dict.fromkeys(find_subclasses(HasCacheKey)) |
| 1437 | |
| 1438 | |
| 1439 | class HasCacheKeySubclass(fixtures.TestBase): |
no test coverage detected