def test_no_name(self): with self.assertRaises(gibbon.InvalidNameError) as ctx: wk = gibbon.Workflow() wk.raise_last() exc = ctx.exception self.assertEqual(str(exc), 'Object name is mandatory but appears to be missing')
def test_invalid_name(self): with self.assertRaises(gibbon.InvalidNameError) as ctx: wk = gibbon.Workflow(self.invalid_name) wk.raise_last() exc = ctx.exception self.assertRegex(str(exc), r'^Object name is invalid:') self.assertEqual(wk.name, self.invalid_name)
def setUp(self): self.w = gibbon.Workflow('concat') self.w.add_source('src1') self.w.add_source('src2') self.w.add_complex_transformation('concat', gibbon.Concat, sources=('src1', 'src2')) self.w.add_target('tgt', source='concat')
def setUp(self): self.w = gibbon.Workflow('split') self.w.add_source('src') self.w.add_transformation('splitter', gibbon.Split, row_split, source='src') self.w.add_target('tgt1', source='splitter') self.w.add_target('tgt2', source='splitter')
def setUp(self): self.w = gibbon.Workflow('csv_write') self.w.add_source('src') self.w.add_target('csv', source='src') p = get_tgt_path() self._filename = p.absolute() if p.exists(): os.remove(p.absolute())
def setUp(self): self.name = u'unamed' self.invalid_name = u'0uuuu' self.wk = gibbon.Workflow(self.name) self.expected_attrs = ('add_source', 'add_target', 'add_transformation', 'add_complex_transformation', 'prepare', 'schedule', 'run')
def setUp(self): self.data = [(0, ), (1, ), (-1, )] self.results = [] self.wk_all_rows = gibbon.Workflow('all_rows') self.wk_all_rows.add_source('src') self.wk_all_rows.add_transformation('filter', gibbon.Filter, source='src') self.wk_all_rows.add_target('tgt', source='filter') self.wk_only_pos = gibbon.Workflow('only_positive') self.wk_only_pos.add_source('src') self.wk_only_pos.add_transformation('filter', gibbon.Filter, source='src', condition=self.only_positive) self.wk_only_pos.add_target('tgt', source='filter') self.cfg = gibbon.Configuration()
def setUp(self): self.w = gibbon.Workflow('csv_read') self.w.add_source('csv') self.w.add_target('list', source='csv') p = get_src_path() self.assertFalse(not p.exists(), f"Expected file {p.absolute()} doesn't exist") self._filename = p.absolute()
def setUp(self): self.data = [(0, ), (1, ), (-1, )] self.results = [] self.wk_default_expr = gibbon.Workflow('default') self.wk_default_expr.add_source('src') self.wk_default_expr.add_transformation('expression', gibbon.Expression, source='src') self.wk_default_expr.add_target('tgt', source='expression') self.wk_compute_expr = gibbon.Workflow('compute') self.wk_compute_expr.add_source('src') self.wk_compute_expr.add_transformation('expression', gibbon.Expression, source='src', func=compute) self.wk_compute_expr.add_target('tgt', source='expression') self.cfg = gibbon.Configuration()
def setUp(self): self.data = ['22', '333', '4444'] self.wk = gibbon.Workflow('all_rows') self.wk.add_source('src') self.wk.add_transformation('filter', gibbon.Filter, source='src', condition=len_over_three) self.wk.add_target('tgt', source='filter') self.cfg = gibbon.Configuration()
def setUp(self): self.data = ['Henry', 'Jane', 'Willy'] self.w = gibbon.Workflow('test_enumerator') self.w.add_source('src') self.w.add_transformation('enum', gibbon.Enumerator, source='src', start_with=1, reset_after=1) self.w.add_target('tgt', source='enum') self.cfg = gibbon.Configuration() tuples = list(zip(self.data)) self.cfg.add_configuration('src', source=gibbon.SequenceWrapper, iterable=tuples) self.w.validate(verbose=True)
def setUp(self): self.data = [(0, ), (1, ), (-1, )] self.results = [] self.wk_sort_asc = gibbon.Workflow('sort_asc') self.wk_sort_asc.add_source('src') self.wk_sort_asc.add_transformation('sort_asc', gibbon.Sorter, source='src', key=lambda r: r[0]) self.wk_sort_asc.add_target('tgt', source='sort_asc') self.wk_sort_desc = gibbon.Workflow('sort_desc') self.wk_sort_desc.add_source('src') self.wk_sort_desc.add_transformation('sort_desc', gibbon.Sorter, source='src', key=lambda r: r[0], reverse=True) self.wk_sort_desc.add_target('tgt', source='sort_desc') self.cfg = gibbon.Configuration()
def setUp(self): self.w = gibbon.Workflow('test_prd') self.w.add_source('src') self.w.add_target('tgt') self.w.add_transformation('prd', gibbon.Aggregator, key=lambda r: ('product:', ), accumulator=lambda r, p: (p * r[0], ), initializer=(1, )) self.w.connect('src', 'prd') self.w.connect('prd', 'tgt')
def setUp(self): self.w = gibbon.Workflow('test_count') self.w.add_source('src') self.w.add_target('tgt') self.w.add_transformation('counter', gibbon.Aggregator, key=lambda r: ('count:', ), accumulator=lambda r, c: (c + 1, ), initializer=(0, )) self.w.connect('src', 'counter') self.w.connect('counter', 'tgt')
def setUp(self): self.w = gibbon.Workflow('test_sum') self.w.add_source('src') self.w.add_target('tgt') self.w.add_transformation('sum', gibbon.Aggregator, key=lambda r: ('sum:', ), accumulator=lambda r, s: (s + r[0], ), initializer=(0, )) self.w.connect('src', 'sum') self.w.connect('sum', 'tgt')
def setUp(self): self.wks = [] for inx in range(3): self.wks.append(gibbon.Workflow(f'test_{inx}'))
def setUp(self): self.w = gibbon.Workflow('test_enumerator') self.w.add_source('src') self.w.add_target('tgt')
def setUp(self): self.w = gibbon.Workflow('test_union') self.w.add_source('src1') self.w.add_source('src2') self.w.add_complex_transformation('union', gibbon.Union, sources=('src1', 'src2',)) self.w.add_target('tgt', source='union')
def setUp(self): self.w = gibbon.Workflow('test_union') self.w.add_source('src1') self.w.add_source('src2') self.w.add_target('tgt')
def setUp(self): self.data = [(0, ), (1, ), (-1, )] self.wk_sel_bin = gibbon.Workflow('binary_selector') self.wk_sel_bin.add_source('src') conditions = (is_positive_or_zero, is_negative) self.wk_sel_bin.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_bin.add_target('tgt1', source='sel') self.wk_sel_bin.add_target('tgt2', source='sel') self.wk_sel_mul = gibbon.Workflow('multiple_selector') self.wk_sel_mul.add_source('src') conditions = (is_positive, is_negative, is_zero) self.wk_sel_mul.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_mul.add_target('tgt1', source='sel') self.wk_sel_mul.add_target('tgt2', source='sel') self.wk_sel_mul.add_target('tgt3', source='sel') conditions = (is_positive_or_zero, is_zero) self.wk_sel_shc = gibbon.Workflow('short_circuit_selector') self.wk_sel_shc.add_source('src') self.wk_sel_shc.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_shc.add_target('tgt1', source='sel') self.wk_sel_shc.add_target('tgt2', source='sel') conditions = (is_positive, is_negative) self.wk_sel_def = gibbon.Workflow('default_selector') self.wk_sel_def.add_source('src') self.wk_sel_def.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_def.add_target('tgt1', source='sel') self.wk_sel_def.add_target('tgt2', source='sel') conditions = (is_positive, is_negative) self.wk_sel_osp1 = gibbon.Workflow('out_port_specified') self.wk_sel_osp1.add_source('src') self.wk_sel_osp1.add_transformation('sel', gibbon.Selector, out_ports=1, source='src', conditions=conditions) self.wk_sel_osp1.add_target('tgt1', source='sel') self.wk_sel_osp1.add_target('tgt2', source='sel') conditions = (is_positive, is_negative) self.wk_sel_osp2 = gibbon.Workflow('no_out_ports_specified') self.wk_sel_osp2.add_source('src') self.wk_sel_osp2.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_osp2.add_target('tgt1', source='sel') self.wk_sel_osp2.add_target('tgt2', source='sel') self.wk_sel_wd = gibbon.Workflow('with_default') self.wk_sel_wd.add_source('src') self.wk_sel_wd.add_transformation('sel', gibbon.Selector, source='src', conditions=conditions) self.wk_sel_wd.add_target('tgt1', source='sel') self.wk_sel_wd.add_target('tgt2', source='sel') self.cfg = gibbon.Configuration()