def __init__(self, val=0, val_expr=None, type_expr=None, **kwargs): assert_type(val, int) assert val >= 0, 'expected non-negative val' super(Nat, self).__init__(val=val, val_expr=val_expr, type_expr=type_expr, **kwargs)
def __init__(self, val=0, val_expr=None, type_expr=None, **kwargs): assert_type(val, int) assert val.bit_length( ) <= 63, f'mutez overflow, got {val.bit_length()} bits, should not exceed 63' super(Mutez, self).__init__(val=val, val_expr=val_expr, type_expr=type_expr, **kwargs)
def __init__(self, val=False, val_expr=None, type_expr=None, **kwargs): assert_type(val, bool) super(Bool, self).__init__(val=val if val_expr is None else parse_expression( val_expr, type_expr), val_expr=val_expr or {'prim': str(val)}, type_expr=type_expr or {'prim': self.prim}, **kwargs)
def __init__(self, val=b'', type_expr=None, val_expr=None, **kwargs): assert_type(val, bytes) super(Bytes, self).__init__(val=val if val_expr is None else parse_expression( val_expr, type_expr), val_expr=val_expr or {'bytes': val.hex()}, type_expr=type_expr or {'prim': self.prim}, **kwargs)
def __init__(self, val=0, val_expr=None, type_expr=None, **kwargs): assert_type(val, int) assert isinstance(val, int) super(Int, self).__init__(val=val if val_expr is None else parse_expression( val_expr, type_expr), val_expr=val_expr or {'int': str(val)}, type_expr=type_expr or {'prim': self.prim}, **kwargs)
def __str__(self): assert_type(self._val, str) return self._val
def __int__(self): assert_type(self._val, int) return self._val
def __getitem__(self, item): assert_type(item, int) return self.parse(val_expr=self.val_expr[item], type_expr=self.type_expr['args'][0])
def __getitem__(self, item): assert_type(item, slice) return type(self)(self._val[item.start:item.stop])
def __bool__(self): assert_type(self._val, bool) return self._val
def __bytes__(self): assert_type(self._val, bytes) return self._val