Пример #1
0
    def send(self, **named):
        """
        Send signal from signal to all connected receivers catching errors.

        Arguments:

            named
                Named arguments which will be passed to receivers. These
                arguments must be a subset of the argument names defined in
                providing_args.

        Return a list of tuple pairs [(receiver, response), ... ]. May raise
        DispatcherKeyError.

        If any receiver raises an error (specifically any subclass of
        Exception), the error instance is returned as the result for that
        receiver.
        """
        responses = []
        if not self.receivers:
            return responses

        # Call each receiver with whatever arguments it can accept.
        # Return a list of tuple pairs [(receiver, response), ... ].
        for receiver in self._live_receivers():
            try:
                response = receiver(signal=self, **named)
            except Exception as err:
                _log.err()
                responses.append((receiver, err))
            else:
                responses.append((receiver, response))
        return responses
Пример #2
0
    def send(self, **named):
        """
        Send signal from signal to all connected receivers catching errors.

        Arguments:

            named
                Named arguments which will be passed to receivers. These
                arguments must be a subset of the argument names defined in
                providing_args.

        Return a list of tuple pairs [(receiver, response), ... ]. May raise
        DispatcherKeyError.

        If any receiver raises an error (specifically any subclass of
        Exception), the error instance is returned as the result for that
        receiver.
        """
        responses = []
        if not self.receivers:
            return responses

        # Call each receiver with whatever arguments it can accept.
        # Return a list of tuple pairs [(receiver, response), ... ].
        for receiver in self._live_receivers():
            try:
                response = receiver(signal=self, **named)
            except Exception as err:
                _log.err()
                responses.append((receiver, err))
            else:
                responses.append((receiver, response))
        return responses
Пример #3
0
    def segmentReceived(self):
        data = self.data_buffer
        self.data_buffer = ''

        # don't lead with a newline
        if data[0] == NL:
            data = data[1:]

        # Fix color-only leading line
        color_newline = self.color_newline.match(data)
        if color_newline:
            color = data[0:color_newline.end() - 1]
            data = color + data[color_newline.end():]

        data = data.split('\n')

        pre_prompt.send(raw_data=data)

        # lines received
        lines = data[:-1]

        # last line is always the prompt
        prompt_data = data[-1]

        # Send the prompt to the prompt receiver
        try:
            prompt_output = prompt.receiver(prompt_data)
        except Exception as err:
            _log.err()
            prompt_output = "%s - %s" % (ansi.bold_red('ERROR:'), ansi.red(str(err)))

        # send lines to inbound receiver
        lines = inbound.receiver(lines)

        post_prompt.send()

        signal.pre_outbound.send(
            raw_lines=sage.buffer,
            lines=lines,
            ansi_prompt=prompt_output,
            prompt=ansi.filter_ansi(prompt_output)
        )

        self.receivers.input(lines, prompt_output)
Пример #4
0
    def send(self, sender, param=None):
        responses = []
        if not self.receivers:
            return responses

        # Call each receiver with whatever arguments it can accept.
        # Return a list of tuple pairs [(receiver, response), ... ].
        for receiver in self._live_receivers():
            try:
                if param:
                    response = receiver(sender, param)
                else:
                    response = receiver(sender)
            except Exception as err:
                _log.err()
                responses.append((receiver, err))
            else:
                responses.append((receiver, response))
        return responses
Пример #5
0
    def segmentReceived(self):
        data = self.data_buffer
        self.data_buffer = ''

        # don't lead with a newline
        if data[0] == NL:
            data = data[1:]

        # Fix color-only leading line
        color_newline = self.color_newline.match(data)
        if color_newline:
            color = data[0:color_newline.end() - 1]
            data = color + data[color_newline.end():]

        data = data.split('\n')

        pre_prompt.send(raw_data=data)

        # lines received
        lines = data[:-1]

        # last line is always the prompt
        prompt_data = data[-1]

        # Send the prompt to the prompt receiver
        try:
            prompt_output = prompt.receiver(prompt_data)
        except Exception as err:
            _log.err()
            prompt_output = "%s - %s" % (ansi.bold_red('ERROR:'),
                                         ansi.red(str(err)))

        # send lines to inbound receiver
        lines = inbound.receiver(lines)

        post_prompt.send()

        signal.pre_outbound.send(raw_lines=sage.buffer,
                                 lines=lines,
                                 ansi_prompt=prompt_output,
                                 prompt=ansi.filter_ansi(prompt_output))

        self.receivers.input(lines, prompt_output)
Пример #6
0
    def send(self, sender, param=None):
        responses = []
        if not self.receivers:
            return responses

        # Call each receiver with whatever arguments it can accept.
        # Return a list of tuple pairs [(receiver, response), ... ].
        for receiver in self._live_receivers():
            try:
                if param:
                    response = receiver(sender, param)
                else:
                    response = receiver(sender)
            except Exception as err:
                _log.err()
                responses.append((receiver, err))
            else:
                responses.append((receiver, response))
        return responses