Beispiel #1
0
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions'])

        for item in self.previous:
            extras = is_mapping(item) and item or {}
            for name, expression in expressions:
                if bool(expression(item, **extras)):
                    yield item
                    break
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions']
        )

        for item in self.previous:
            for name, expression in expressions:
                if bool(expression(item)):
                    yield item
                    break
Beispiel #3
0
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions'])
        assert expressions, 'No expressions defined'

        try:
            for item in self.previous:
                yield item
        finally:
            for name, expression in expressions:
                expression(None)
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'condition', 'expressions']
        )
        assert expressions, 'No expressions defined'

        for item in self.previous:
            if self.condition(item) and is_mapping(item):
                for name, expression in expressions:
                    item[name] = expression(item)
            yield item
Beispiel #5
0
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'condition', 'expressions'])
        assert expressions, 'No expressions defined'

        for item in self.previous:
            extras = is_mapping(item) and item or {}
            if self.condition(item, **extras):
                for name, expression in expressions:
                    expression(item, **extras)
            yield item
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions']
        )
        assert expressions, 'No expressions defined'

        try:
            for item in self.previous:
                yield item
        finally:
            for name, expression in expressions:
                expression(None)
Beispiel #7
0
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions'])

        for item in self.previous:
            extras = is_mapping(item) and item or {}
            try:
                for name, expression in expressions:
                    assert bool(expression(item, **extras)), 'Condition failed'
                yield item
            except AssertionError:
                pass
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions']
        )

        for item in self.previous:
            try:
                for name, expression in expressions:
                    assert bool(expression(item)), 'Condition failed'
                yield item
            except AssertionError:
                pass
Beispiel #9
0
    def __iter__(self):
        # Get options
        key = self.options.get('key')
        delete = Matcher(*get_words(self.options.get('delete')))

        # Define logger
        name = self.options.get(
            'name', self.transmogrifier.configuration_id + '.' + self.name)
        logger = logging.getLogger(name)

        # Set log level
        level = self.options.get('level', logging.getLevelName(logger.level))
        if level != 'NOTSET':
            level = getattr(logging, level, None) or int(level)
        else:
            level = int(logging.INFO)
        logger.setLevel(level)

        for item in self.previous:
            if logger.isEnabledFor(level) and self.condition(item):
                if key is None:
                    copy = {}
                    for key_ in item.keys():
                        if not delete(key_)[1]:
                            copy[key_] = item[key_]
                    msg = pformat_msg(copy)
                elif key in item:
                    msg = item[key]
                else:
                    msg = '-- Missing key --'
                logger.log(level, msg)
            yield item
Beispiel #10
0
 def __iter__(self):
     keys = get_words(self.options.get('keys'))
     for item in self.previous:
         if self.condition(item):
             for key in keys:
                 if key in item:
                     del item[key]
         yield item
Beispiel #11
0
 def __iter__(self):
     keys = get_words(self.options.get('keys'))
     for item in self.previous:
         if self.condition(item):
             for key in keys:
                 if key in item:
                     del item[key]
         yield item
Beispiel #12
0
    def __iter__(self):
        for item in self.previous:
            yield item

        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'condition', 'expressions'])
        assert expressions, 'No expressions defined'

        for name, expression in expressions:
            for item in (expression(None) or []):
                try:
                    if is_mapping(unwrap(item)):
                        if self.condition(item):
                            yield item
                except BrokenImplementation:
                    if self.condition({name: item}):
                        yield {name: item}
            break
