def create_driver( self, # pylint: disable=R0913 p_module: str, p_queue_factory: AbstractQueueFactory, p_processor_factory: AbstractProcessorFactory, p_puller_factory: AbstractPullerFactory, p_pusher_factory: AbstractPusherFactory) -> AbstractDriver: """ Creates a new driver object """ if p_module == "" or p_module is None: raise DriverCreationError( DriverCreationError.ErrorCode.parameter_missing) candidates = Inspector.get_classes_in_module( p_module, exclude_classes=["AbstractDriver"]) for candidate in candidates: try: obj_instance = candidate(p_queue_factory, p_processor_factory, p_puller_factory, p_pusher_factory) if isinstance(obj_instance, AbstractDriver): return obj_instance except Exception: # pylint: disable=W0703 pass raise DriverCreationError( DriverCreationError.ErrorCode.cant_create_instance, p_module=p_module)
def create_database( self, # pylint: disable=R0913 p_module: str, p_client_id: str, p_log: Log, p_passenger_factory: AbstractPassengerFactory, p_arguments: dict) -> AbstractDatabase: """ Default method for database creation """ if p_module == "" or p_module is None: raise DatabaseCreationError( DatabaseCreationError.ErrorCode.parameter_missing) if p_client_id is None: client_id = "" else: client_id = p_client_id candidates = Inspector.get_classes_in_module( p_module, exclude_classes=["AbstractDatabase", "datetime"]) for candidate in candidates: try: obj_instance = candidate(client_id, p_log, p_passenger_factory, p_arguments) if isinstance(obj_instance, AbstractDatabase): return obj_instance except Exception: # pylint: disable=W0703 continue raise DatabaseCreationError( DatabaseCreationError.ErrorCode.cant_create_instance, p_module=p_module, p_client_id=p_client_id)
def create_dispatcher( self, p_module: str = None, p_ticket: DispatcherTicket = None) -> AbstractDispatcher: """ Dispatcher factory """ if p_module == "" or p_module is None: dispatcher_module = PrimalDispatcherFactory._DEFAULT_DISPATCHER else: dispatcher_module = p_module if p_ticket is None: dispatcher_ticket = DispatcherTicket() else: dispatcher_ticket = p_ticket candidates = Inspector.get_classes_in_module( dispatcher_module, exclude_classes=["AbstractDispatcher"]) for candidate in candidates: try: obj_instance = candidate(dispatcher_ticket) if isinstance(obj_instance, AbstractDispatcher): return obj_instance except Exception: # pylint: disable=W0703 pass raise DispatcherCreationError( DispatcherCreationError.ErrorCode.cant_create_instance, p_module=dispatcher_module)
def create_pusher(self, p_module: str, p_log: Log) -> AbstractPusher: """ Creates a new pusher object """ if p_module == "" or p_module is None: raise PusherCreationError( PusherCreationError.ErrorCode.parameter_missing) candidates = Inspector.get_classes_in_module( p_module, exclude_classes=["AbstractPusher"]) for candidate in candidates: try: obj_instance = candidate(p_log) if isinstance(obj_instance, AbstractPusher): return obj_instance except Exception: # pylint: disable=W0703 pass raise PusherCreationError( PusherCreationError.ErrorCode.cant_create_instance, p_module=p_module)
def create_passenger(self, p_module: str) -> AbstractPassenger: """ Default passenger factory """ if p_module == "" or p_module is None: raise PassengerCreationError(PassengerCreationError.ErrorCode.parameter_missing) candidates = Inspector.get_classes_in_module(p_module, exclude_classes=["AbstractPassenger"]) # pylint: disable=C0301 for candidate in candidates: try: obj_instance = candidate(p_passenger_module=p_module) if obj_instance.__module__ != p_module: continue if isinstance(obj_instance, AbstractPassenger): return obj_instance except Exception: # pylint: disable=W0703 pass raise PassengerCreationError( PassengerCreationError.ErrorCode.cant_create_instance, p_module=p_module)
def create_puller(self, p_module: str, p_log: Log) -> AbstractPuller: """ Puller factory """ if p_module == "" or p_module is None: raise PullerCreationError(PullerCreationError.ErrorCode.parameter_missing) candidates = Inspector.get_classes_in_module(p_module, exclude_classes=["AbstractPuller"]) for candidate in candidates: try: obj_instance = candidate(p_log) if isinstance(obj_instance, AbstractPuller) and obj_instance.__module__ == p_module: return obj_instance except AbstractPullerError as puller_error: raise puller_error except Exception: # pylint: disable=W0703 continue raise PullerCreationError( PullerCreationError.ErrorCode.cant_create_instance, p_module=p_module)
def create_queue(self, p_module: str, p_database: AbstractDatabase, p_log: Log) -> AbstractQueue: """ Queue factory """ if p_module == "" or p_module is None or p_database is None or p_log is None: raise QueueCreationError( QueueCreationError.ErrorCode.parameter_missing, p_module=str(p_module)) candidates = Inspector.get_classes_in_module( p_module, exclude_classes=["AbstractQueue"]) for candidate in candidates: try: obj_instance = candidate(p_database, p_log) if isinstance(obj_instance, AbstractQueue): return obj_instance except Exception: # pylint: disable=W0703 continue raise QueueCreationError( QueueCreationError.ErrorCode.cant_create_instance, p_module=p_module)