Skip to content

Commit 700c24a

Browse files
committed
SDK-765: Make multivalue a tuple, remove redundant parsing
1 parent 01bb3f6 commit 700c24a

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

yoti_python_sdk/multivalue.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ def parse(multi_value_bytes):
1010
parsed_multi_value = proto.multi_value(multi_value_bytes)
1111

1212
for multi_value_item in parsed_multi_value.values:
13-
value = attribute_parser.value_based_on_content_type(multi_value_item.data, multi_value_item.content_type)
14-
15-
if value.content_type == proto.CT_MULTI_VALUE:
16-
multi_value_list.append(parse(value))
17-
else:
18-
multi_value_list.append(value)
13+
multi_value_list.append(
14+
attribute_parser.value_based_on_content_type(
15+
multi_value_item.data,
16+
multi_value_item.content_type))
1917

2018
return multi_value_list
2119

2220

2321
def filter_values(values, type_to_filter):
24-
return list(filter(lambda v: isinstance(v, type_to_filter), values))
22+
return tuple(filter(lambda v: isinstance(v, type_to_filter), values))

yoti_python_sdk/tests/test_multivalue.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,14 @@ def test_multi_value_filter_string():
4141

4242
assert len(filtered_list) == 1
4343
assert filtered_list[0] is string_value
44+
45+
46+
def test_multi_value_filter_is_immutable():
47+
original_string_value = "string_value"
48+
multi_value = [0, original_string_value]
49+
50+
filtered_list = multivalue.filter_values(multi_value, str)
51+
52+
filtered_list[0] == "changed_string_value"
53+
54+
assert filtered_list[0] == original_string_value

0 commit comments

Comments
 (0)