def init_sol(solver, sol=None, mode=0, tmpdir=None): ''' mode = 0: standard mode mode = 1: mode 0 + backup tmpdir and return it to caller mode = 2: read data from tmpdir ''' # cleaning folder if not cbook.ProxyAlive(solver._model): print("can not initialize solution folder. model is not spedified") solver._model = None return False if sol is None: if cbook.ProxyAlive(solver._sol): sol = solver._sol if sol is None: print("can not initialize solution folder. sol is not spedified") return False for name, child in sol.get_children(): child.destroy() root = solver.get_root_parent() wdir = root.getvar('wdir') if mode != 2: fpath = os.path.join(wdir, '.tmp' + str(solver.id)) if os.path.exists(fpath): os.remove(fpath) rm = solver._model.get_root_model() scripts = [obj for obj in rm.walk_tree() if isinstance(obj, PyScript)] for s in scripts: s._save_link = True flag, tmpdir = rm.save_subtree(fpath, maketar=False) for s in scripts: s._save_link = False else: shutil.copytree(tmpdir + '_bk', tmpdir) if mode == 1: shutil.copytree(tmpdir, tmpdir + '_bk') sol.load_subtree(tmpdir, usetar=False) sol.setvar('source_model', solver._model.get_root_model().get_full_path()) # os.remove(fpath) if not sol.has_child('parameters'): sol.add_child('parameters', PyParam()) if cbook.ProxyAlive(solver._param): # psetting = root.setting.parameters param = solver._param vars = param.getvar_copy() sol.parameters.setvar(vars) if mode == 1: return True, tmpdir return True
def init_sol(self, sol=None): if sol is None: psol, sol_exist = self.creat_sol() else: print("error: sol is supposed to be None here") return for x in [x for x in self.walk_tree() if isinstance(x, PySol)]: x.destroy() ps = PySol() self.add_child('worker', ps) ps.add_child('parameters', PyParam()) ifigure.events.SendChangedEvent(self) return True
def __init__(self, src=None): # # variable to specify "present" subtrees. # self._pbook = None self._pmodel = None self._psetting = None self._psolver = None self._psol = None self._saved = False super(ProjectTop, self).__init__(src=src) self._name = 'proj' if src is None: setting = PySetting() self.add_child('setting', setting) param = PyParam() setting.add_child('parameters', param)
def onAddParam(self, evt): obj = PyParam() name = 'parameters' self.add_child(name, obj) evt.Skip()