# -*- coding: utf-8 -*- import os import subprocess from enum import Enum class STATUS(Enum): STOPED = 0 RUNNING = 1 FAILED = 2 CONF_ERROR = 3 class AbstractSolver(object): def __init__(self, name): super(AbstractSolver, self).__init__() self._current_process = None self._status = STATUS.STOPED # Informations self._type = "" self._name = name self._description = "" self._path_input = "" self._path_solver = "" self._path_output = "" self._cmd_input = "" self._cmd_solver = "" self._cmd_output = "" def __str__(self): return f"{self._name} : {self._type} : {self._description}" def __getitem__(self, key): ret = None if key == "name": ret = self._name elif key == "description": ret = self._description elif key == "type": ret = self._type return ret @classmethod def default_parameters(cls): lst = [ ("all_time_init", "00:00:00:00"), ("all_time_final", "01:00:00:00"), ("all_time_step", "300"), ] return lst @property def name(self): return self._name @property def description(self): return self._description @property def status(self): return self._status @property def type(self): return self._type @status.setter def status(self, status): self._status = status @name.setter def name(self, name): self._name = name @description.setter def description(self, description): self._description = description def set_input(self, path, cmd): self._path_input = path self._cmd_input = cmd def set_solver(self, path, cmd): self._path_solver = path self._cmd_solver = cmd def set_output(self, path, cmd): self._path_output = path self._cmd_output = cmd # Run def run_input_data_fomater(self): if self._cmd_input == "": return True return False def run_solver(self): if self._cmd_solver == "": return True return False def run_output_data_fomater(self, ): if self._cmd_output == "": return True return False def kill(self): return False def readline(self): return ""