in serde-generate/runtime/python/bcs/__init__.py [0:0]
def deserialize_uleb128_as_u32(self) -> int:
value = 0
for shift in range(0, 32, 7):
byte = int.from_bytes(self.read(1), "little", signed=False)
digit = byte & 0x7F
value |= digit << shift
if value > MAX_U32:
raise st.DeserializationError(
"Overflow while parsing uleb128-encoded uint32 value"
)
if digit == byte:
if shift > 0 and digit == 0:
raise st.DeserializationError(
"Invalid uleb128 number (unexpected zero digit)"
)
return value
raise st.DeserializationError(
"Overflow while parsing uleb128-encoded uint32 value"
)