class RenderWorkerFactory: @staticmethod def supported_classes(): # to add support for any additional RenderWorker classes, import their classes and add to list here from .blender_worker import BlenderRenderWorker from .aerender_worker import AERenderWorker from .ffmpeg_worker import FFMPEGRenderWorker classes = [BlenderRenderWorker, AERenderWorker, FFMPEGRenderWorker] return classes @staticmethod def create_worker(renderer, input_path, output_path, args=None, parent=None, name=None): worker_class = RenderWorkerFactory.class_for_name(renderer) return worker_class(input_path=input_path, output_path=output_path, args=args, parent=parent, name=name) @staticmethod def supported_renderers(): return [x.engine.name() for x in RenderWorkerFactory.supported_classes()] @staticmethod def class_for_name(name): name = name.lower() for render_class in RenderWorkerFactory.supported_classes(): if render_class.engine.name() == name: return render_class raise LookupError(f'Cannot find class for name: {name}')