Comments (8)
@carver My thinking was that this could be something that gets included in v2.
from eth-abi.
If web3 is using this we need to remove that since this API is under utils
and thus, is considered private. I don't think this requires a deprecation, but we should be careful to not break web3 as we fix this.
from eth-abi.
It's used a few places in web3, so that's one place to try out the new approach.
from eth-abi.
Another behavior that I'd like to change, which is related to all of this, is that the encode_single
and decode_single
functions accept either a type string or a type tuple (with "base", "sub", and "arrlist" components). If a type tuple is provided, the collapse_type
utility function is used to convert it to a type string.
I'd like to remove the collapse_type
function and make it so that the encode_single
and decode_single
functions expect a type string and nothing else. My motivation with this is to make the API simpler and less magical.
I feel like I might have had a previous discussion about this with @carver in which he may have asked to leave this behavior unchanged. Sorry if I'm forgetting this. If that is the case, would it be possible to simply move the collapse_type
function into web3 or wherever it's needed and apply it manually to type string data that is headed for encode_single
or decode_single
?
from eth-abi.
^^^ Actually, I'll make another issue ticket for the last comment.
from eth-abi.
I went ahead and made PR #87 for when we decide to include this.
from eth-abi.
I can open a PR in web3 to replace process_type
with grammar.parse
from eth-abi.
Merged PR #87 .
from eth-abi.
Related Issues (20)
- Unable to decode Arrays of Structs HOT 4
- ImportError: cannot import name 'encode' from 'eth_abi' HOT 2
- Is there a way to match calldata/memory encoding conventions? HOT 1
- Decoding data of type byte[] array results in an an empty element at the end HOT 3
- Byte value of length 32b results in decoding error using 'decode' HOT 2
- Decoding an array type returns a tuple instead of list HOT 5
- `ImportError: cannot import name 'getargspec' from 'inspect'` in Python >= 3.11 due to outdated `parsimonious` dependency version
- Wrong encoding output when using uint256[] HOT 1
- Decoding arbitrary length bytes fails due to expected padding HOT 2
- encoding tuple with nested tuple containing dynamic types HOT 3
- [Project Management] When will eth-abi>=4.0.0 be released? HOT 2
- Dependency errors for newer versions of uth-utils>=2.0.0 and eth-abi>=3.0.0
- Different behaviour: `encode_single` vs `encode` HOT 9
- typing/linting tools review
- Add utility method for getting an acceptable byte range from a list of ABI types
- OverflowError: Python int too large to convert to C ssize_t HOT 4
- decode failing on input that is not divided by 32 HOT 1
- Replace `functools.lru_cache`
- OverflowError when decode an event data with empty fields HOT 4
- Decode input data with bad padding
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from eth-abi.