33import lionweb .serialization .proto .Chunk_pb2 as pb
44from lionweb .lionweb_version import LionWebVersion
55from lionweb .serialization import MetaPointer , SerializedClassifierInstance , SerializedPropertyValue , \
6- SerializedContainmentValue , SerializedReferenceValue
6+ SerializedContainmentValue , SerializedReferenceValue , SerializationChunk
77from lionweb .serialization .data import LanguageVersion
8- from lionweb .serialization .data import SerializationChunk
98from lionweb .serialization .data .serialized_reference_value import SerializedReferenceValueEntry
109from lionweb .serialization .deserialization_exception import DeserializationException
1110
1413 from lionweb .serialization .data import SerializationChunk
1514
1615
16+
1717# from io.lionweb.serialization.data import (
1818# SerializationChunk,
1919# SerializedClassifierInstance,
@@ -68,12 +68,15 @@ def __init__(self, lionweb_version: Optional["LionWebVersion"] = LionWebVersion.
6868 # return self._deserialize_serialization_chunk_to_instances(serialization_chunk)
6969 #
7070
71- def read_chunk_from_bytes (self , data : bytes ) -> pb .PBChunk :
71+ def read_pbchunk_from_bytes (self , data : bytes ) -> pb .PBChunk :
7272 """Read a protobuf Chunk from binary content"""
7373 self ._chunk_instance .Clear () # Reset the instance
7474 self ._chunk_instance .ParseFromString (data )
7575 return self ._chunk_instance
7676
77+ def read_chunk_from_bytes (self , data : bytes ) -> SerializationChunk :
78+ return self ._deserialize_pbchunk_to_serialization_chunk (self .read_pbchunk_from_bytes (data ))
79+
7780
7881 def _deserialize_pbchunk_to_serialization_chunk (self , chunk : pb .PBChunk ) -> SerializationChunk :
7982 # Pre-size arrays as in Java
@@ -101,17 +104,19 @@ def _deserialize_pbchunk_to_serialization_chunk(self, chunk: pb.PBChunk) -> Seri
101104 f"Unable to deserialize meta pointer with language { mp .li_language } "
102105 )
103106 language_version = languages_array [mp .li_language ]
107+ language_key : Optional [str ] = language_version .key if language_version is not None else None
108+ language_v : Optional [str ]= language_version .version if language_version is not None else None
104109 meta_pointer = MetaPointer (
105- language_version . key , language_version . version , strings_array [mp .si_key ]
110+ language_key , language_v , strings_array [mp .si_key ]
106111 )
107112 metapointers_array [i ] = meta_pointer
108113
109114 serialization_chunk = SerializationChunk ()
110115 serialization_chunk .serialization_format_version = chunk .serialization_format_version
111116
112- for lv in languages_array :
113- if lv is not None :
114- serialization_chunk .add_language (lv )
117+ valid_languages = [ lv for lv in languages_array if lv is not None ]
118+ for lv in valid_languages :
119+ serialization_chunk .add_language (lv )
115120
116121 # Nodes
117122 for n in chunk .nodes :
@@ -131,7 +136,7 @@ def _deserialize_pbchunk_to_serialization_chunk(self, chunk: pb.PBChunk) -> Seri
131136
132137 # containments
133138 for c in n .containments :
134- children : List [str ] = []
139+ children : List [Optional [ str ] ] = []
135140 for child_index in c .si_children :
136141 if child_index == 0 :
137142 raise DeserializationException (
@@ -344,3 +349,4 @@ def _deserialize_pbchunk_to_serialization_chunk(self, chunk: pb.PBChunk) -> Seri
344349 # chunk.interned_meta_pointers.append(pmp)
345350 #
346351 # return chunk
352+
0 commit comments