示例#1
0
    def _mailSomeFailed(self, result):
        """
            If one of more recipients were not send an SMTP message update mailMessage object.

            result: (NumOk, [(emailAddress, serverStatusCode, serverResponseString)])
            Collect all results that do not have a 250 and form a string for .4B
        """

        if __debug__:
            trace("_mailSomeFailed")

        # The isOnline check is performed in the Twisted thread
        # so pass in a view.
        if self.shuttingDown or not Globals.mailService.isOnline(self.view) or \
           self.cancel:
            return self._resetClient()

        try:
            #On error cancel any changes done in the view
            self.view.cancel()
        except:
            pass

        errors = []

        for recipient in result[1]:
            email, code, st = recipient

            if recipient[1] != SMTP_SUCCESS:
                errors.append(u"%s: %s" % (email, st))

        if errors:
            # Add the error strings to the items error attribute
            self.mailMessage.itsItem.error = u", ".join(errors)
示例#2
0
    def check(self) -> List[str]:
        """
        Check that the transition table is valid:
            - all existent states have a valid transition for any character (i.e. have a default transition)
            - all existent states are reachable from state 0 throguh at least one transition sequence
        :return: a list of error messages
        """
        errors = []
        all_states = set()
        for state, trans in self.transitions.items():
            all_states.add(state)
            all_states.update(s for s in trans.values()
                              if not isinstance(s, Error))

        for state in all_states:
            trans = self.transitions[state]
            if state not in self.finalizers and state != 0 and None not in trans:
                errors.append(
                    "State %d is not final and does not have a default transition. Add an error?"
                    % state)

        reachable = set()
        dead_end = set()
        self._check_reachable_states(0, reachable, dead_end)
        errors.extend("Unreachable state %d" % s
                      for s in all_states - reachable)
        errors.extend("State %d is a dead end" % s for s in dead_end)
        self.checked = True
        return errors
示例#3
0
    def _mailSomeFailed(self, result):
        """
            If one of more recipients were not send an SMTP message update mailMessage object.

            result: (NumOk, [(emailAddress, serverStatusCode, serverResponseString)])
            Collect all results that do not have a 250 and form a string for .4B
        """

        if __debug__:
            trace("_mailSomeFailed")

        # The isOnline check is performed in the Twisted thread
        # so pass in a view.
        if self.shuttingDown or not Globals.mailService.isOnline(self.view) or \
           self.cancel:
            return self._resetClient()

        try:
            #On error cancel any changes done in the view
            self.view.cancel()
        except:
            pass

        errors = []

        for recipient in result[1]:
            email, code, st = recipient

            if recipient[1] != SMTP_SUCCESS:
                errors.append( u"%s: %s" % (email, st))

        if errors:
            # Add the error strings to the items error attribute
            self.mailMessage.itsItem.error = u", ".join(errors)
示例#4
0
def _RetrieveAllMetadata(reader):
    # Get metadata both from the master file and YouTube.
    metadata = {}
    speakers_count = 0
    for r in reader:
        speakers = _StrToUnicode(r[config.FIELD_SPEAKERS])
        if speakers:
            speakers_count += 1
        metadata[r[config.FIELD_VIDEO_ID]] = {
            config.FIELD_TITLE: _SafeString(r[config.FIELD_TITLE]),
            config.FIELD_DESC: _SafeString(r[config.FIELD_DESC]),
            config.FIELD_SPEAKERS: speakers
        }

    yt_service = youtube_service.YTSnippetService()
    yt_results = yt_service.ListVideos(
        sorted(k for k, v in metadata.iteritems()
               if v[config.FIELD_EVENT] in categories.YOUTUBE_CATS))

    # Compare, only show differences
    yt_count = 0
    same_title_count = 0
    same_desc_count = 0
    errors = []
    for video_id, yt_dict in yt_results.iteritems():
        yt_count += 1
        if video_id not in metadata:
            errors.append('%s not in metadata!.' % video_id)
            continue

        yt_title = _SafeString(yt_dict[config.FIELD_TITLE])
        if metadata[video_id][config.FIELD_TITLE] == yt_title:
            same_title_count += 1
            del metadata[video_id][config.FIELD_TITLE]
        else:
            yt_key = '%s_%s' % (config.FIELD_TITLE, config.FIELD_YOUTUBE)
            metadata[video_id][yt_key] = (
                yt_title,
                _ShowDiff(yt_title, metadata[video_id][config.FIELD_TITLE]))

        yt_desc = _SafeString(yt_dict[config.FIELD_DESC])
        if metadata[video_id][config.FIELD_DESC] == yt_desc:
            same_desc_count += 1
            del metadata[video_id][config.FIELD_DESC]
            if config.FIELD_TITLE not in metadata[video_id]:
                if ((config.FIELD_SPEAKERS in metadata[video_id])
                        and (not metadata[video_id][config.FIELD_SPEAKERS])):
                    del metadata[video_id][config.FIELD_SPEAKERS]
                if config.FIELD_SPEAKERS not in metadata[video_id]:
                    del metadata[video_id]
        else:
            yt_key = '%s_%s' % (config.FIELD_DESC, config.FIELD_YOUTUBE)
            metadata[video_id][yt_key] = (
                yt_desc,
                _ShowDiff(yt_desc, metadata[video_id][config.FIELD_DESC]))

    stats = [yt_count, same_title_count, same_desc_count, speakers_count]
    return metadata, errors, stats
示例#5
0
def checkTagDefinitions():
    if len(__tagsWaitingForRules) > 0:
        errors = []
        for r in __tagsWaitingForRules:
            errors.append("  target '%s':" % r)
            for t in __tagsWaitingForRules[r]:
                errors.append('    at %s' % t.location())
        errors = '\n'.join(errors)
        raise ReaderError(None,
                          "tag definitions for nonexistent rules:\n%s" % errors)
示例#6
0
def checkTagDefinitions():
    if len(__tagsWaitingForRules) > 0:
        errors = []
        for r in __tagsWaitingForRules:
            errors.append("  target '%s':" % r)
            for t in __tagsWaitingForRules[r]:
                errors.append('    at %s' % t.location())
        errors = '\n'.join(errors)
        raise ReaderError(
            None, "tag definitions for nonexistent rules:\n%s" % errors)
示例#7
0
def main():
    """
    Create a simple network with one hidden layer and train it to
    compute the xor between its arguments.
    """

    training_examples = [
        ([0, 0], [0]),
        ([0, 1], [1]),
        ([1, 0], [1]), 
        ([1, 1], [0])]

    nnet = NeuralNetwork([2, 2, 1])

    history, i, avg_error = list(), 1, 1
    axis_error, axis_lrate = setup_plot()
    errors, lrates = list(), list()

    while avg_error > 0.0025 and i < 25000:
        i += 1
        learning_rate = 10000.0 / (5000.0 + i)

        input, correct_output = training_examples[randint(0, len(training_examples) - 1)]
        actual_output = nnet.value(input)
        history.append(nnet.backpropagate(correct_output, actual_output, learning_rate))

        if i % 1000 == 0: print 'iteration ', i, 'error', avg_error
        if i % 100 == 0:
            avg_error = sum(history) / float(len(history))
            history = []

            errors.append(avg_error)
            lrates.append(learning_rate)


    axis_lrate.plot(range(0, i, 100), lrates, '-g', label='Learning rate')
    axis_error.plot(range(0, i, 100), errors, '-b', label='Training error')

    h0, l0 = axis_error.get_legend_handles_labels()
    h1, l1 = axis_lrate.get_legend_handles_labels()
    plt.legend([h0[0], h1[0]], [l0[0], l1[0]])

    plt.show()