pipermerriam/ethereum-function-signature-registry

Error on non-standard argument type in functino signature

pipermerriam opened this issue · 0 comments

What is wrong?

Traceback (most recent call last):
  File "/home/web/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python3.7/contextlib.py", line 74, in inner
    return func(*args, **kwds)
  File "/home/web/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/web/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/web/venv/lib/python3.7/site-packages/rest_framework/views.py", line 466, in dispatch
    response = self.handle_exception(exc)
  File "/home/web/venv/lib/python3.7/site-packages/rest_framework/views.py", line 463, in dispatch
    response = handler(request, *args, **kwargs)
  File "./func_sig_registry/registry/views.py", line 87, in post
    if not serializer.is_valid():
  File "/home/web/venv/lib/python3.7/site-packages/rest_framework/serializers.py", line 213, in is_valid
    self._validated_data = self.run_validation(self.initial_data)
  File "/home/web/venv/lib/python3.7/site-packages/rest_framework/serializers.py", line 407, in run_validation
    value = self.to_internal_value(data)
  File "/home/web/venv/lib/python3.7/site-packages/rest_framework/serializers.py", line 439, in to_internal_value
    validated_value = validate_method(validated_value)
  File "./func_sig_registry/registry/forms.py", line 34, in validate_text_signature
    return normalize_function_signature(value)
  File "./func_sig_registry/utils/solidity.py", line 204, in normalize_function_signature
    raise ValueError('function args contain non-standard types') from e
ValueError: function args contain non-standard typesTraceback (most recent call last):
  File "./func_sig_registry/utils/solidity.py", line 200, in normalize_function_signature
    validate_standard_type(args_tuple_type)
  File "./func_sig_registry/utils/solidity.py", line 156, in validate_standard_type
    validate_standard_type(t)
  File "./func_sig_registry/utils/solidity.py", line 151, in validate_standard_type
    f'type "{abi_type.to_type_str()}" '
ABITypeError: type "byte32" has invalid base "byte"

How can it be fixed

Catch this exception and translate it into a friendly user facing error message on the form.