import os, sys, importlib, glob, inspect, itertools class LabelCombinator(): IDENTIFIER = 'label' PREFIX = 'label_combinator_' LABEL = 'ffx' def __init__(self, context = None): self._context = context self._logger = context['logger'] self._reportLogger = context['report_logger'] def getIdentifier(self): return LabelCombinator.IDENTIFIER @staticmethod def list(): basePath = os.path.dirname(__file__) return [os.path.basename(p)[len(LabelCombinator.PREFIX):-3] for p in glob.glob(f"{ basePath }/{LabelCombinator.PREFIX}*.py", recursive = True) if p != __file__] @staticmethod def getClassReference(identifier): importlib.import_module(f"ffx.test.{LabelCombinator.PREFIX}{ identifier }") for name, obj in inspect.getmembers(sys.modules[f"ffx.test.{LabelCombinator.PREFIX}{ identifier }"]): #HINT: Excluding MediaCombinator as it seems to be included by import (?) if inspect.isclass(obj) and name != 'LabelCombinator' and name.startswith('LabelCombinator'): return obj @staticmethod def getAllClassReferences(): return [LabelCombinator.getClassReference(i) for i in LabelCombinator.list()]