* abi-gen/Py: fix return type for multi-val returns
Methods that return multiple values were broken in two ways. One: a
spurious newline was being injected between the return type and the
colon ending the Python method prototype. Two: the return type was
being generated as just `[TypeA, TypeB]`, whereas it should be
`Tuple[TypeA, TypeB]`.
* abi-gen/Py: fix support for arrays of structs
* abi-gen/Py: FAILING test case nested unrefd struct
When a struct contains another struct, and the inner struct is not
directly referenced by any method interface, wrapper generation is
failing to render a class to represent the inner struct.
This won't fail in CI because at this time CI doesn't run any native
Python tooling to analyze the generated code. Running mypy locally on
the files in this commit produces the following output:
test-cli/output/python/abi_gen_dummy/__init__.py:76: error: Name 'Tuple0x246f9407' is not defined
This problem affects the generation of wrappers for the DutchAuction
contract.
* abi-gen/Py: fix nested unref'd struct failure
* abi-gen/Py: introduce newlines to quiet linter
When generating contracts with long names (eg
CoordinatorRegistryValidator), the `black` reformatter was introducing
these newlines for us, and it was moving the `# type: ignore` comment in
there such that it no longer was on the line it needed to be on.
Introducing these newlines manually (instead of letting black inject
them) allows the linter directive to stay where it needs to be.
* abi-gen/Py: declare tuples in dependency order
* abi-gen/Py: fix support for overloaded methods
* contract_wrappers.py: pylint: permit 2-char args
By default pylint says that 2 characters is too short for an argument
name, but we have some contract methods with 2-character argument names
(eg `to` in `AssetProxyOwner.getTransactionIds()`), so we want to permit
them.
* contract_wrappers.py: include all contracts
* Update CHANGELOGs
* abi-gen: rename variable
* abi-gen: refine comments
* abi-gen/Py: reword tuple class docstring
* first pass at including doc comments
* incorporate suggestions for method comments; add devdoc to dummy contract
* better formatting and persist generated docs as circleci build artifacts
* store artifacts properly
* hanging indent for method params
* git rm unnecessary .gitkeep file
* After all Pytest runs, show short test summary
* abi-gen/Py: facilitate inlining of parameter lists
Effectively, stopped new-lines from being introduced by calls to the
`params` and `typed_params` partials.
* abi-gen: simple Py wrapper test for local dev'ment
* abi-gen/Py: stop gen'ing ValidatorBase
* abi-gen/Py: declare abi() wrapper method in Base
* abi-gen/Py: methods as classes to ease call/sendTx
Represent methods as classes in order to faciliate access to a method's
different operations (call, send_transaction, etc).
* contract_wrappers.py: make Base methods public
Changed some methods on BaseContractWrapper to be public.
* contract_wrappers.py: remove unused method
* contract_wrappers.py: extract method
* abi-gen/Py: inline method
* contract_wrappers.py: fix bug in call()
We were passing transaction parameters through to sendTransaction()
invocations, but not to call() invocations.
* abi-gen/Py: remove `view_only` param to call/tx
Formerly, in the BaseContractWrapper, there was just one function used
for both eth_call and eth_sendTransaction, and you would distinguish
between the two by specifying `view_only=True` when you wanted a call.
This commit defines a method dedicated to executing an eth_call, and
leaves the old method behind, with the `view_only` param removed, to be
used for eth_sendTransaction.
* abi-gen/Py: rename method
* contract_wrappers/Py: simplify web3 func handling
Pass web3 function instance into generated wrapper method class
constructor, rather than having that class obtain it upon each method
call.
Really this is just an elimination of a call to
BaseContractWrapper.contract_instance(), which will be removed
completely in a shortly-upcoming commit.
* contract_wrappers.py: inline method
Inline and remove method BaseContractWrapper.contract_instance().
* contract_wrappers.py: pass Validator to *Method
Pass a ValidatorBase instance into construction of the contract method
classes, *Method, to eliminate another dependency on the containing
contract object, which will be eliminated completely in a
shortly-upcoming commit.
* abi-gen/Py: BaseContractWrapper -> ContractMethod
Change the fundamental thing-to-be-wrapped from the contract to the
method. Since the named method classes were introduced (in a previous
commit), and since the operations contained within the Base are
predominantly focused on supporting method calls more than anything
else, it makes more intuitive sense to provide a base for the methods
than for the contract.
With this change, the method classes no longer require a contract object
to be passed to their constructors. The contract members that the
methods were utilizing are now passed directly to the method
constructor.
* contract_wrappers.py: rename module to bases...
...from _base_contract_wrapper. The old name hasn't made sense since
ValidatorBase was moved into that module, and definitely doesn't make
sense now that the fundamental thing-to-be-wrapped has changed from the
contract to the method. Also renamed to make it public (removed the
leading underscore) since we're generating code that will depend on it.
* abi-gen/Py: clarify call/sendTx docstrings
* abi-gen/Py: adjust whitespace
* contract_wrappers.py: inline method
* abi-gen/Py: rename class ValidatorBase...
...to just Validator. It's in the "bases" module, which provides the
context needed in order to know it's a base class
* python-packages: fix silent failures of ./parallel
* contract_wrappers.py: remove private_key support
Having this present was overcomplicating interfaces. And it was
untested (and not readily working when testing was attempted). And it
only provided a thin layer of convenience, which a client could easily
code up themselves.
* contract_wrappers.py: inline method
* contract_wrappers.py: rm unused member variables
* contract_wrappers.py: rm unnecessary instance var
* abi-gen/Py: add estimate_gas to gen'd methods
* update CHANGELOG.json