class QSRlib_Request_Message(object): def __init__(self, which_qsr="", input_data=None, qsrs_for=[], timestamp_request_made=None, start=0, finish=-1, objects_names=[], include_missing_data=True, qsr_relations_and_values={}, future=False, config=None, dynamic_args=None): self.future = future self.which_qsr = which_qsr self.input_data = None self.set_input_data(input_data=input_data, start=start, finish=finish, objects_names=objects_names) self.qsrs_for = qsrs_for self.timestamp_request_made = datetime.now() if timestamp_request_made is None else timestamp_request_made self.include_missing_data = include_missing_data self.qsr_relations_and_values = qsr_relations_and_values # should be more dynamic self.config = config self.dynamic_args = dynamic_args def make(self, which_qsr, input_data, qsrs_for=[], timestamp_request_made=None, future=None, ini=None, dynamic_args=None): if future: self.future = future self.which_qsr = which_qsr self.input_data = self.set_input_data(input_data) self.qsrs_for = qsrs_for self.timestamp_request_made = datetime.now() if timestamp_request_made is None else timestamp_request_made self.ini = None self.dynamic_args = None def set_input_data(self, input_data, start=0, finish=-1, objects_names=[]): error = False if input_data is None: input_data = World_Trace() if isinstance(input_data, World_Trace): if len(input_data.trace) > 0: self.input_data = input_data else: if self.input_data is not None and len(self.input_data.trace) > 0: print("Reusing previous input data") else: print("Warning (QSRlib_Request_Message.set_input_data): It seems you are trying to reuse previous data, but previous data is empty") self.input_data = World_Trace(description="error") error = True else: print("ERROR (QSRLib_.set_input_data): input data has incorrect type, must be of type 'World_Trace'") self.input_data = World_Trace(description="error") error = True if not error: if finish >= 0: self.input_data = self.input_data.get_at_timestamp_range(start=start, finish=finish) if len(objects_names) > 0: self.input_data = self.input_data.get_for_objects(objects_names=objects_names)