def deserialize_uleb128_as_u32()

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"
        )