def reexecute(self, do_execute=False): if not self.enable_exec.state() and not do_execute: # reexecute not enabled # print "auto execute not eneabled" return if not self._request: _dprint(2, "no request to execute") return # check solver status: # self.updateTable(); _dprint(1, "accepted: ", self._request) reqid_old = self._request.request_id if not reqid_old: reqid_old = hiid(1, 1, 1, 1) rid0 = int(reqid_old[0]) rid1 = int(reqid_old[1]) + 1 rid2 = int(reqid_old[2]) + 1 reqid = hiid(rid0, rid1, rid2, 0) self._request.request_id = reqid # self._request.cache_override = True; if self._node: cmd = record(nodeindex=self._node, request=self._request, get_state=True) elif self._name: cmd = record(name=self._name, request=self._request, get_state=True) mqs().meq("Node.Execute", cmd, wait=False)
def reexecute(self, do_execute=False): if not self.enable_exec.state( ) and not do_execute: #reexecute not enabled #print "auto execute not eneabled" return if not self._request: _dprint(2, 'no request to execute') return #check solver status: # self.updateTable(); _dprint(1, 'accepted: ', self._request) reqid_old = self._request.request_id if not reqid_old: reqid_old = hiid(1, 1, 1, 1) rid0 = int(reqid_old[0]) rid1 = int(reqid_old[1]) + 1 rid2 = int(reqid_old[2]) + 1 reqid = hiid(rid0, rid1, rid2, 0) self._request.request_id = reqid #self._request.cache_override = True; if self._node: cmd = record(nodeindex=self._node, request=self._request, get_state=True) elif self._name: cmd = record(name=self._name, request=self._request, get_state=True) mqs().meq('Node.Execute', cmd, wait=False)
def _reexecute (self): if not self._request: return; _dprint(1,'accepted: ',self._request); self.rid1 = self.rid1 + 1 self._request.request_id = hiid(self.rid1, self.rid2, self.rid3, self.rid4); if self._node: cmd = record(nodeindex=self._node,request=self._request,get_state=True); elif self._name: cmd = record(name=self._name,request=self._request,get_state=True); mqs().meq('Node.Execute',cmd,wait=False); self._refresh();
def doNewRequest(self): newd = meq.domain(self.f0, self.f1, self.t0, self.t1); newc = meq.cells(domain=newd, num_freq=self.fn, num_time=self.tn); self._request = meq.request(cells=newc); self.rid1 = self.rid1 + 1 self.rid2 = self.rid2 + 1 self.rid3 = self.rid3 + 1 self.rid4 = self.rid4 + 1 self._request.request_id = hiid(self.rid1, self.rid2, self.rid3, self.rid4); if self._node: cmd = record(nodeindex=self._node,request=self._request,get_state=True); elif self._name: cmd = record(name=self._name,request=self._request,get_state=True); mqs().meq('Node.Execute',cmd,wait=False); self._refresh();
def execute_tdl_job(self, _tdlmod, ns, func, name, job_id): """executes a predefined TDL job given by func""" self._tdlexec_menu.hide() try: # log job TDLOptions.dump_log( "running TDL job '%s' (%s)" % (name, ("job id '%s'" % job_id if job_id else "no job id"))) busy = BusyIndicator() func(meqds.mqs(), self) # no errors, so clear error list, if any self.clear_errors() self.show_message("TDL job '" + name + "' executed.", transient=True) busy = None except: (etype, exc, tb) = sys.exc_info() _dprint(0, 'exception running TDL job', func.__name__) traceback.print_exception(etype, exc, tb) # use TDL add_error() to process the error, since this automatically # adds location information. However, we want to remove ourselves # from the stack traceback first tb = traceback.extract_tb(tb) # pop everything leading up to our filename while tb[0][0] != _MODULE_FILENAME: tb.pop(0) # pop frame with our filename, this should leave only TDL-code frames tb.pop(0) ns.AddError(exc, tb, error_limit=None) msg = "TDL job '" + name + "' failed" self._error_window.set_errors(ns.GetErrors(), message=msg) self.emit(PYSIGNAL("showEditor()"), self) busy = None
def execute_tdl_job (self,_tdlmod,ns,func,name,job_id): """executes a predefined TDL job given by func"""; self._tdlexec_menu.hide(); try: # log job TDLOptions.dump_log("running TDL job '%s' (%s)"%(name,("job id '%s'"%job_id if job_id else "no job id"))); busy = BusyIndicator(); func(meqds.mqs(),self); # no errors, so clear error list, if any self.clear_errors(); self.show_message("TDL job '"+name+"' executed.",transient=True); busy = None; except: (etype,exc,tb) = sys.exc_info(); _dprint(0,'exception running TDL job',func.__name__); traceback.print_exception(etype,exc,tb); # use TDL add_error() to process the error, since this automatically # adds location information. However, we want to remove ourselves # from the stack traceback first tb = traceback.extract_tb(tb); # pop everything leading up to our filename while tb[0][0] != _MODULE_FILENAME: tb.pop(0); # pop frame with our filename, this should leave only TDL-code frames tb.pop(0); ns.AddError(exc,tb,error_limit=None); msg = "TDL job '"+name+"' failed"; self._error_window.set_errors(ns.GetErrors(),message=msg); self.emit(PYSIGNAL("showEditor()"),self); busy = None;
def _reexecute(self): if not self._request: return _dprint(1, 'accepted: ', self._request) self.rid1 = self.rid1 + 1 self._request.request_id = hiid(self.rid1, self.rid2, self.rid3, self.rid4) if self._node: cmd = record(nodeindex=self._node, request=self._request, get_state=True) elif self._name: cmd = record(name=self._name, request=self._request, get_state=True) mqs().meq('Node.Execute', cmd, wait=False) self._refresh()
def doNewRequest(self): newd = meq.domain(self.f0, self.f1, self.t0, self.t1) newc = meq.cells(domain=newd, num_freq=self.fn, num_time=self.tn) self._request = meq.request(cells=newc) self.rid1 = self.rid1 + 1 self.rid2 = self.rid2 + 1 self.rid3 = self.rid3 + 1 self.rid4 = self.rid4 + 1 self._request.request_id = hiid(self.rid1, self.rid2, self.rid3, self.rid4) if self._node: cmd = record(nodeindex=self._node, request=self._request, get_state=True) elif self._name: cmd = record(name=self._name, request=self._request, get_state=True) mqs().meq('Node.Execute', cmd, wait=False) self._refresh()
def compile_content (self): # import content first, and return if failed if not self.import_content(force=True): return None; _dprint(1,self._filename,"compiling forest"); # clear predefined functions self._tb_tdlexec.hide(); # try the compilation busy = BusyIndicator(); try: (_tdlmod,ns,msg) = \ TDL.Compile.run_forest_definition( meqds.mqs(),self._filename,self._tdlmod,self._tdltext, parent=self,wait=False); # catch compilation errors except TDL.CumulativeError,value: _dprint(0,"caught cumulative error, length",len(value.args)); self._error_window.set_errors(value.args,message="TDL import failed"); busy = None; return None;
def compile_content(self): # import content first, and return if failed if not self.import_content(force=True): return None _dprint(1, self._filename, "compiling forest") # clear predefined functions self._tb_tdlexec.hide() # try the compilation busy = BusyIndicator() try: (_tdlmod,ns,msg) = \ TDL.Compile.run_forest_definition( meqds.mqs(),self._filename,self._tdlmod,self._tdltext, parent=self,wait=False) # catch compilation errors except TDL.CumulativeError, value: _dprint(0, "caught cumulative error, length", len(value.args)) self._error_window.set_errors(value.args, message="TDL import failed") busy = None return None
def stop_solver (self): if not self._solver: return; self.disable_stop_button("stopping..."); meqds.mqs().setnodestate(self._solver,dmi.record(interrupt_solution=True),sync=False);
def compile_content(self): # import content first, and return if failed if not self.import_content(force=True): return None _dprint(1, self._filename, "compiling forest") # clear predefined functions self._tb_tdlexec.hide() # try the compilation busy = BusyIndicator() try: (_tdlmod,ns,msg) = \ TDL.Compile.run_forest_definition( meqds.mqs(),self._filename,self._tdlmod,self._tdltext, parent=self,wait=False) # catch compilation errors except TDL.CumulativeError as value: _dprint(0, "caught cumulative error, length", len(value.args)) self._error_window.set_errors(value.args, message="TDL import failed") busy = None return None except Exception as value: _dprint(0, "caught other error, traceback follows") traceback.print_exc() self._error_window.set_errors([value]) busy = None return None # refresh the nodelist meqds.request_nodelist(sync=True) # restore publishing nodes for name in (self._pub_nodes or []): if name in ns.AllNodes(): _dprint(2, "reenabling publishing of", name) meqds.enable_node_publish_by_name(name, sync=True, get_state=True) else: _dprint(2, "not reenabling publishing of", name, ", as it no longer exists?") # clear publisher list so it's re-saved next time in import_content() self._pub_nodes = None ### NB: presume this all was successful for now # insert node scope into TDL module setattr(_tdlmod, '_tdl_nodescope', ns) # does the script define an explicit job list? joblist = getattr(_tdlmod, '_tdl_job_list', []) if not joblist: joblist = [] # try to build it from implicit function names for (name, func) in _tdlmod.__dict__.items(): if name.startswith("_tdl_job_") and callable( func) and not TDLOptions.is_jobfunc_defined(func): joblist.append(func) # does the script define a testing function? testfunc = getattr(_tdlmod, '_test_forest', None) if not callable(testfunc): testfunc = getattr(_tdlmod, 'test_forest', None) if callable(testfunc): res = QMessageBox.warning( self, "Deprecated method", """Your script contains a test_forest() method. This is deprecated and will be disabled in the future. Please rename it to _test_forest(). """, QMessageBox.Ok) if callable(testfunc): joblist.append(testfunc) from past.builtins import cmp from functools import cmp_to_key joblist.sort(key=cmp_to_key(lambda a, b: cmp(str(a), str(b)))) # create list of job actions opts = TDLOptions.get_runtime_options() self._tdlexec_menu.clear() if joblist or opts: if opts: self._job_executor = curry(self.execute_tdl_job, _tdlmod, ns) ## new style: try: TDLOptions.populate_option_treewidget( self._tdlexec_menu.treeWidget(), opts, executor=self._job_executor) except Exception as value: _dprint(0, "error setting up TDL options GUI") traceback.print_exc() self._error_window.set_errors( [value], message="Error setting up TDL options GUI") busy = None return None if joblist: for func in joblist: name = re.sub("^_tdl_job_", "", func.__name__) name = name.replace('_', ' ') self._tdlexec_menu.addAction(name, curry(self.execute_tdl_job, _tdlmod, ns, func, name, func.__name__), icon=pixmaps.gear) self.emit(PYSIGNAL("hasRuntimeOptions()"), self, True) self._tdlexec_menu.adjustSizes() self._tb_tdlexec.show() else: self.emit(PYSIGNAL("hasRuntimeOptions()"), self, False) self._tb_tdlexec.hide() if joblist: msg += " %d predefined function(s) available, please use the Exec menu to run them." % ( len(joblist), ) self.show_message(msg, transient=True) busy = None return True
def reset_stats(self): self._qa_collect.setEnabled(True) self._appgui.log_message("resetting profiling stats") meqds.mqs().meq('Reset.Profiling.Stats', record(), wait=False)
def reset_stats (self): self._qa_collect.setEnabled(True); self._appgui.log_message("resetting profiling stats"); meqds.mqs().meq('Reset.Profiling.Stats',record(),wait=False);