* Rename existing wrapper, to match contract name
* base contract: make member var public
* json_schemas.py: stop storing copies of schemas!
* .gitignore generated erc20_token.py wrapper
* json schemas: allow uppercase digits in address
* existing exchange wrapper: re-order methods
to match method order in Solidity contract, to reduce noise in upcoming
diffs of newly generated code vs. old manually-written code.
* existing exchange wrapper: rename method params
To match contract method param names
* existing exchange wrapper: remove redundant member
* existing exchange wrapper: make signatures bytes
Not strings.
* abi-gen/test-cli: show context on diff failure
* abi-gen-templates/Py: fix broken event interface
Previous changes had removed the `token_address` parameter from all
generated methods, but this instance was missed because there weren't
tests/examples using events for the first contract for which wrappers
were generated (ERC20Token).
* abi-gen: remove unused method parameters
* abi-gen: convert Py method params to snake case
* abi-gen: rewrite Python tuple handling
* python-generated-wrappers: include Exchange
* abi-gen-templates/Py: easy linter fixes
* abi-gen-templates/Py: satisfy docstring linters
* abi-gen-templates/Py: normalize bytes before use
* contract_wrappers.py: replace Exchange w/generated
* contract_wrappers.py: rm manually written Exchange
* contract_wrappers.py/doctest: rename variables
* abi-gen: fix misspelling in docstring
Co-Authored-By: Fabio B <me@fabioberger.com>
* Py docs: error on warning, and test build in CI
* abi-gen: doc Py bytes params as requiring UTF-8
* abi-gen: git mv diff.sh test-cli/
* abi-gen: put Py wrapper in module folder, not file
This leaves space for user-defined additions to the same module, such as
for custom types, as shown herein.
* abi-gen: customizable param validation for Python
* contract_wrappers.py: JSON schema Order validation
* CircleCI Build Artifacts
For abi-gen command-line test output, for generated Python contract
wrappers as output by abi-gen, for generated Python contract wrappers as
reformatted and included in the Python package area, and for the "build"
output folder in each Python package, which includes the generated
documentation.
* CHANGELOG updates for all components
* abi-gen: grammar in comments
Co-Authored-By: Fabio B <me@fabioberger.com>
* abi-gen: CHANGELOG spelling correction
Co-Authored-By: Fabio B <me@fabioberger.com>
* order_utils.py: reverse (chronological) CHANGELOG
* abi-gen-templates: reset CHANGELOG patch version
* CHANGELOGs: use multiple entries where appropriate
* abi-gen: enable devdoc solc output in test-cli
* abi-gen-templates/Py: consolidate return type
* abi-gen/test-cli: non-pure fixture contract method
Added a method to the "dummy" test fixture contract that isn't pure.
All of the other prior method cases were pure.
* abi-gen/Py: fix const methods missing return type
* abi-gen/Py: fix wrong return types on some methods
Specifically, wrapper methods wrapping contract methods that modify
contract state and return no return value. There was no test case for
this. Now there is.
* contract_wrappers.py: rm generated code in `clean`
* Parallelize Py monorepo scripts (test, lint, etc)
* Exercise doctests as a test not as a linter
* Add a contract artifact doctest, and exercise it
* Clean up linter issues
* Change asset data decoding output type
Previously, it was a TypedDict, but that was causing problems. Sphinx
seems to be broken, such that none of the fields of the class were being
rendered into the doc.
Thinking on it further, I decided that a NamedTuple makes more sense
here anyways, since tuples are immutable and this output value isn't
something someone should ever build or modify. And, NamedTuple is
getting its fields properly rendered by Sphinx.
* Add type annotations to JSON schemas docs
* Add doc publish metadata file for middlewares pkg
* Improve documentation
Note that none of the changes to .py files impact functionality in any
way, because the changes are restricted to "docstrings", which to the
Python interpreter are simply no-op statements.
However, one caveat to that is that much of these docstring changes DO
affect the functionality of automated test runs, because all of the code
examples (blocks beginning with `>>> `) are "doctests", which are
exercised via the test framework.
The index.rst files are the top-level templates for generating the
documentation, and the "automodule"/"autoclass"/etc statements pull in
the docstrings from the source code.
* correct package name in doc URL
* Move sra_client module into zero_ex namespace
* Add functions to encode asset data to bytes
* Fix: SRA client was deserializing orders weirdly
The generated code was transforming the order structure, from the camel
case field name format in the spec, into the snake case field name
format expected by Python convention. With this problem in place, the
only way to take an order from a relayer and send it to a contract (for
fill, cancel, etc) was to manually transform the field names, one by
one, into a new structure.
* Fix problem with Web3/JSON order conversion utils
* doctest: maker, trade ZRX for WETH, not vice versa
* Remove redundant test
* Construct order in native Python, not JSON
Then convert it to JSON before sending it to the relayer.
* doctest: simplify asset units
* Add doctests for filling and cancelling
* Minor doctetst copy edits; whitespace
* Rename function, and add optional parameter
* Tweak docstrings on JSON conversion functions.
* Demo asset data decoding to view asset pairs
* Demo selecting an order from the order book
And have taker take it.
* Rename variable
* Abstract ganache from examples
Doing that exposed excessive use of the verbose
NETWORK_TO_ADDRESSES[NetworkId.Ganache] construct, so simplified that,
which ripped into eliminating other temporary variables that had been
used to hold specific contract addresses.
Also cleaned up some misplaced import statements.
* Add missing SRA client doc publication metadata
* Ran prettier on new SRA client doc pub metadata
* Remove local env customizations in doc metadata
* Eliminate temporary variable
* Rename variable
* Show `pip install` in every package's doc
* Doc NetorkID & pagination params as int, not float
* Clean up unmatched parenthesis in docs
End-to-end demos of constructing and signing an order and submitting it to a Relayer. Docs are generated from the code, and include usage examples that are verified through automated testing.
* Refine Order for Web3 compat. & add conversions
Changed some of the fields in the Order class so that it can be passed
to our contracts via Web3.
Added conversion utilities so that an Order can be easily converted to
and from a JSON-compatible dict (specifically by encoding/decoding the
`bytes` fields), to facilitate validation against the JSON schema.
Also modified JSON order schema to accept integers in addition to
stringified integers.
* Fixes for json_schemas
Has-types indicator file, py.typed, was not being included in package.
Schemas were not being properly gathered into package installation.
* Add test/demo of Exchange.getOrderInfo()
* web3 bug workaround
* Fix problem packaging contract artifacts
* Move contract addresses to their own package
* Move contract artifacts to their own package
* Add scripts to install, test & lint all components
* prettierignore files in local python dev env
* Correct missing coverage analysis for sra_client
* CI cache lint: don't save, re-use from test-python
* tag hacks as hacks
* correct merge mistake
* remove local strip_0x() in favor of eth_utils
* remove json schemas from old order_utils location
* correct merge mistake
* doctest json schemas via command-line, not code
* Code generation scripts
* Generated code
* Change test config to hit 0x-launch-kit
* Ran prettier on generated code
* First test case, of get_asset_pairs()
* Use launch kit docker image to faciliate CI tests
* Fix markdown rendering for GitHub and PyPI
* Add URL for PyPI to link back to GitHub
* Add one-line package description to README.md
* Remove git_push.sh
* Remove unimplemented tests
* Add sra_client to top-level README package list
* Remove repeated-everywhere long description
* Add shorcuts for publishing
* Remove TypeScript examples