55from typing import Any , Self , cast
66
77import pytest
8-
98from smithy_core .deserializers import ShapeDeserializer
109from smithy_core .documents import (
1110 Document ,
@@ -623,21 +622,21 @@ def serialize_members(self, serializer: ShapeSerializer) -> None:
623622 if self .list_member is not None :
624623 schema = SCHEMA .members ["listMember" ]
625624 target_schema = schema .expect_member_target ().members ["member" ]
626- with serializer .begin_list (schema ) as ls :
625+ with serializer .begin_list (schema , len ( self . list_member ) ) as ls :
627626 for element in self .list_member :
628627 ls .write_string (target_schema , element )
629628 if self .map_member is not None :
630629 schema = SCHEMA .members ["mapMember" ]
631630 target_schema = schema .expect_member_target ().members ["value" ]
632- with serializer .begin_map (schema ) as ms :
631+ with serializer .begin_map (schema , len ( self . map_member ) ) as ms :
633632 for key , value in self .map_member .items ():
634633 ms .entry (key , lambda vs : vs .write_string (target_schema , value )) # type: ignore
635634 if self .struct_member is not None :
636635 serializer .write_struct (SCHEMA .members ["structMember" ], self .struct_member )
637636 if self .sparse_list_member is not None :
638637 schema = SCHEMA .members ["sparseListMember" ]
639638 target_schema = schema .expect_member_target ().members ["member" ]
640- with serializer .begin_list (schema ) as ls :
639+ with serializer .begin_list (schema , len ( self . sparse_list_member ) ) as ls :
641640 for element in self .sparse_list_member :
642641 if element is None :
643642 ls .write_null (target_schema )
@@ -646,7 +645,7 @@ def serialize_members(self, serializer: ShapeSerializer) -> None:
646645 if self .sparse_map_member is not None :
647646 schema = SCHEMA .members ["sparseMapMember" ]
648647 target_schema = schema .expect_member_target ().members ["value" ]
649- with serializer .begin_map (schema ) as ms :
648+ with serializer .begin_map (schema , len ( self . sparse_map_member ) ) as ms :
650649 for key , value in self .sparse_map_member .items ():
651650 if value is None :
652651 ms .entry (key , lambda vs : vs .write_null (target_schema ))
@@ -840,7 +839,9 @@ def test_document_serializer(given: Any, expected: Document):
840839 serializer .write_document (DOCUMENT , given )
841840 case list ():
842841 given = cast (list [str ], given )
843- with serializer .begin_list (SPARSE_STRING_LIST_SCHEMA ) as list_serializer :
842+ with serializer .begin_list (
843+ SPARSE_STRING_LIST_SCHEMA , len (given )
844+ ) as list_serializer :
844845 member_schema = SPARSE_STRING_LIST_SCHEMA .members ["member" ]
845846 for e in given :
846847 if e is None :
@@ -849,7 +850,9 @@ def test_document_serializer(given: Any, expected: Document):
849850 list_serializer .write_string (member_schema , e )
850851 case dict ():
851852 given = cast (dict [str , str ], given )
852- with serializer .begin_map (SPARSE_STRING_MAP_SCHEMA ) as map_serializer :
853+ with serializer .begin_map (
854+ SPARSE_STRING_MAP_SCHEMA , len (given )
855+ ) as map_serializer :
853856 member_schema = SPARSE_STRING_MAP_SCHEMA .members ["value" ]
854857 for k , v in given .items ():
855858 if v is None :
0 commit comments