@classmethod<EOL><INDENT>def modules(cls):<DEDENT>
members = inspect.getmembers(cls, lambda a: not (inspect.isroutine(a) and a.__name__ == '<STR_LIT>'))<EOL>modules = [module for name, module in members if not name.startswith('<STR_LIT:_>')]<EOL>return modules<EOL>
Collect all the public class attributes.

        All class attributes should be a DI modules, this method collects them
        and returns as a list.

        :return: list of DI modules
        :rtype: list[Union[Module, Callable]]