def get_balances(self): available = { 'STEEM': Amount(self['balance']).amount, 'SBD': Amount(self['sbd_balance']).amount, 'VESTS': Amount(self['vesting_shares']).amount, } savings = { 'STEEM': Amount(self['savings_balance']).amount, 'SBD': Amount(self['savings_sbd_balance']).amount, } rewards = { 'STEEM': Amount(self['reward_steem_balance']).amount, 'SBD': Amount(self['reward_sbd_balance']).amount, 'VESTS': Amount(self['reward_vesting_balance']).amount, } totals = { 'STEEM': sum([available['STEEM'], savings['STEEM'], rewards['STEEM']]), 'SBD': sum([available['SBD'], savings['SBD'], rewards['SBD']]), 'VESTS': sum([available['VESTS'], rewards['VESTS']]), } total = walk_values(rpartial(round, 3), totals) return { 'available': available, 'savings': savings, 'rewards': rewards, 'total': total, }
get_correct_meta = lambda o: o.Meta if is_class(o) else o._meta is_marked = lambda o: (lambda x: hasattr(x, META_IDENTIFIER_NAME) and getattr(x, META_IDENTIFIER_NAME))(get_correct_meta(o)) select_with_identifier = partial(select, is_marked) to_schema_name = lambda o: (lambda x: getattr(x, META_SCHEMA_NAME, x.resource_name))(get_correct_meta(o)) to_fqns = partial(map, fqn) commas = partial(str_join, ', ') str_drop_empty = partial(select, lambda s: s != '') str_trim = lambda s: s.strip() str_split = lambda on: (lambda s: s.split(on)) str_split_pattern = lambda pattern: (lambda s: re.split(pattern, s)) str_split_newline = str_split_pattern(r'\r?\n') char_arr_to_string = partial(str_join, '') space_out_title_case = compose(lambda s: s.lstrip(), char_arr_to_string, flatten, rpartial(partial(reduce, lambda left, right: left + (' ' + right if right.isupper() else right)), '')) substitute_char = lambda target, replacement: partial(map, lambda c: replacement if c == target else c) lowercase = partial(map, lambda c: c.lower()) slugify = compose(char_arr_to_string, substitute_char(' ', '-'), space_out_title_case) normalize_whitespace = compose(partial(str_join, '\n '), str_drop_empty, partial(map, str_trim), str_split_newline) class NO_TYPE: pass class FieldDescriptor(object): def __init__(self, desc: str, is_array: bool = False, type_override=NO_TYPE): self.description = desc self.is_array = is_array
def jrpc_request_validator(): return rpartial(jsonschema.validate, REQUEST_SCHEMA)
def steemd_jrpc_response_validator(): return rpartial(jsonschema.validate, STEEMD_RESPONSE_SCHEMA)
def jrpc_response_validator(): return rpartial(jsonschema.validate, RESPONSE_SCHEMA)