in pyiceberg/avro/reader.py [0:0]
def read(self, decoder: BinaryDecoder) -> Mapping[Any, Any]:
read_items: dict[Any, Any] = {}
if self._is_int_int or self._is_int_bytes:
if self._is_int_int:
return self._read_int_int(decoder)
block_count = decoder.read_int()
while block_count != 0:
if block_count < 0:
block_count = -block_count
# We ignore the block size for now
_ = decoder.read_int()
decoder.read_int_bytes_dict(block_count, read_items)
block_count = decoder.read_int()
else:
block_count = decoder.read_int()
while block_count != 0:
if block_count < 0:
block_count = -block_count
# We ignore the block size for now
_ = decoder.read_int()
for _ in range(block_count):
key = self._key_reader(decoder)
read_items[key] = self._value_reader(decoder)
block_count = decoder.read_int()
return read_items