Example #1
0
 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')
Example #2
0
 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)
Example #3
0
 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')
Example #4
0
 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')
Example #5
0
    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())
Example #6
0
    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')
Example #7
0
    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()
Example #8
0
    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()
Example #9
0
    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()
Example #10
0
    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()
Example #11
0
    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)
Example #12
0
    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()
Example #13
0
    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')
Example #14
0
    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')
Example #15
0
    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}'))
Example #17
0
    def setUp(self):

        self.w = gibbon.Workflow('test_enumerator')
        self.w.add_source('src')
        self.w.add_target('tgt')
Example #18
0
 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')
Example #19
0
 def setUp(self):
     self.w = gibbon.Workflow('test_union')
     self.w.add_source('src1')
     self.w.add_source('src2')
     self.w.add_target('tgt')
Example #20
0
    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()