Beispiel #13
0
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions', 'condition', 'interval'])
        assert expressions, 'No expressions defined'

        counter = interval = int(self.options.get('interval', '1'))

        for item in self.previous:
            if self.condition(item):
                counter -= 1
                if counter == 0:
                    for name, expression in expressions:
                        expression(None)
                    counter = interval
            yield item

        if counter != interval:
            for name, expression in expressions:
                expression(None)
    def __iter__(self):
        for item in self.previous:
            yield item

        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'condition', 'expressions']
        )
        assert expressions, 'No expressions defined'

        for name, expression in expressions:
            for item in (expression(None) or []):
                try:
                    if is_mapping(unwrap(item)):
                        if self.condition(item):
                            yield item
                except BrokenImplementation:
                    if self.condition({name: item}):
                        yield {name: item}
            break
    def __iter__(self):
        import_modules(get_words(self.options.get('modules')))
        expressions = get_expressions(
            self, get_words(self.options.get('expressions')),
            ['blueprint', 'modules', 'expressions', 'condition', 'interval']
        )
        assert expressions, 'No expressions defined'

        counter = interval = int(self.options.get('interval', '1'))

        for item in self.previous:
            if self.condition(item):
                counter -= 1
                if counter == 0:
                    for name, expression in expressions:
                        expression(None)
                    counter = interval
            yield item

        if counter != interval:
            for name, expression in expressions:
                expression(None)
Beispiel #16
0
    def __iter__(self):  # flake8: noqa
        path = self.options.get('filename', 'output.csv').strip()
        fieldnames = get_words(self.options.get('fieldnames'))

        if path != '-' and not os.path.isabs(path):
            path = os.path.join(os.getcwd(), path)

        if sys.version_info[0] < 3:
            fp = BytesIO()
        else:
            fp = StringIO()
        writer = DictWriter(fp, list(fieldnames))

        counter = 0
        for item in self.previous:
            if self.condition(item) and is_mapping(item):
                if not writer.fieldnames:
                    writer.fieldnames = [key for key in item.keys()
                                         if not key.startswith('_')]
                if counter == 0:
                    header = dict(zip(writer.fieldnames, writer.fieldnames))
                    writer.writerow(header)

                clone = dict(item)
                for fieldname in writer.fieldnames:
                    clone.setdefault(fieldname, None)
                writer.writerow(dict([
                    (key, value) for key, value in clone.items()
                    if key in writer.fieldnames
                ]))
                counter += 1

            yield item
        fp.seek(0)

        if path == '-':
            sys.stdout.write(fp.read())
        else:
            with open(path, 'w') as fp2:
                fp2.write(fp.read())

        logger.info('{0:s}:{1:s} wrote {2:d} items to {3:s}'.format(
            self.__class__.__name__, self.name, counter, path,
            self.options.get('filename', 'output.csv')
        ))
Beispiel #17
0
    def __iter__(self):  # flake8: noqa
        path = self.options.get('filename', 'output.csv').strip()
        fieldnames = get_words(self.options.get('fieldnames'))

        if path != '-' and not os.path.isabs(path):
            path = os.path.join(os.getcwd(), path)

        if sys.version_info[0] < 3:
            fp = BytesIO()
        else:
            fp = StringIO()
        writer = DictWriter(fp, list(fieldnames))

        counter = 0
        for item in self.previous:
            if self.condition(item) and is_mapping(item):
                if not writer.fieldnames:
                    writer.fieldnames = [
                        key for key in item.keys() if not key.startswith('_')
                    ]
                if counter == 0:
                    header = dict(zip(writer.fieldnames, writer.fieldnames))
                    writer.writerow(header)

                clone = dict(item)
                for fieldname in writer.fieldnames:
                    clone.setdefault(fieldname, None)
                writer.writerow(
                    dict([(key, value) for key, value in clone.items()
                          if key in writer.fieldnames]))
                counter += 1

            yield item
        fp.seek(0)

        if path == '-':
            sys.stdout.write(fp.read())
        else:
            with open(path, 'w') as fp2:
                fp2.write(fp.read())

        logger.info('{0:s}:{1:s} wrote {2:d} items to {3:s}'.format(
            self.__class__.__name__, self.name, counter, path,
            self.options.get('filename', 'output.csv')))