8000 Add serializer for list types (#396) · BioComputing/twilio-python@6df979e · GitHub
[go: up one dir, main page]

Skip to content

Commit 6df979e

Browse files
authored
Add serializer for list types (twilio#396)
* Add serializer for list types * Add tests * Change parameter order
1 parent 1062be8 commit 6df979e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

tests/unit/base/test_serialize.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,18 @@ def test_does_not_change_other_types(self):
122122
actual = serialize.object('{"attribute":"value"}')
123123
self.assertEqual('{"attribute":"value"}', actual)
124124

125+
126+
class MapTestCase(unittest.TestCase):
127+
def test_maps_func_to_list(self):
128+
actual = serialize.map([1, 2, 3], lambda e: e * 2)
129+
self.assertEqual([2, 4, 6], actual)
130+
131+
def test_does_not_change_other_types(self):
132+
actual = serialize.map("abc", lambda e: e * 2)
133+
self.assertEqual("abc", actual)
134+
135+
actual = serialize.map(123, lambda e: e * 2)
136+
self.assertEqual(123, actual)
137+
138+
actual = serialize.map({'some': 'val'}, lambda e: e * 2)
139+
self.assertEqual({'some': 'val'}, actual)

twilio/base/serialize.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,13 @@ def object(obj):
6363
if isinstance(obj, dict) or isinstance(obj, list):
6464
return json.dumps(obj)
6565
return obj
66+
67+
68+
def map(lst, serialize_func):
69+
"""
70+
Applies serialize_func to every element in lst
71+
"""
72+
if not isinstance(lst, list):
73+
return lst
74+
return [serialize_func(e) for e in lst]
75+

0 commit comments

Comments
 (0)
0