I have a smart contract that I deployed to the Ropsten test network with truffle (using Javascript). I want to be able to send transactions to it from my server, which is written in Python. I've been trying to follow: http://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.contract
from web3 import Web3, HTTPProvider
import json
provider = HTTPProvider('https://ropsten.infura.io/<Redacted Key>')
w3 = Web3(provider)
assert w3.isConnected()
pdb.set_trace()
abi = str(<Here I am pasting my abi in. How should I do this, since I didn't build the contract in Python?>
escrow = w3.eth.contract(address='0x8850259566e9d03a1524e35687db2c78d4003409', abi=abi)
... When I get to this line, the program crashes:
File "/usr/local/lib/python3.6/dist-packages/web3/eth.py", line 351, in contract
ContractFactory = ContractFactoryClass.factory(self.web3, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/web3/contract.py", line 225, in factory
normalizers=normalizers)
File "/usr/local/lib/python3.6/dist-packages/web3/utils/datatypes.py", line 36, in __new__
namespace)
File "cytoolz/functoolz.pyx", line 236, in cytoolz.functoolz.curry.__call__
File "cytoolz/functoolz.pyx", line 232, in cytoolz.functoolz.curry.__call__
File "/usr/local/lib/python3.6/dist-packages/eth_utils/functional.py", line 22, in inner
return callback(fn(*args, **kwargs))
File "/usr/local/lib/python3.6/dist-packages/web3/utils/formatters.py", line 69, in apply_formatters_to_dict
raise type(exc)("Could not format value %r as field %r" % (item, key)) from exc
TypeError: __init__() missing 2 required positional arguments: 'doc' and 'pos'
"Could not format value ... as field ..."
. Can you add that trace to the question, and the version of web3.py that you are using?