140 lines
2.9 KiB
Python
140 lines
2.9 KiB
Python
from ...parsimonious import (
|
|
ParseError
|
|
)
|
|
|
|
|
|
class EncodingError(Exception):
|
|
"""
|
|
Base exception for any error that occurs during encoding.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class EncodingTypeError(EncodingError):
|
|
"""
|
|
Raised when trying to encode a python value whose type is not supported for
|
|
the output ABI type.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class IllegalValue(EncodingError):
|
|
"""
|
|
Raised when trying to encode a python value with the correct type but with
|
|
a value that is not considered legal for the output ABI type.
|
|
|
|
Example:
|
|
|
|
.. code-block:: python
|
|
|
|
fixed128x19_encoder(Decimal('NaN')) # cannot encode NaN
|
|
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class ValueOutOfBounds(IllegalValue):
|
|
"""
|
|
Raised when trying to encode a python value with the correct type but with
|
|
a value that appears outside the range of valid values for the output ABI
|
|
type.
|
|
|
|
Example:
|
|
|
|
.. code-block:: python
|
|
|
|
ufixed8x1_encoder(Decimal('25.6')) # out of bounds
|
|
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class DecodingError(Exception):
|
|
"""
|
|
Base exception for any error that occurs during decoding.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class InsufficientDataBytes(DecodingError):
|
|
"""
|
|
Raised when there are insufficient data to decode a value for a given ABI
|
|
type.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class NonEmptyPaddingBytes(DecodingError):
|
|
"""
|
|
Raised when the padding bytes of an ABI value are malformed.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class ParseError(ParseError):
|
|
"""
|
|
Raised when an ABI type string cannot be parsed.
|
|
"""
|
|
|
|
def __str__(self):
|
|
return "Parse error at '{}' (column {}) in type string '{}'".format(
|
|
self.text[self.pos : self.pos + 5],
|
|
self.column(),
|
|
self.text,
|
|
)
|
|
|
|
|
|
class ABITypeError(ValueError):
|
|
"""
|
|
Raised when a parsed ABI type has inconsistent properties; for example,
|
|
when trying to parse the type string ``'uint7'`` (which has a bit-width
|
|
that is not congruent with zero modulo eight).
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class PredicateMappingError(Exception):
|
|
"""
|
|
Raised when an error occurs in a registry's internal mapping.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class NoEntriesFound(ValueError, PredicateMappingError):
|
|
"""
|
|
Raised when no registration is found for a type string in a registry's
|
|
internal mapping.
|
|
|
|
.. warning::
|
|
|
|
In a future version of ``eth-abi``, this error class will no longer
|
|
inherit from ``ValueError``.
|
|
"""
|
|
|
|
pass
|
|
|
|
|
|
class MultipleEntriesFound(ValueError, PredicateMappingError):
|
|
"""
|
|
Raised when multiple registrations are found for a type string in a
|
|
registry's internal mapping. This error is non-recoverable and indicates
|
|
that a registry was configured incorrectly. Registrations are expected to
|
|
cover completely distinct ranges of type strings.
|
|
|
|
.. warning::
|
|
|
|
In a future version of ``eth-abi``, this error class will no longer
|
|
inherit from ``ValueError``.
|
|
"""
|
|
|
|
pass
|