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
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
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)
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
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
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
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)
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)
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') ))
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')))