Example #1
0
    def __init__(self, driver=None, request=None, trg=None, *args, **kwargs):
        """Create an eval controller
        @param driver {Driver} The OOP driver instance to communicate via
        @param request {Request} The request causing the evaluation
        """
        log.debug("__init__")
        EvalController.__init__(self, *args, **kwargs)

        self.driver = driver
        self.request = request
        self.trg = trg
        self.silent = request.get("silent", False)
        self.keep_existing = request.get("keep_existing", self.keep_existing)

        # Set up a *new* logger to record any errors
        # Note that the output will be discarded if there is no error
        self.log_stream = cStringIO.StringIO()
        self.log_hndlr = logging.StreamHandler(self.log_stream)
        loggerClass = logging.Logger.manager.loggerClass
        if not loggerClass:
            loggerClass = logging.getLoggerClass()
        self.log = loggerClass("codeintel.evaluator")
        self.log.setLevel(logging.WARN)  # Only log warnings and worse
        self.log.manager = logging.Logger.manager
        self.log.propagate = False
        self.log.addHandler(self.log_hndlr)
        self.best_msg = (0, "")
        self.has_sent_response = False
Example #2
0
    def __init__(self, driver=None, request=None, trg=None, *args, **kwargs):
        """Create an eval controller
        @param driver {Driver} The OOP driver instance to communicate via
        @param request {Request} The request causing the evaluation
        """
        log.debug("__init__")
        EvalController.__init__(self, *args, **kwargs)

        self.driver = driver
        self.request = request
        self.trg = trg
        self.silent = request.get("silent", False)
        self.keep_existing = request.get("keep_existing", self.keep_existing)

        # Set up a *new* logger to record any errors
        # Note that the output will be discarded if there is no error
        self.log_stream = cStringIO.StringIO()
        self.log_hndlr = logging.StreamHandler(self.log_stream)
        loggerClass = logging.Logger.manager.loggerClass
        if not loggerClass:
            loggerClass = logging.getLoggerClass()
        self.log = loggerClass("codeintel.evaluator")
        self.log.setLevel(logging.WARN) # Only log warnings and worse
        self.log.manager = logging.Logger.manager
        self.log.propagate = False
        self.log.addHandler(self.log_hndlr)
        self.best_msg = (0, "")
        self.has_sent_response = False
Example #3
0
    def set_desc(self, desc):
        log.debug("set_desc: %s", desc)
        EvalController.set_desc(self, desc)

        if not self.silent:
            # Reset the formatter to be minimal
            fmt = logging.Formatter(fmt="    %(levelname)s: %(message)s")
            self.log_hndlr.setFormatter(fmt)
Example #4
0
    def set_desc(self, desc):
        log.debug("set_desc: %s", desc)
        EvalController.set_desc(self, desc)

        if not self.silent:
            # Reset the formatter to be minimal
            fmt = logging.Formatter(fmt="    %(levelname)s: %(message)s")
            self.log_hndlr.setFormatter(fmt)
Example #5
0
 def abort(self):
     log.debug("abort: %r", self.request)
     if self.is_aborted:
         # Controllers don't abort immediately; this is in the process of
         # aborting but hasn't finished yet
         log.debug("Suppressing repeat abort message: %r", self.request)
         return
     EvalController.abort(self)
     self.driver.fail(request=self.request, message="aborted")
Example #6
0
 def abort(self):
     log.debug("abort: %r", self.request)
     if self.is_aborted:
         # Controllers don't abort immediately; this is in the process of
         # aborting but hasn't finished yet
         log.debug("Suppressing repeat abort message: %r", self.request)
         return
     EvalController.abort(self)
     self.driver.fail(request=self.request, message="aborted")
