web3.py/web3/utils/functional.py
Piper Merriam 9d2b1dd2de dirty
2017-01-09 23:25:48 -07:00

40 lines
764 B
Python

import functools
def identity(value):
return value
def combine(f, g):
return lambda x: f(g(x))
def compose(*functions):
return functools.reduce(combine, reversed(functions), identity)
def apply_formatters_to_return(*formatters):
formatter = compose(*formatters)
def outer(fn):
@functools.wraps(fn)
def inner(*args, **kwargs):
value = fn(*args, **kwargs)
return formatter(value)
return inner
return outer
def cast_return(_type):
def outer(fn):
@functools.wraps(fn)
def inner(*args, **kwargs):
return _type(fn(*args, **kwargs))
return inner
return outer
cast_return_to_tuple = cast_return(tuple)
cast_return_to_dict = cast_return(dict)