Source code for dpdispatcher.base_context

from dpdispatcher import dlog

[docs]class BaseContext(object): subclasses_dict = {} def __new__(cls, *args, **kwargs): if cls is BaseContext: subcls = cls.subclasses_dict[kwargs['context_type']] instance = subcls.__new__(subcls, *args, **kwargs) else: instance = object.__new__(cls) return instance def __init_subclass__(cls, **kwargs): super().__init_subclass__(**kwargs) cls.subclasses_dict[cls.__name__]=cls cls.subclasses_dict[cls.__name__.lower()]=cls cls.subclasses_dict[cls.__name__.replace("Context", "")]=cls cls.subclasses_dict[cls.__name__.lower().replace("context", "")]=cls
[docs] @classmethod def load_from_dict(cls, context_dict): context_type = context_dict['context_type'] # print("debug778:context_type", cls.subclasses_dict, context_type) try: context_class = cls.subclasses_dict[context_type] except KeyError as e: dlog.error(f"KeyError:context_type; context_type:{context_type}; cls.subclasses_dict:{cls.subclasses_dict}") raise e context = context_class.load_from_dict(context_dict) return context
[docs] def bind_submission(self, submission): self.submission = submission
[docs] def upload(self, submission): raise NotImplementedError('abstract method')
[docs] def download(self, submission, check_exists = False, mark_failure = True, back_error=False): raise NotImplementedError('abstract method')
[docs] def clean(self): raise NotImplementedError('abstract method')
[docs] def write_file(self, fname, write_str): raise NotImplementedError('abstract method')
[docs] def read_file(self, fname): raise NotImplementedError('abstract method')
[docs] def kill(self, proc): raise NotImplementedError('abstract method')
[docs] def check_finish(self, proc): raise NotImplementedError('abstract method')