Example #1
0
    def contract(self, *args, **kwargs):
        ContractFactoryClass = kwargs.pop('ContractFactoryClass', Contract)
        contract_name = kwargs.pop('contract_name', None)

        has_address = any((
            'address' in kwargs,
            len(args) >= 1 and is_address(args[0]),
            len(args) >= 2 and is_address(args[1]),
        ))

        for potential_address in args:
            validate_address_checksum(potential_address)

        if has_address:
            if 'address' in kwargs:
                address = kwargs.pop('address')
            elif is_address(args[0]):
                address = args[0]
            elif is_address(args[1]):
                address = args[1]
                kwargs['abi'] = args[0]
            validate_address(address)

            return ContractFactoryClass.factory(self.web3, contract_name,
                                                **kwargs)(address)
        else:
            try:
                kwargs['abi'] = args[0]
            except IndexError:
                pass
            return ContractFactoryClass.factory(self.web3, contract_name,
                                                **kwargs)
Example #2
0
def input_address_formatter(addr):
    iban = Iban(addr)
    if iban.isValid() and iban.isDirect():
        return add_0x_prefix(iban.address())
    elif is_address(addr):
        validate_address_checksum(addr)
        return to_normalized_address(addr)

    raise ValueError("invalid address")