def __init__(self, provider): self._requestManager = RequestManager(provider) self.currentProvider = provider self.eth = Eth(self) self.db = Db(self._requestManager) self.shh = Shh(self._requestManager) self.net = Net(self._requestManager) self.personal = Personal(self._requestManager) self.version = Version(self._requestManager) self.providers = { 'RPCProvider': RPCProvider, 'IPCProvider': IPCProvider, 'TestRPCProvider': TestRPCProvider, } self.RPCProvider = RPCProvider self.IPCProvider = IPCProvider self.TestRPCProvider = TestRPCProvider class Config: def __getattr__(self, key): if key == "defaultAccount": return config.defaultAccount elif key == "defaultBlock": return config.defaultBlock def __setattr__(self, key, value): if key == "defaultAccount": config.defaultAccount = value elif key == "defaultBlock": config.defaultBlock = value self.config = Config() # Encoding and Decoding self.toHex = to_hex self.toAscii = decode_hex self.toUtf8 = compose(decode_hex, force_text) self.fromAscii = encode_hex self.fromUtf8 = encode_hex self.toDecimal = to_decimal self.fromDecimal = from_decimal # Currency Utility self.toWei = to_wei self.fromWei = from_wei # Address Utility self.isAddress = is_address self.isChecksumAddress = is_checksum_address self.toChecksumAddress = to_checksum_address
def __init__(self, provider): self._requestManager = RequestManager(provider) self.currentProvider = provider self.eth = Eth(self) self.db = Db(self._requestManager) self.shh = Shh(self._requestManager) self.net = Net(self._requestManager) self.personal = Personal(self._requestManager) self.version = Version(self._requestManager) self.txpool = TxPool(self._requestManager) self.miner = Miner(self._requestManager) self.admin = Admin(self._requestManager) self.providers = { 'RPCProvider': RPCProvider, 'IPCProvider': IPCProvider, 'TestRPCProvider': TestRPCProvider, } self.RPCProvider = RPCProvider self.IPCProvider = IPCProvider self.TestRPCProvider = TestRPCProvider # Encoding and Decoding self.toHex = to_hex self.toAscii = decode_hex self.toUtf8 = compose(decode_hex, force_text) self.fromAscii = encode_hex self.fromUtf8 = encode_hex self.toDecimal = to_decimal self.fromDecimal = from_decimal # Currency Utility self.toWei = to_wei self.fromWei = from_wei # Address Utility self.isAddress = is_address self.isChecksumAddress = is_checksum_address self.toChecksumAddress = to_checksum_address
def _find_matching_event_abi(cls, event_name=None, argument_names=None): filters = [ functools.partial(filter_by_type, 'event'), ] if event_name is not None: filters.append(functools.partial(filter_by_name, event_name)) if argument_names is not None: filters.append( functools.partial(filter_by_argument_name, argument_names)) filter_fn = compose(*filters) event_abi_candidates = filter_fn(cls.abi) if len(event_abi_candidates) == 1: return event_abi_candidates[0] elif not event_abi_candidates: raise ValueError("No matching functions found") else: raise ValueError("Multiple functions found")
def _find_matching_event_abi(cls, event_name=None, argument_names=None): filters = [ functools.partial(filter_by_type, 'event'), ] if event_name is not None: filters.append(functools.partial(filter_by_name, event_name)) if argument_names is not None: filters.append( functools.partial(filter_by_argument_name, argument_names) ) filter_fn = compose(*filters) event_abi_candidates = filter_fn(cls.abi) if len(event_abi_candidates) == 1: return event_abi_candidates[0] elif not event_abi_candidates: raise ValueError("No matching functions found") else: raise ValueError("Multiple functions found")
def apply_to_array(formatter_fn): return compose( functools.partial(map, formatter_fn), list, )
Constructs a decorator that will cause the underlying function to only be applied to the given value if the `test_fn` returns true for that value. """ def outer_fn(fn): @functools.wraps(fn) def inner(value): if test_fn(value): return fn(value) return value return inner return outer_fn apply_if_not_null = apply_if_passes_test(compose(is_null, operator.not_)) apply_if_string = apply_if_passes_test(is_string) apply_if_array = apply_if_passes_test(is_array) apply_if_object = apply_if_passes_test(is_object) apply_if_integer = apply_if_passes_test(is_integer) def apply_to_array(formatter_fn): return compose( functools.partial(map, formatter_fn), list, ) @coerce_args_to_text @coerce_return_to_text
def test_composition_single_function(): def fn(x): return x * 2 assert compose(fn)(5) == 10
def test_composition_no_functions(): fn = compose() assert fn(5) == 5
def test_composition_multiple_function(): def fn(x): return x + 1 assert compose(fn, fn, fn)(5) == 8
class Web3(object): RPCProvider = RPCProvider IPCProvider = IPCProvider TestRPCProvider = TestRPCProvider # Iban Iban = Iban # Encoding and Decoding toHex = staticmethod(to_hex) toAscii = staticmethod(decode_hex) toUtf8 = staticmethod(compose(decode_hex, force_text)) fromAscii = staticmethod(encode_hex) fromUtf8 = staticmethod(encode_hex) toDecimal = staticmethod(to_decimal) fromDecimal = staticmethod(from_decimal) # Currency Utility toWei = staticmethod(to_wei) fromWei = staticmethod(from_wei) # Address Utility isAddress = staticmethod(is_address) isChecksumAddress = staticmethod(is_checksum_address) toChecksumAddress = staticmethod(to_checksum_address) def __init__(self, provider): self._requestManager = RequestManager(provider) self.currentProvider = provider self.eth = Eth(self) self.db = Db(self._requestManager) self.shh = Shh(self._requestManager) self.net = Net(self._requestManager) self.personal = Personal(self._requestManager) self.version = Version(self._requestManager) self.txpool = TxPool(self._requestManager) self.miner = Miner(self._requestManager) self.admin = Admin(self._requestManager) def setProvider(self, provider): self._requestManager.setProvider(provider) self.currentProvider = provider def reset(self, keepIsSyncing): self._requestManager.reset(keepIsSyncing) def sha3(self, value, encoding="hex"): if encoding == 'hex': hex_string = value else: hex_string = encode_hex(value) return self._requestManager.request_blocking('web3_sha3', [hex_string]) def isConnected(self): return self.currentProvider is not None and self.currentProvider.isConnected() def createBatch(self): raise NotImplementedError("Not Implemented") def receive(self, requestid, timeout=0, keep=False): return self._requestManager.receive(requestid, timeout, keep)
def apply_if_passes_test(test_fn): """ Constructs a decorator that will cause the underlying function to only be applied to the given value if the `test_fn` returns true for that value. """ def outer_fn(fn): @functools.wraps(fn) def inner(value): if test_fn(value): return fn(value) return value return inner return outer_fn apply_if_not_null = apply_if_passes_test(compose(is_null, operator.not_)) apply_if_string = apply_if_passes_test(is_string) apply_if_array = apply_if_passes_test(is_array) apply_if_object = apply_if_passes_test(is_object) apply_if_integer = apply_if_passes_test(is_integer) def apply_to_array(formatter_fn): return compose( functools.partial(map, formatter_fn), list, ) @coerce_args_to_text @coerce_return_to_text