GithubHelp home page GithubHelp logo

Comments (9)

carver avatar carver commented on August 25, 2024

👍 for adding both

from eth-abi.

davesque avatar davesque commented on August 25, 2024

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.

pipermerriam avatar pipermerriam commented on August 25, 2024

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.

davesque avatar davesque commented on August 25, 2024

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.

davesque avatar davesque commented on August 25, 2024

Or, we could subclass ValueError to keep things backwards compatible but that just feels weird.

from eth-abi.

pipermerriam avatar pipermerriam commented on August 25, 2024

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.

davesque avatar davesque commented on August 25, 2024

Just made PR #128 to fix this.

from eth-abi.

fubuloubu avatar fubuloubu commented on August 25, 2024

#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.

davesque avatar davesque commented on August 25, 2024

@fubuloubu Ahh, yeah. Thanks!

from eth-abi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.