def build_strict_registry() -> ABIRegistry: registry = default_registry.copy() registry.unregister('address') registry.unregister('bytes<M>') registry.unregister('bytes') registry.unregister('string') registry.register( BaseEquals('address'), AddressEncoder, decoding.AddressDecoder, label='address', ) registry.register( BaseEquals('bytes', with_sub=True), ExactLengthBytesEncoder, BytesDecoder, label='bytes<M>', ) registry.register( BaseEquals('bytes', with_sub=False), StrictByteStringEncoder, decoding.ByteStringDecoder, label='bytes', ) registry.register( BaseEquals('string'), TextStringEncoder, decoding.StringDecoder, label='string', ) return registry
def build_default_registry() -> ABIRegistry: # We make a copy here just to make sure that eth-abi's default registry is not # affected by our custom encoder subclasses registry = default_registry.copy() registry.unregister('address') registry.unregister('bytes<M>') registry.unregister('bytes') registry.unregister('string') registry.register( BaseEquals('address'), AddressEncoder, decoding.AddressDecoder, label='address', ) registry.register( BaseEquals('bytes', with_sub=True), BytesEncoder, decoding.BytesDecoder, label='bytes<M>', ) registry.register( BaseEquals('bytes', with_sub=False), ByteStringEncoder, decoding.ByteStringDecoder, label='bytes', ) registry.register( BaseEquals('string'), TextStringEncoder, decoding.StringDecoder, label='string', ) return registry
def validate_value(cls, value): if is_bytes(value): try: value = to_text(value) except UnicodeDecodeError: cls.invalidate_value( value, msg='not decodable as unicode string', ) super().validate_value(value) # We make a copy here just to make sure that eth-abi's default registry is not # affected by our custom encoder subclasses registry = default_registry.copy() registry.unregister('address') registry.unregister('bytes<M>') registry.unregister('bytes') registry.unregister('string') registry.register( BaseEquals('address'), AddressEncoder, decoding.AddressDecoder, label='address', ) registry.register( BaseEquals('bytes', with_sub=True), BytesEncoder, decoding.BytesDecoder, label='bytes<M>',