def get_members(
        self, mod, aliases_are_defs: bool = False
    ) -> Dict[str, Dict[str, test_utils.Member]]:
        """Get the API members of the trulens_eval module."""
        # TODEP: Deprecate after trulens_eval is removed.

        objects = {}

        classes = set()

        # Enumerate mod and all submodules.
        for modname in test_utils.get_submodule_names(mod):
            mod = test_utils.get_module_members(
                modname, aliases_are_defs=aliases_are_defs
            )
            if mod is None:
                continue

            highs = {}
            lows = {}

            for mem in mod.api_highs:
                if inspect.isclass(mem.val):
                    classes.add((modname + "." + mem.name, mem.val))

                highs[mem.name] = test_utils.type_str(mem.typ)

            for mem in mod.api_lows:
                if inspect.isclass(mem.val):
                    classes.add((modname + "." + mem.name, mem.val))

                lows[mem.name] = test_utils.type_str(mem.typ)

            k = modname

            objects[k] = {
                "highs": highs,
                "lows": lows,
                "__class__": test_utils.type_str(type(mod.obj)),
            }
            if mod.version is not None:
                objects[k]["__version__"] = mod.version

        # Enumerate all public classes found in the prior step.
        for class_alias, class_ in classes:
            if import_utils.is_dummy(class_):
                if not deprecation_utils.is_deprecated(class_):
                    with self.subTest(class_=class_.__name__):
                        self.fail(
                            f"Dummy class found in classes: {str(class_)}. Make sure all optional modules are installed before running this test."
                        )
                # Was dummy, but a deprecation dummy. Skip it.
                continue

            members = test_utils.get_class_members(
                class_,
                class_api_level="low",
                class_alias=class_alias,
                overrides_are_defs=aliases_are_defs,
            )  # api level is arbitrary

            attrs = {}

            for mem in members.api_lows:  # because of "low" above
                attrs[mem.name] = test_utils.type_str(mem.typ)

            if aliases_are_defs:
                k = class_alias
            else:
                k = test_utils.type_str(class_)

            info = {
                "__class__": test_utils.type_str(type(members.obj)),
                "__bases__": [
                    test_utils.type_str(base) for base in members.obj.__bases__
                ],
                "attributes": attrs,
            }

            objects[k] = info

        return objects
Get the API members of the trulens_eval module.
tests/unit/static/test_api.py