MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_traverse_internals

Method test_traverse_internals

test/sql/test_compare.py:1574–1604  ·  view source on GitHub ↗
(self, cls: type)

Source from the content-addressed store, hash-verified

1572
1573 @testing.combinations(*all_hascachekey_subclasses())
1574 def test_traverse_internals(self, cls: type):
1575 super_traverse = {}
1576 # ignore_super = self.ignore_super.get(cls.__name__, set())
1577 for s in cls.mro()[1:]:
1578 for attr in s.__dict__:
1579 if not attr.endswith("_traverse_internals"):
1580 continue
1581 for k, v in s.__dict__[attr]:
1582 if k not in super_traverse:
1583 super_traverse[k] = v
1584 traverse_dict = dict(cls.__dict__["_traverse_internals"])
1585 eq_(len(cls.__dict__["_traverse_internals"]), len(traverse_dict))
1586 if cls.__name__ in self.custom_traverse:
1587 eq_(traverse_dict.keys(), self.custom_traverse[cls.__name__])
1588 else:
1589 ignore = self.ignore_keys.get(cls.__name__, set())
1590
1591 left_keys = traverse_dict.keys() | ignore
1592 is_true(
1593 left_keys >= super_traverse.keys(),
1594 f"{left_keys} >= {super_traverse.keys()} - missing: "
1595 f"{super_traverse.keys() - left_keys} - ignored {ignore}",
1596 )
1597
1598 subset = {
1599 k: v for k, v in traverse_dict.items() if k in super_traverse
1600 }
1601 eq_(
1602 subset,
1603 {k: v for k, v in super_traverse.items() if k not in ignore},
1604 )
1605
1606 # name -> (traverse names, init args)
1607 custom_init = {

Callers

nothing calls this directly

Calls 6

eq_Function · 0.90
is_trueFunction · 0.90
endswithMethod · 0.45
keysMethod · 0.45
getMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected