Source code for starcoin.serde_types
# Copyright (c) Facebook, Inc. and its affiliates
# SPDX-License-Identifier: MIT OR Apache-2.0
import numpy as np
from dataclasses import dataclass
import typing
[docs]class SerializationError(ValueError):
"""Error raised during Serialization"""
pass
[docs]class DeserializationError(ValueError):
"""Error raised during Deserialization"""
pass
[docs]@dataclass(init=False)
class uint128:
high: np.uint64
low: np.uint64
def __init__(self, num):
self.high = np.uint64(num >> 64)
self.low = np.uint64(num & 0xFFFFFFFFFFFFFFFF)
def __int__(self):
return (int(self.high) << 64) | int(self.low)
[docs]@dataclass(init=False)
class int128:
high: np.int64
low: np.uint64
def __init__(self, num):
self.high = np.int64(num >> 64)
self.low = np.uint64(num & 0xFFFFFFFFFFFFFFFF)
def __int__(self):
return (int(self.high) << 64) | int(self.low)
[docs]@dataclass(init=False)
class char:
value: str
def __init__(self, s):
if len(s) != 1:
raise ValueError("`char` expects a single unicode character")
self.value = s
def __str__(self):
return self.value
unit = typing.Type[None]
bool = bool
int8 = np.int8
int16 = np.int16
int32 = np.int32
int64 = np.int64
uint8 = np.uint8
uint16 = np.uint16
uint32 = np.uint32
uint64 = np.uint64
float32 = np.float32
float64 = np.float64