Comments (9)
👍 for adding both
from eth-abi.
So that would just be something like this?
def is_valid_type(self, typ):
if coder_found_for_type:
return True
else:
return False
def validate_type(self, typ):
if coder_found_for_type:
return
else:
raise ValidationError(...)
from eth-abi.
Yeah, those implementations seem on-par with what I was thinking. Worth evaluating whether those would suffice for the linked eth-account
issue since that was the primary motivation for this.
from eth-abi.
I was looking into implementing a has_encoder
method on the ABIRegistry
class just now. That would return True
or False
depending on if a given type string has an encoder in the registry. However, it's making me realize that the granularity of errors throw by the PredicateMapping
class isn't great. Ideally, I would have a PredicateMappingError
class and at least two subclasses of that for the purposes of that new method. Those would be something like NoEntriesFound
and MultipleEntriesFound
. Then I could catch the NoEntriesFound
error specifically in the has_encoder
method. I know that you two have voiced a preference for using built-in error types but, in this case, I don't think that's going to work terribly well. I'll just go ahead and proceed with custom error types unless I hear any strong objections to that plan.
from eth-abi.
Or, we could subclass ValueError
to keep things backwards compatible but that just feels weird.
from eth-abi.
You can do the subclass approach with the plan to break that link in the next major version bump. In general I'm a fan of custom exceptions for things that a user would want to catch and only using things like ValueError
or TypeError
for things that are true programmer mistakes and not things that they should encounter during runtime (and thus that they shouldn't need to differentiate between exception types)
from eth-abi.
Just made PR #128 to fix this.
from eth-abi.
#128 was merged, close this?
Note, I tracked this down via the following comment:
https://github.com/ethereum/eth-account/blob/a1e5ab2400ae6ed70d91a1226ec3643d27b29e56/eth_account/_utils/structured_data/hashing.py#L100
from eth-abi.
@fubuloubu Ahh, yeah. Thanks!
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 5
- 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 HOT 2
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.