Skip to content

Commit 6a7cc67

Browse files
committed
Tuple single value compatibility PolkadotJS
1 parent 92472bd commit 6a7cc67

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

scalecodec/types.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,17 @@ def decode(self, data: ScaleBytes) -> tuple:
288288
scale_obj = scale_def.new()
289289

290290
scale_obj.decode(data)
291+
292+
if len(self.values) == 1:
293+
return scale_obj
294+
291295
value += (scale_obj,)
292296

293297
return value
294298

295-
def serialize(self, value: tuple) -> tuple:
296-
if len(value) == 1:
297-
return value[0].value
299+
def serialize(self, value: Union[tuple, ScaleType]) -> tuple:
300+
if issubclass(value.__class__, ScaleType):
301+
return value.value
298302

299303
return tuple((i.value for i in value))
300304

test/test_tuple.py

+7
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ def test_tuple_deserialize(self):
4242
obj.deserialize((3, 2))
4343
self.assertEqual(obj.value, (3, 2))
4444

45+
def test_tuple_single_value(self):
46+
# PolkadotJS compatilibity
47+
obj = Tuple(U8).new()
48+
obj.decode(ScaleBytes('0x03'))
49+
self.assertEqual(obj.value, 3)
50+
self.assertEqual(obj.value_object, U8.new(value=3))
51+
4552

4653
if __name__ == '__main__':
4754
unittest.main()

0 commit comments

Comments
 (0)