Example #7
0
    def set_desc(self, desc):
        log.debug("set_desc: %s", desc)
        EvalController.set_desc(self, desc)

        if not self.silent:
            self.log.error("error evaluating %s:\n  trigger: %s\n  log:",
                           desc, self.trg)
            # Reset the formatter to be minimal
            fmt = logging.Formatter(fmt="    %(levelname)s: %(message)s")
            self.log_hndlr.setFormatter(fmt)
Example #8
0
    def set_desc(self, desc):
        log.debug("set_desc: %s", desc)
        EvalController.set_desc(self, desc)

        if not self.silent:
            self.log.error("error evaluating %s:\n  trigger: %s\n  log:",
                           desc, self.trg)
            # Reset the formatter to be minimal
            fmt = logging.Formatter(fmt="    %(levelname)s: %(message)s")
            self.log_hndlr.setFormatter(fmt)
Example #9
0
    def done(self, reason):
        if log.isEnabledFor(logging.DEBUG):
            log.debug("done: %s %s\n%s", reason,
                      "(aborted)" if self.is_aborted() else "",
                      self.log_stream.getvalue())

        self.has_sent_response = True

        retrigger = self.trg.retriggerOnCompletion if self.trg else False

        if self.cplns:
            # Report completions
            self.driver.send(cplns=self.cplns,
                             request=self.request,
                             retrigger=retrigger)
        elif self.calltips:
            self.driver.send(calltip=self.calltips[0],
                             request=self.request,
                             retrigger=retrigger)
        elif self.defns:
            # We can't exactly serialize blobs directly...
            def defn_serializer(defn):
                return defn.__dict__

            self.driver.send(defns=list(map(defn_serializer, self.defns
                                            or [])),
                             request=self.request,
                             retrigger=retrigger)
        elif self.is_aborted():
            pass  # already reported the abort
        elif self.best_msg[0]:
            try:
                msg = "No %s found" % (self.desc, )
                if self.have_errors:
                    msg = self.best_msg[1] + " (error determining %s)" % (
                        self.desc, )
                    self.driver.report_error(self.log_stream.getvalue())
                elif self.have_warnings:
                    msg += "(warning: %s)" % (self.best_msg[1], )
            except TypeError as ex:
                # Guard against this common problem in log formatting above:
                #   TypeError: not enough arguments for format string
                log.exception("problem logging eval failure: self.log=%r",
                              self.log_entries)
                msg = "error evaluating '%s'" % self.desc
            self.driver.fail(request=self.request, message=msg)
        else:
            # ERROR
            self.driver.fail(request=self.request, message=reason)

        self.log = log  # If we have any more problems, put it in the main log
        self.log_stream.close()
        EvalController.done(self, reason)
Example #10
0
    def done(self, reason):
        log.debug("done: %s %s", reason,
                  "(aborted)" if self.is_aborted() else "")

        self.has_sent_response = True

        retrigger = self.trg.retriggerOnCompletion if self.trg else False

        if self.cplns:
            # Report completions
            self.driver.send(cplns=self.cplns, request=self.request,
                             retrigger=retrigger)
        elif self.calltips:
            self.driver.send(calltip=self.calltips[0], request=self.request,
                             retrigger=retrigger)
        elif self.defns:
            # We can't exactly serialize blobs directly...
            def defn_serializer(defn):
                return defn.__dict__
            self.driver.send(defns=map(defn_serializer, self.defns or []),
                             request=self.request, retrigger=retrigger)
        elif self.is_aborted():
            pass # already reported the abort
        elif self.best_msg[0]:
            try:
                msg = "No %s found" % (self.desc,)
                if self.have_errors:
                    msg = self.best_msg[1] + " (error determining %s)" % (self.desc,)
                    self.driver.report_error(self.log_stream.getvalue())
                elif self.have_warnings:
                    msg += "(warning: %s)" % (self.best_msg[1],)
            except TypeError as ex:
                # Guard against this common problem in log formatting above:
                #   TypeError: not enough arguments for format string
                log.exception("problem logging eval failure: self.log=%r", self.log_entries)
                msg = "error evaluating '%s'" % desc
            self.driver.fail(request=self.request, message=msg)
        else:
            # ERROR
            self.driver.fail(request=self.request, message=reason)

        self.log = log # If we have any more problems, put it in the main log
        self.log_stream.close()
        EvalController.done(self, reason)
