Example #1
0
 def test_nested_mapping_with_lists(self):
     mapping = {
         'a_field': S('a', 'b'),
         'a': [{
             'nested': {
                 'field': S('f1', 'f2'),
             },
         }],
     }
     source = {
         'a': {
             'b': 'ok'
         },
         'f1': {
             'f2': 'hi'
         },
     }
     expected = {
         'a_field': 'ok',
         'a': [{
             'nested': {
                 'field': 'hi'
             }
         }],
     }
     self.assertDictEqual(bend(mapping, source), expected)
Example #2
0
 def test__no_match_with_default(self):
     bender = Switch(S('service'), {
         'twitter': S('handle'),
         'mastodon': S('handle') + K('@') + S('server')
     },
                     default=S('email'))
     self.assert_bender(bender, {
         'service': 'facebook',
         'email': '*****@*****.**'
     }, '*****@*****.**')
Example #3
0
 def test_getitem(self):
     bender = S('val')[2:8:2]
     if sys.version_info.major == 2:
         val = range(10)
     else:
         val = list(range(10))
     self.assert_bender(bender, {'val': val}, [2, 4, 6])
Example #4
0
 def test_bend_inherits_outer_context_by_default(self):
     inner_mapping = {'val': Context()}
     outer_mapping = {'a': S('items') >> Forall.bend(inner_mapping)}
     source = {'items': range(3)}
     got = bend(outer_mapping, source, context=27)
     expected = {'a': [{'val': 27}, {'val': 27}, {'val': 27}]}
     self.assertEqual(got, expected)
Example #5
0
    def test_match(self):
        bender = Switch(S('service'), {
            'twitter': S('handle'),
            'mastodon': S('handle') + K('@') + S('server')
        },
                        default=S('email'))

        self.assert_bender(bender, {
            'service': 'twitter',
            'handle': 'etandel'
        }, 'etandel')
        self.assert_bender(
            bender, {
                'service': 'mastodon',
                'handle': 'etandel',
                'server': 'mastodon.social'
            }, '*****@*****.**')
Example #6
0
 def test_bend_with_context(self):
     mapping = {'b': Context() >> S('c')}
     context = {'c': 42}
     self.assert_bender(self.cls.bend(mapping, context), [{}, {}], [{
         'b': 42
     }, {
         'b': 42
     }])
Example #7
0
 def test_bend(self):
     self.assert_bender(self.cls.bend({'b': S('a')}), [{
         'a': 23
     }, {
         'a': 27
     }], [{
         'b': 23
     }, {
         'b': 27
     }])
Example #8
0
 def test_flat_mapping(self):
     mapping = {
         'a_field': S('a', 'b'),
         'another_field': K('wow'),
     }
     source = {'a': {'b': 'ok'}}
     expected = {
         'a_field': 'ok',
         'another_field': 'wow',
     }
     self.assertDictEqual(bend(mapping, source), expected)
 def testSample(self):
     file_executor = ReadFromFile('samples/crawler_data.json')
     ops = [
         OTConf('items.url',
                UrlDomainTransformer,
                update_element=True,
                update_key="domain"),
         OTConf('items.item_no',
                FloatTransform,
                update_element=True,
                update_key='item_no_float'),
         OTConf('items.description',
                RegexTransform,
                regex='(\w{5,100})',
                update_element=True,
                update_key='keywords')
     ]
     ot_manager = OTManager(ops).process(file_executor)
     MAPPING = [{
         '_$':
         S('items') >> ForallBend(
             {
                 'url': S('url'),
                 'title': S('title'),
                 'description': S('description'),
                 'item_no': S('item_no'),
                 'client_info': Context() >> S('client_info')
             })
     }]
     results = OutputBender(include=MAPPING).expand(ot_manager.results)
     file_executor = ReadFromFile(
         'samples/tests_results_expected/sample4.json')
     expected = file_executor.read()
     self.assertListEqual(results, expected)
Example #10
0
 def test_list_with_non_dict_elements(self):
     mapping = {'k': ['foo1', S('bar1')]}
     source = {'bar1': 'val 1'}
     expected = {'k': ['foo1', 'val 1']}
     self.assertDictEqual(bend(mapping, source), expected)
Example #11
0
 def test_if_false(self):
     if_ = If(S('country') == K('China'), S('first_name'), S('last_name'))
     self.assert_bender(if_, self.guga, 'Kuerten')
Example #12
0
 def test_context_shallow(self):
     mapping = {'a': Context() >> S('b')}
     res = bend(mapping, {}, context={'b': 23})
     self.assertDictEqual(res, {'a': 23})
Example #13
0
 def test_context_deep(self):
     mapping = {'a': [{'a': Context() >> S('b')}]}
     res = bend(mapping, {}, context={'b': 23})
     self.assertDictEqual(res, {'a': [{'a': 23}]})
Example #14
0
 def test_if_true_default(self):
     if_ = If(S('country') == K('China'), when_false=S('last_name'))
     self.assert_bender(if_, self.na_li, None)
Example #15
0
 def test_bending_exception_is_raised_when_something_bad_happens(self):
     mapping = {'a': S('nonexistant')}
     source = {}
     self.assertRaises(BendingException, bend, mapping, source)
Example #16
0
 def test_op_with_context(self):
     mapping = {'res': (Context() >> S('b')) - S('a')}
     in_ = {'a': 23}
     context = {'b': 27}
     res = bend(mapping, in_, context=context)
     self.assertEqual(res, {'res': 4})
Example #17
0
 def test_getitem(self):
     bender = S('val')[2:8:2]
     self.assert_bender(bender, {'val': range(10)}, [2, 4, 6])
Example #18
0
 def test_if_true(self):
     if_ = If(S('country') == K('China'), S('first_name'), S('last_name'))
     self.assert_bender(if_, self.na_li, 'Li')
Example #19
0
 def test_if_false_default(self):
     if_ = If(S('country') == K('China'), S('first_name'))
     self.assert_bender(if_, self.guga, None)
Example #20
0
 def test_matches(self):
     bender = Alternation(S(1), S(0), S('key1'))
     self.assert_bender(bender, ['a', 'b'], 'b')
     self.assert_bender(bender, ['a'], 'a')
     self.assert_bender(bender, {'key1': 23}, 23)
Example #21
0
 def test__no_match_without_default(self):
     self.assertRaises(KeyError, Switch(S('key'), {}), {'key': None})
Example #22
0
 def test_no_match(self):
     self.assertRaises(IndexError, Alternation(S(1)), [])
     self.assertRaises(KeyError, Alternation(S(1)), {})
 def test_with_context(self):
     bender = Format('value: {}',  Context() >> S('b'))
     self.assert_bender(bender, None, 'value: 23',
                        context={'b': 23})
Example #24
0
token = sys.argv[2]
board = sys.argv[3]
project = sys.argv[4]

buffer = StringIO()
c = pycurl.Curl()
c.setopt(c.VERBOSE, True)
c.setopt(
    c.URL, 'https://api.trello.com/1/boards/' + board + '/cards?key=' + key +
    '&token=' + token)
c.setopt(c.WRITEDATA, buffer)
c.perform()
c.close()

body = buffer.getvalue()
source = json.loads(body)
mapping = {
    'summary': (S('name')),
    'description': (S('desc')),
    'updated': (S('dateLastActivity')),
    'created': (S('id')) >> (F(dateFix)),
    'issueType': 'Task'
}

issues = []
for card in source:
    result = bend(mapping, card)
    issues.append(result)

print(json.dumps({"projects": [{"name": project, "issues": issues}]}))