Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
 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();
Esempio n. 4
0
 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();
Esempio n. 5
0
 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;
Esempio n. 7
0
    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()
Esempio n. 8
0
 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;
Esempio n. 10
0
 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
Esempio n. 11
0
 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);
       
Esempio n. 12
0
    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
Esempio n. 13
0
 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)
Esempio n. 14
0
 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 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);