Example #11
0
    def __init__(self, driver=None, request=None, *args, **kwargs):
        """Create an eval controller
        @param driver {Driver} The OOP driver instance to communicate via
        @param request {Request} The request causing the evaluation
        """
        log.debug("__init__")
        EvalController.__init__(self, *args, **kwargs)

        self.driver = driver
        self.request = request
        self.silent = request.get("silent", False)
        self.keep_existing = request.get("keep_existing", self.keep_existing)

        # Set up a logger to record any errors
        # Note that the output will be discarded if there it no error
        self.log_stream = cStringIO.StringIO()
        self.log_hndlr = logging.StreamHandler(self.log_stream)
        self.log = logging.getLogger("codeintel.evaluator")
        self.log.propagate = False
        self.log.addHandler(self.log_hndlr)
        self.best_msg = (0, "")
Example #12
0
    def __init__(self, driver=None, request=None, *args, **kwargs):
        """Create an eval controller
        @param driver {Driver} The OOP driver instance to communicate via
        @param request {Request} The request causing the evaluation
        """
        log.debug("__init__")
        EvalController.__init__(self, *args, **kwargs)

        self.driver = driver
        self.request = request
        self.silent = request.get("silent", False)
        self.keep_existing = request.get("keep_existing", self.keep_existing)

        # Set up a logger to record any errors
        # Note that the output will be discarded if there it no error
        self.log_stream = cStringIO.StringIO()
        self.log_hndlr = logging.StreamHandler(self.log_stream)
        self.log = logging.getLogger("codeintel.evaluator")
        self.log.propagate = False
        self.log.addHandler(self.log_hndlr)
        self.best_msg = (0, "")
Example #13
0
    def done(self, reason):
        log.debug("done: %s %s", reason,
                  "(aborted)" if self.is_aborted() else "")

        if self.cplns:
            # Report completions
            self.driver.send(cplns=self.cplns, request=self.request)
        elif self.calltips:
            self.driver.send(calltip=self.calltips[0], request=self.request)
        elif self.defns:
            # We can't exactly serialize blobs directly...
            def defn_serializer(defn):
                return defn.__dict__

            self.driver.send(defns=map(defn_serializer, self.defns or []),
                             request=self.request)
        elif self.is_aborted():
            pass  # already reported the abort
        elif self.silent:
            pass  # don't output any errors
        elif self.best_msg[0]:
            try:
                msg = "No %s found" % (self.desc, )
                if self.have_errors:
                    msg = self.best_msg[1] + " (error determining %s)" % (
                        self.desc, )
                    self.driver.report_error(self.log_stream.getvalue())
                elif self.have_warnings:
                    msg += "(warning: %s)" % (self.best_msg[1], )
            except TypeError as ex:
                # Guard against this common problem in log formatting above:
                #   TypeError: not enough arguments for format string
                log.exception("problem logging eval failure: self.log=%r",
                              self.log_entries)
                msg = "error evaluating '%s'" % desc
            self.driver.fail(request=self.request, message=msg)

        self.log_stream.close()
        EvalController.done(self, reason)
Example #14
0
 def close(self):
     log.debug("close")
     EvalController.close(self)
     if not self.has_sent_response:
         self.driver.fail(request=self.request, message="aborted")
         self.has_sent_response = True
Example #15
0
 def close(self):
     log.debug("close")
     EvalController.close(self)
Example #16
0
 def close(self):
     log.debug("close")
     EvalController.close(self)
     if not self.has_sent_response:
         self.driver.fail(request=self.request, message="aborted")
         self.has_sent_response = True
Example #17
0
 def close(self):
     log.debug("close")
     EvalController.close(self)