Shared validation and default application can be moved into BaseContract
Assignment before return can be skipped here as it saves a line and
makes a dramatic difference.
Store the functionSignature once and reuse, this saving is large for
Exchange functions with order tuples.
* .gitignore gen'd Python staking contract wrappers
* abi-gen/test-cli: check Python type hints in lint
* sra_client.py: Update doc for replicating examples
* abi-gen/Py: fix call() return type incl. tx hash
Previously, generated wrappers for contract methods were including type
hints that suggested that a call() (as opposed to a send_transaction())
might return either the underlying return type or a transaction hash.
This doesn't make sense because a call() will never return a TX hash.
Now, the type hint just has the return type of the underlying method.
* abi-gen: fix test_cli:lint checking wrong code
test_cli:lint is meant to be a rudimentary test of the code generated by
abi-gen. However, previously, this script was incorporated into `yarn
lint`, and in CircleCI `static-tests` runs independently of `build`.
Consequently, the runs of test_cli:lint were checking the OLD code,
which was previously generated and checked in to git, NOT the code
generated with the version of abi-gen represented by the git repo. Now,
test_cli:lint happens during `yarn test` rather than `yarn lint`,
because `yarn test` IS dependent on `yarn build`.
* contract_wrappers.py: fix misplaced doc
Previously, the routines `order_to_jsdict()` and `jsdict_to_order()`
were moved from contract_wrappers.exchange.types to
contract_wrappers.order_conversions. However, the module-level
docstring describing those routines was accidentally left behind in
exchange.types.
* abi-gen/Py: stop documenting return types for TXs
Previously the send_transaction() interface included docstring
documentation for the return types of the contract method, but that
doesn't make any sense because send_transaction() returns a transaction
hash rather than any actual return values.
* abi-gen/Py: stop gen'ing send_tx for const methods
* abi-gen/Py: add build_tx to contract methods
* abi-gen/Py: fix incorrect method return types
Fixes#2298 .
* abi-gen/Py: rm validator arg to no-input methods
* abi-gen: mv Py Handlebars helpers to own module
Move all existing Python-related Handlebars helpers to the newly created
python_handlebars_helpers module.
* abi-gen: refactor internal interface
No functionality is changed. Sole purpose of this commit is to
facilitate an upcoming commit.
* abi-gen: refactor internal interface
No functionality is changed. Sole purpose of this commit is to
facilitate an upcoming commit.
* abi-gen/Py: name tuples w/internalType, not hash
Use the new `internalType` field on the `DataItem`s in the contract
artifact to give generated tuple classes a better name than just hashing
their component field names.
* Fix CI errors
* abi-gen/Py/wrapper: make internal member private
* Update CHANGELOGs
* update abi-gen with new method interfaces
* wip: get all packages to build
* wip: get all packages to build
* Fix two contract wrapper calls
* Export necessary types part of the contract wrapper public interfaces
* Revive and fix wrapper_unit_tests
* Remove duplicate type
* Fix lib_exchange_rich_error_decoder tests
* Fix remaining test failures in contracts-* packages
* Prettier fixes
* remove transactionHelper
* lint and update changelogs
* Fix prettier
* Revert changes to reference docs
* Add back changelog already published and add revert changelog entry
* Add missing CHANGELOG entries
* Add missing comma
* Update mesh-rpc-client dep
* Update Mesh RPC logic in @0x/orderbook to v6.0.1-beta
* Align package versions
* abi-gen: Include templates in published tarball
* abi-gen: update CHANGELOG
* abi-gen/package.json: explicitly include code
Apparently when you include a "files" section, it by default only
includes the code directly referenced by the package.json. (For this
package, it was including the lib/src/index.js referenced by "main", and
the bin/abi-gen.js referenced by "bin", but no other *.js files, nor any
*.d.ts files.)
* abi-gen/test: recompile contract fixtures for 3.0
It seems this hadn't been done since the merge with the 3.0 branch.
* Sync `monorepo$ yarn test` exclusions to CI config
* sra-spec: correct typo
* contract-wrappers: TODO after coord.-server update
* utils: fix typo in comment
* Refactor networkId to chainId everywhere
* Update CHANGELOGs
* .gitignore migrations/0x_ganache_snapshot
* .gitignore new-ish Python contract wrappers
These should have been added back when we started generating these
wrappers.
* rm superfluous contract artifact in Python package
All of the contract artifacts were removed from the Python package
recently, because now they're copied from the monorepo/packages area as
an automated build step. Somehow this one artifact slipped through the
cracks.
* Eliminate circular dependency
This was preventing the Exchange wrapper from ever importing its
validator!
* Improve output of monorepo-level parallel script
- Capture stderr (and have it included in stdout) so that it doesn't
leak onto the console for commands that didn't actually fail.
- Include all error output in the Exception object (eliminate print
statement).
* Silence new versions of linters
Newer versions care about this stuff. Old versions didn't, and we don't
either.
* Support Rich Reverts via Web3.py middleware
* Fix bug in generated wrappers' bytes handling
`bytes.fromhex(bytes.decode('utf-8')` is just plain wrong. It would
work for some cases, but is not working when trying to fill orders with
the latest Exchange contract.
* Migrate to Exchange v3
* Fix typo in DevUtils documentation
* Include new contracts in docs
* Re-enable Python checks in CI
* Accept strings for bytes
* Fix CircleCI build artifacts for gen'd python
I swear the previous way was working before, but it wasn't working now,
so this fixes it.
* Accept a provider OR a Web3 object
In various places. This allows the caller to install middleware (which
in web3.py is installed on a Web3 object, not on a provider) before
executing any RPC calls, which is important for the case where one wants
to produce signatures locally before submitting to a remote node.
* wrapper base: don't assume there are accounts
* Eliminate some inline linter directives
* make CHANGELOGs be REVERSE chronological
* Update CHANGELOG entries and bump version numbers
* @0x/contract-addresses: Put addr's in JSON, not TS
This allows easier consumption by other languages. (Specifically, it
eliminates the overhead of keeping the Python addresses package in sync
with the TypeScript one.)
* sra_client.py: incl. docker in `./setup.py clean`
* sra_client.py: Migrate to protocol v3
Removed script that existed only to exclude runs of sra_client builds
(parallel_without_sra_client). Now `parallel` is used by CI,
re-including sra_client in CI checks.
* abi-gen/templates/Py: clarify if/else logic
In response to
https://github.com/0xProject/0x-monorepo/pull/2284#discussion_r342200906
* sra_client.py: Update CHANGELOG and bump version
* contract_addresses/setup.py: rm unnecessary rm
* json_schemas.py: corrections to dev dependencies
* In tests against deployment, also run doctests
* contract_wrappers example: rm xtra Order attribute
Thanks to @steveklebanoff for catching this.
https://github.com/0xProject/0x-monorepo/pull/2284#pullrequestreview-312065368
* introduce --debug option to abi-gen and remove debug functions from @0x/abi-gen-wrappers
* make evmExecAsync protected; ignore deployedBytecode in doc comment
* trim deployedBytecode so it's undefined unless a contract has pure functions
* remove validateAndSendTransactionAsync
* Create `AwaitTransactionSuccessOpts` and `SendTransactionOpts` types
* Remove duplicate types `IndexedFilterValues`, `DecodedLogEvent`, `EventCallback` from `@0x/base-contract`