You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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()]
|