From 4e3a397c2f1db988fec5049d47bf2667383a2854 Mon Sep 17 00:00:00 2001 From: Arjan Zijderveld <5286904+arjanz@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:05:14 +0100 Subject: [PATCH] * Encode directly accepts JamBytes now * encode of def do not create ScaleType anymore --- jamcodec/types.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/jamcodec/types.py b/jamcodec/types.py index a75bb1a..7f6f78d 100644 --- a/jamcodec/types.py +++ b/jamcodec/types.py @@ -203,7 +203,7 @@ def encode(self, value: dict) -> JamBytes: if name not in value: raise ScaleEncodeException(f'Argument "{name}" of Struct is missing in given value') - data += scale_obj.new().encode(value[name]) + data += scale_obj.encode(value[name]) if value[name] and issubclass(value[name].__class__, JamCodecType): value[name] = value[name].serialize() @@ -280,7 +280,7 @@ def encode(self, value: tuple) -> JamBytes: data = JamBytes(bytearray()) for idx, scale_obj in enumerate(self.values): - data += scale_obj.new().encode(value[idx]) + data += scale_obj.encode(value[idx]) return data def decode(self, data: JamBytes) -> tuple: @@ -377,7 +377,7 @@ def encode(self, value: Union[str, dict]) -> JamBytes: if variant_obj is not None: - data += variant_obj.new().encode(enum_value) + data += variant_obj.encode(enum_value) return data @@ -603,9 +603,12 @@ def encode(self, value: list) -> JamBytes: data = VarInt64.encode(len(value)) for idx, item in enumerate(value): - data += self.type_def.new().encode(item) - if item and issubclass(item.__class__, JamCodecType): - value[idx] = item.serialize() + if type(item) is JamBytes: + data += item + else: + data += self.type_def.encode(item) + if item and issubclass(item.__class__, JamCodecType): + value[idx] = item.serialize() return data