faster-eth-abi 5.2.25__cp311-cp311-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- faster_eth_abi/__init__.py +17 -0
- faster_eth_abi/_codec.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/_codec.py +83 -0
- faster_eth_abi/_decoding.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/_decoding.py +371 -0
- faster_eth_abi/_encoding.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/_encoding.py +514 -0
- faster_eth_abi/_grammar.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/_grammar.py +389 -0
- faster_eth_abi/abi.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/abi.py +17 -0
- faster_eth_abi/base.py +45 -0
- faster_eth_abi/codec.py +2809 -0
- faster_eth_abi/constants.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/constants.py +7 -0
- faster_eth_abi/decoding.py +555 -0
- faster_eth_abi/encoding.py +738 -0
- faster_eth_abi/exceptions.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/exceptions.py +127 -0
- faster_eth_abi/from_type_str.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/from_type_str.py +141 -0
- faster_eth_abi/grammar.py +179 -0
- faster_eth_abi/io.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/io.py +137 -0
- faster_eth_abi/packed.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/packed.py +19 -0
- faster_eth_abi/py.typed +0 -0
- faster_eth_abi/registry.py +758 -0
- faster_eth_abi/tools/__init__.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/tools/__init__.py +3 -0
- faster_eth_abi/tools/_strategies.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/tools/_strategies.py +247 -0
- faster_eth_abi/typing.py +4627 -0
- faster_eth_abi/utils/__init__.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/__init__.py +0 -0
- faster_eth_abi/utils/localcontext.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/localcontext.py +49 -0
- faster_eth_abi/utils/numeric.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/numeric.py +117 -0
- faster_eth_abi/utils/padding.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/padding.py +22 -0
- faster_eth_abi/utils/string.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/string.py +19 -0
- faster_eth_abi/utils/validation.cpython-311-x86_64-linux-musl.so +0 -0
- faster_eth_abi/utils/validation.py +18 -0
- faster_eth_abi-5.2.25.dist-info/METADATA +134 -0
- faster_eth_abi-5.2.25.dist-info/RECORD +50 -0
- faster_eth_abi-5.2.25.dist-info/WHEEL +5 -0
- faster_eth_abi-5.2.25.dist-info/top_level.txt +2 -0
- faster_eth_abi__mypyc.cpython-311-x86_64-linux-musl.so +0 -0
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import decimal
|
|
2
|
+
from decimal import (
|
|
3
|
+
Context,
|
|
4
|
+
)
|
|
5
|
+
from types import (
|
|
6
|
+
TracebackType,
|
|
7
|
+
)
|
|
8
|
+
from typing import (
|
|
9
|
+
Final,
|
|
10
|
+
Optional,
|
|
11
|
+
Type,
|
|
12
|
+
TypeVar,
|
|
13
|
+
final,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
from faster_eth_abi.utils.numeric import (
|
|
17
|
+
abi_decimal_context,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
_TExc = TypeVar("_TExc", bound=BaseException)
|
|
22
|
+
|
|
23
|
+
getcontext: Final = decimal.getcontext
|
|
24
|
+
setcontext: Final = decimal.setcontext
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@final
|
|
28
|
+
class _DecimalContextManager:
|
|
29
|
+
"""Context manager class to support decimal.localcontext().
|
|
30
|
+
|
|
31
|
+
Sets a copy of the supplied context in __enter__() and restores
|
|
32
|
+
the previous decimal context in __exit__()
|
|
33
|
+
"""
|
|
34
|
+
saved_context: Context
|
|
35
|
+
def __init__(self, new_context: Context) -> None:
|
|
36
|
+
self.new_context: Final = new_context.copy()
|
|
37
|
+
def __enter__(self) -> Context:
|
|
38
|
+
self.saved_context = getcontext()
|
|
39
|
+
setcontext(self.new_context)
|
|
40
|
+
return self.new_context
|
|
41
|
+
def __exit__(
|
|
42
|
+
self,
|
|
43
|
+
t: Optional[Type[_TExc]],
|
|
44
|
+
v: Optional[_TExc],
|
|
45
|
+
tb: Optional[TracebackType],
|
|
46
|
+
) -> None:
|
|
47
|
+
setcontext(self.saved_context)
|
|
48
|
+
|
|
49
|
+
DECIMAL_CONTEXT: Final = _DecimalContextManager(abi_decimal_context)
|
|
Binary file
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import decimal
|
|
2
|
+
from typing import (
|
|
3
|
+
Callable,
|
|
4
|
+
Dict,
|
|
5
|
+
Final,
|
|
6
|
+
Tuple,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
ABI_DECIMAL_PREC: Final = 999
|
|
10
|
+
|
|
11
|
+
abi_decimal_context: Final = decimal.Context(prec=ABI_DECIMAL_PREC)
|
|
12
|
+
decimal_localcontext: Final = decimal.localcontext
|
|
13
|
+
|
|
14
|
+
ZERO: Final = decimal.Decimal(0)
|
|
15
|
+
TEN: Final = decimal.Decimal(10)
|
|
16
|
+
|
|
17
|
+
Decimal: Final = decimal.Decimal
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def ceil32(x: int) -> int:
|
|
21
|
+
remainder = x % 32
|
|
22
|
+
return x if remainder == 0 else x + 32 - remainder
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
_unsigned_integer_bounds_cache: Final[Dict[int, Tuple[int, int]]] = {}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def compute_unsigned_integer_bounds(num_bits: int) -> Tuple[int, int]:
|
|
29
|
+
bounds = _unsigned_integer_bounds_cache.get(num_bits)
|
|
30
|
+
if bounds is None:
|
|
31
|
+
bounds = 0, 2**num_bits - 1
|
|
32
|
+
_unsigned_integer_bounds_cache[num_bits] = bounds
|
|
33
|
+
return bounds
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
_signed_integer_bounds_cache: Final[Dict[int, Tuple[int, int]]] = {}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def compute_signed_integer_bounds(num_bits: int) -> Tuple[int, int]:
|
|
40
|
+
bounds = _signed_integer_bounds_cache.get(num_bits)
|
|
41
|
+
if bounds is None:
|
|
42
|
+
overflow_at = 2 ** (num_bits - 1)
|
|
43
|
+
min_value = -overflow_at
|
|
44
|
+
max_value = overflow_at - 1
|
|
45
|
+
bounds = min_value, max_value
|
|
46
|
+
_signed_integer_bounds_cache[num_bits] = bounds
|
|
47
|
+
return bounds
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
_unsigned_fixed_bounds_cache: Final[Dict[Tuple[int, int], decimal.Decimal]] = {}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def compute_unsigned_fixed_bounds(
|
|
54
|
+
num_bits: int,
|
|
55
|
+
frac_places: int,
|
|
56
|
+
) -> Tuple[decimal.Decimal, decimal.Decimal]:
|
|
57
|
+
upper = _unsigned_fixed_bounds_cache.get((num_bits, frac_places))
|
|
58
|
+
if upper is None:
|
|
59
|
+
int_upper = 2**num_bits - 1
|
|
60
|
+
|
|
61
|
+
with decimal_localcontext(abi_decimal_context):
|
|
62
|
+
upper = Decimal(int_upper) * TEN**-frac_places
|
|
63
|
+
|
|
64
|
+
_unsigned_fixed_bounds_cache[(num_bits, frac_places)] = upper
|
|
65
|
+
|
|
66
|
+
return ZERO, upper
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
_signed_fixed_bounds_cache: Final[
|
|
70
|
+
Dict[Tuple[int, int], Tuple[decimal.Decimal, decimal.Decimal]]
|
|
71
|
+
] = {}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def compute_signed_fixed_bounds(
|
|
75
|
+
num_bits: int,
|
|
76
|
+
frac_places: int,
|
|
77
|
+
) -> Tuple[decimal.Decimal, decimal.Decimal]:
|
|
78
|
+
bounds = _signed_fixed_bounds_cache.get((num_bits, frac_places))
|
|
79
|
+
if bounds is None:
|
|
80
|
+
int_lower, int_upper = compute_signed_integer_bounds(num_bits)
|
|
81
|
+
|
|
82
|
+
with decimal_localcontext(abi_decimal_context):
|
|
83
|
+
exp = TEN**-frac_places
|
|
84
|
+
lower = Decimal(int_lower) * exp
|
|
85
|
+
upper = Decimal(int_upper) * exp
|
|
86
|
+
|
|
87
|
+
bounds = lower, upper
|
|
88
|
+
_signed_fixed_bounds_cache[(num_bits, frac_places)] = bounds
|
|
89
|
+
|
|
90
|
+
return bounds
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def scale_places(places: int) -> Callable[[decimal.Decimal], decimal.Decimal]:
|
|
94
|
+
"""
|
|
95
|
+
Returns a function that shifts the decimal point of decimal values to the
|
|
96
|
+
right by ``places`` places.
|
|
97
|
+
"""
|
|
98
|
+
if not isinstance(places, int):
|
|
99
|
+
raise ValueError(
|
|
100
|
+
f"Argument `places` must be int. Got value {places} "
|
|
101
|
+
f"of type {type(places)}.",
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
with decimal_localcontext(abi_decimal_context):
|
|
105
|
+
scaling_factor = TEN**-places
|
|
106
|
+
|
|
107
|
+
def f(x: decimal.Decimal) -> decimal.Decimal:
|
|
108
|
+
with decimal_localcontext(abi_decimal_context):
|
|
109
|
+
return x * scaling_factor
|
|
110
|
+
|
|
111
|
+
places_repr = f"Eneg{places}" if places > 0 else f"Epos{-places}"
|
|
112
|
+
func_name = f"scale_by_{places_repr}"
|
|
113
|
+
|
|
114
|
+
f.__name__ = func_name
|
|
115
|
+
f.__qualname__ = func_name
|
|
116
|
+
|
|
117
|
+
return f
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
def zpad(value: bytes, length: int) -> bytes:
|
|
2
|
+
return value.rjust(length, b"\x00")
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def zpad32(value: bytes) -> bytes:
|
|
6
|
+
return zpad(value, length=32)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def zpad_right(value: bytes, length: int) -> bytes:
|
|
10
|
+
return value.ljust(length, b"\x00")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def zpad32_right(value: bytes) -> bytes:
|
|
14
|
+
return zpad_right(value, length=32)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def fpad(value: bytes, length: int) -> bytes:
|
|
18
|
+
return value.rjust(length, b"\xff")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def fpad32(value: bytes) -> bytes:
|
|
22
|
+
return fpad(value, length=32)
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def abbr(value: Any, limit: int = 79) -> str:
|
|
7
|
+
"""
|
|
8
|
+
Converts a value into its string representation and abbreviates that
|
|
9
|
+
representation based on the given length `limit` if necessary.
|
|
10
|
+
"""
|
|
11
|
+
rep = repr(value)
|
|
12
|
+
|
|
13
|
+
if len(rep) > limit:
|
|
14
|
+
if limit < 3:
|
|
15
|
+
raise ValueError("Abbreviation limit may not be less than 3")
|
|
16
|
+
|
|
17
|
+
rep = rep[: limit - 3] + "..."
|
|
18
|
+
|
|
19
|
+
return rep
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import (
|
|
2
|
+
Any,
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def validate_bytes_param(param: Any, param_name: str) -> None:
|
|
7
|
+
if not isinstance(param, (bytes, bytearray)):
|
|
8
|
+
raise TypeError(
|
|
9
|
+
f"The `{param_name}` value must be of bytes type. Got {type(param)}"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def validate_list_like_param(param: Any, param_name: str) -> None:
|
|
14
|
+
if not isinstance(param, (list, tuple)):
|
|
15
|
+
raise TypeError(
|
|
16
|
+
f"The `{param_name}` value type must be one of list or tuple. "
|
|
17
|
+
f"Got {type(param)}"
|
|
18
|
+
)
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: faster_eth_abi
|
|
3
|
+
Version: 5.2.25
|
|
4
|
+
Summary: A ~2-6x faster fork of eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding. Implemented in C.
|
|
5
|
+
Home-page: https://github.com/BobTheBuidler/faster-eth-abi
|
|
6
|
+
Author: The Ethereum Foundation
|
|
7
|
+
Author-email: snakecharmers@ethereum.org
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Documentation, https://eth-abi.readthedocs.io/en/stable/
|
|
10
|
+
Project-URL: Release Notes, https://github.com/BobTheBuidler/faster-eth-abi/releases
|
|
11
|
+
Project-URL: Issues, https://github.com/BobTheBuidler/faster-eth-abi/issues
|
|
12
|
+
Project-URL: Source - Precompiled (.py), https://github.com/BobTheBuidler/faster-eth-utils/tree/master/faster_eth_utils
|
|
13
|
+
Project-URL: Source - Compiled (.c), https://github.com/BobTheBuidler/faster-eth-utils/tree/master/build
|
|
14
|
+
Project-URL: Benchmarks, https://github.com/BobTheBuidler/faster-eth-utils/tree/master/benchmarks
|
|
15
|
+
Project-URL: Benchmarks - Results, https://github.com/BobTheBuidler/faster-eth-utils/tree/master/benchmarks/results
|
|
16
|
+
Project-URL: Original, https://github.com/ethereum/eth-abi
|
|
17
|
+
Keywords: ethereum
|
|
18
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
19
|
+
Classifier: Intended Audience :: Developers
|
|
20
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
21
|
+
Classifier: Natural Language :: English
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
28
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
29
|
+
Requires-Python: >=3.10, <4
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
Requires-Dist: cchecksum<0.5,>=0.3.9
|
|
32
|
+
Requires-Dist: faster-eth-utils==5.3.24
|
|
33
|
+
Requires-Dist: eth-abi==5.2.0
|
|
34
|
+
Requires-Dist: eth-typing==5.2.1
|
|
35
|
+
Requires-Dist: mypy_extensions
|
|
36
|
+
Requires-Dist: parsimonious<0.11.0,>=0.10.0
|
|
37
|
+
Provides-Extra: dev
|
|
38
|
+
Requires-Dist: mypy==1.19.1; extra == "dev"
|
|
39
|
+
Requires-Dist: tqdm; extra == "dev"
|
|
40
|
+
Requires-Dist: build>=0.9.0; extra == "dev"
|
|
41
|
+
Requires-Dist: bump_my_version>=0.19.0; extra == "dev"
|
|
42
|
+
Requires-Dist: ipython; extra == "dev"
|
|
43
|
+
Requires-Dist: mypy==1.19.1; extra == "dev"
|
|
44
|
+
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
|
|
45
|
+
Requires-Dist: tox>=4.0.0; extra == "dev"
|
|
46
|
+
Requires-Dist: twine; extra == "dev"
|
|
47
|
+
Requires-Dist: wheel; extra == "dev"
|
|
48
|
+
Requires-Dist: pytest-benchmark; extra == "dev"
|
|
49
|
+
Requires-Dist: sphinx>=6.0.0; extra == "dev"
|
|
50
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
|
|
51
|
+
Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "dev"
|
|
52
|
+
Requires-Dist: towncrier<26,>=24; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
54
|
+
Requires-Dist: hypothesis<6.108.7,>=6.22.0; extra == "dev"
|
|
55
|
+
Requires-Dist: pytest-timeout>=2.0.0; extra == "dev"
|
|
56
|
+
Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
|
|
57
|
+
Requires-Dist: pytest-pythonpath>=0.7.1; extra == "dev"
|
|
58
|
+
Requires-Dist: eth-hash[pycryptodome]; extra == "dev"
|
|
59
|
+
Provides-Extra: docs
|
|
60
|
+
Requires-Dist: sphinx>=6.0.0; extra == "docs"
|
|
61
|
+
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
|
|
62
|
+
Requires-Dist: sphinx_rtd_theme>=1.0.0; extra == "docs"
|
|
63
|
+
Requires-Dist: towncrier<26,>=24; extra == "docs"
|
|
64
|
+
Provides-Extra: test
|
|
65
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
66
|
+
Requires-Dist: hypothesis<6.108.7,>=6.22.0; extra == "test"
|
|
67
|
+
Requires-Dist: pytest-timeout>=2.0.0; extra == "test"
|
|
68
|
+
Requires-Dist: pytest-xdist>=2.4.0; extra == "test"
|
|
69
|
+
Requires-Dist: pytest-pythonpath>=0.7.1; extra == "test"
|
|
70
|
+
Requires-Dist: eth-hash[pycryptodome]; extra == "test"
|
|
71
|
+
Provides-Extra: tools
|
|
72
|
+
Requires-Dist: hypothesis<6.108.7,>=6.22.0; extra == "tools"
|
|
73
|
+
Provides-Extra: codspeed
|
|
74
|
+
Requires-Dist: pytest>=7.0.0; extra == "codspeed"
|
|
75
|
+
Requires-Dist: pytest-codspeed<4.3,>=4.2; extra == "codspeed"
|
|
76
|
+
Requires-Dist: pytest-test-groups; extra == "codspeed"
|
|
77
|
+
Provides-Extra: benchmark
|
|
78
|
+
Requires-Dist: pytest>=7.0.0; extra == "benchmark"
|
|
79
|
+
Requires-Dist: pytest-codspeed<4.3,>=4.2; extra == "benchmark"
|
|
80
|
+
Requires-Dist: pytest-test-groups; extra == "benchmark"
|
|
81
|
+
Provides-Extra: mypy
|
|
82
|
+
Requires-Dist: mypy==1.19.1; extra == "mypy"
|
|
83
|
+
Requires-Dist: tqdm; extra == "mypy"
|
|
84
|
+
Dynamic: author
|
|
85
|
+
Dynamic: author-email
|
|
86
|
+
Dynamic: classifier
|
|
87
|
+
Dynamic: description
|
|
88
|
+
Dynamic: description-content-type
|
|
89
|
+
Dynamic: home-page
|
|
90
|
+
Dynamic: keywords
|
|
91
|
+
Dynamic: license
|
|
92
|
+
Dynamic: project-url
|
|
93
|
+
Dynamic: provides-extra
|
|
94
|
+
Dynamic: requires-dist
|
|
95
|
+
Dynamic: requires-python
|
|
96
|
+
Dynamic: summary
|
|
97
|
+
|
|
98
|
+
### I forked eth-abi, added comprehensive type annotations, and compiled it to C. It does the same stuff, now ~2-6x faster.
|
|
99
|
+
|
|
100
|
+
[](https://pypi.org/project/faster-eth-abi/)
|
|
101
|
+
[](https://pypistats.org/packages/faster-eth-abi)
|
|
102
|
+
[](https://codspeed.io/BobTheBuidler/faster-eth-abi)
|
|
103
|
+
|
|
104
|
+
##### This fork will be kept up-to-date with [eth-abi](https://github.com/ethereum/eth-abi). I will pull updates as they are released and push new [faster-eth-abi](https://github.com/BobTheBuidler/faster-eth-abi) releases to [PyPI](https://pypi.org/project/faster-eth-abi/).
|
|
105
|
+
|
|
106
|
+
##### Starting in [v5.2.12](https://github.com/BobTheBuidler/faster-eth-abi/releases/tag/v5.2.12), all `faster-eth-abi` Exception classes inherit from the matching Exception class in `eth-abi`, so porting to `faster-eth-abi` does not require any change to your existing exception handlers. All existing exception handling in your codebase will continue to work as it did when originaly implemented.
|
|
107
|
+
|
|
108
|
+
##### We benchmark `faster-eth-abi` against the original `eth-abi` for your convenience. [See results](https://github.com/BobTheBuidler/faster-eth-abi/tree/master/benchmarks/results).
|
|
109
|
+
|
|
110
|
+
##### You can find the compiled C code and header files in the [build](https://github.com/BobTheBuidler/faster-eth-abi/tree/master/build) directory.
|
|
111
|
+
|
|
112
|
+
###### You may also be interested in: [faster-web3.py](https://github.com/BobTheBuidler/faster-web3.py/), [faster-hexbytes](https://github.com/BobTheBuidler/faster-hexbytes/), and [faster-eth-utils](https://github.com/BobTheBuidler/faster-eth-utils/)
|
|
113
|
+
|
|
114
|
+
##### The original eth-abi readme is below:
|
|
115
|
+
|
|
116
|
+
# Ethereum Contract Interface (ABI) Utility
|
|
117
|
+
|
|
118
|
+
[](https://discord.gg/GHryRvPB84)
|
|
119
|
+
[](https://circleci.com/gh/ethereum/faster-eth-abi)
|
|
120
|
+
[](https://badge.fury.io/py/faster-eth-abi)
|
|
121
|
+
[](https://pypi.python.org/pypi/faster-eth-abi)
|
|
122
|
+
[](https://faster-eth-abi.readthedocs.io/en/latest/?badge=latest)
|
|
123
|
+
|
|
124
|
+
Python utilities for working with Ethereum ABI definitions, especially encoding and decoding
|
|
125
|
+
|
|
126
|
+
Read the [documentation](https://faster-eth-abi.readthedocs.io/).
|
|
127
|
+
|
|
128
|
+
View the [change log](https://faster-eth-abi.readthedocs.io/en/latest/release_notes.html).
|
|
129
|
+
|
|
130
|
+
## Installation
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
python -m pip install faster-eth-abi
|
|
134
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
faster_eth_abi__mypyc.cpython-311-x86_64-linux-musl.so,sha256=G2a7C2h7mOw5xJDk5obfDlK3hlbVGPve5w0ZyffF8us,982472
|
|
2
|
+
faster_eth_abi/__init__.py,sha256=XfoRs5UaVoGqhhn2WSulibAqncO0VpJzauC8CS6iChU,315
|
|
3
|
+
faster_eth_abi/_codec.cpython-311-x86_64-linux-musl.so,sha256=70nA3sDD-yr-vtjhoAPcy0Tlbu7N_57rIBcEuwTpVa4,17624
|
|
4
|
+
faster_eth_abi/_codec.py,sha256=D_Vn5gtUWZi2ltiqKfH5qm5xr1w8k9CAwDRWSnzOINE,2514
|
|
5
|
+
faster_eth_abi/_decoding.cpython-311-x86_64-linux-musl.so,sha256=xjKOz65MTtCrnDzzy6iGDkbhR1R7vdkcWo75rjZZZMI,17624
|
|
6
|
+
faster_eth_abi/_decoding.py,sha256=Oz5XtUcIxOTMGUiHMTD2H5l_M1lWpNHIaR5XApl8naU,11800
|
|
7
|
+
faster_eth_abi/_encoding.cpython-311-x86_64-linux-musl.so,sha256=w4Na0ncby1zv2Ed8cdyLGtLwZi0GrCLH3ffNC-nl7lc,17624
|
|
8
|
+
faster_eth_abi/_encoding.py,sha256=MI5gJBHEljVSfitpNyRaY3SayBCCz-P_cPxWSMpZB-s,17846
|
|
9
|
+
faster_eth_abi/_grammar.cpython-311-x86_64-linux-musl.so,sha256=juaca2N9LG_jUPkvcYlXH4uePCFHeV6BkUS3UK4ss0c,17624
|
|
10
|
+
faster_eth_abi/_grammar.py,sha256=MD-4e9wq0NSsOuwOAebOGqdx0KrgJ9rDNkgXS90KT5s,11292
|
|
11
|
+
faster_eth_abi/abi.cpython-311-x86_64-linux-musl.so,sha256=1-H-mEEjShEFNwVUpNT3S1-qTIPpjP-_hYzjKVJPhMQ,17608
|
|
12
|
+
faster_eth_abi/abi.py,sha256=HzkXy0EjHraNbbC5l-EhVqVcx5vy8tcykiKIO4Fp1xw,366
|
|
13
|
+
faster_eth_abi/base.py,sha256=j7IVwKBATnjfOnA58FjhPH94KibVkuWsAMBe6fsNiI8,1337
|
|
14
|
+
faster_eth_abi/codec.py,sha256=A04ZzXppz3QK0RzZcsDMoYxuH1eGx6fzOqGGGdNu62c,66624
|
|
15
|
+
faster_eth_abi/constants.cpython-311-x86_64-linux-musl.so,sha256=Gf3tI-pdrzPjAPjfwbHrcfLJ-0jv20FnjI0_3TWZqK4,17624
|
|
16
|
+
faster_eth_abi/constants.py,sha256=uJbuND1rFs_Pexuz58TKd-BJPuoA6hLqFEX6kkDS-dE,107
|
|
17
|
+
faster_eth_abi/decoding.py,sha256=5hoyLGxJUOnb6YoXvbPxlBFGDV0VdUEYZ3n9jpPHNCw,16527
|
|
18
|
+
faster_eth_abi/encoding.py,sha256=r6bRr4si0o6tCm-ccGDgkeqmH25fl3-3soHl5b-WXek,21327
|
|
19
|
+
faster_eth_abi/exceptions.cpython-311-x86_64-linux-musl.so,sha256=J_BKvnsL-VHLnbffMGA1fLfvDnwrC2mhloIk7t0XUy0,17640
|
|
20
|
+
faster_eth_abi/exceptions.py,sha256=I_uWNRq8a1UcWNahYDBJd1rKbET1bYTiTbDf3R4eFOI,3646
|
|
21
|
+
faster_eth_abi/from_type_str.cpython-311-x86_64-linux-musl.so,sha256=JRVVcFWXyBP6BfBRVRfY88fS49mOk_5rD-VEP4WhHas,17640
|
|
22
|
+
faster_eth_abi/from_type_str.py,sha256=U3Xl7zjRL4C7J0t1aGBpBzhEqGo7BS8sxLYnF5pBu4Y,4490
|
|
23
|
+
faster_eth_abi/grammar.py,sha256=9el-_25ZlAQZmvJ7LB707hh5hIBgo1Xb6KPnMttLk5E,4663
|
|
24
|
+
faster_eth_abi/io.cpython-311-x86_64-linux-musl.so,sha256=13j_43ZUOmi6bzRoo5cq9A1wivIwGFy4azom33IlVx8,17608
|
|
25
|
+
faster_eth_abi/io.py,sha256=x6x1ZMrN1GEx_C69eXRhRIsgiCduaMp2XIcaUq2Jfsk,5089
|
|
26
|
+
faster_eth_abi/packed.cpython-311-x86_64-linux-musl.so,sha256=Zxkb-Tp1CthFjmp9dznt86pkUmxXWjujBhmU6-8eTwE,17624
|
|
27
|
+
faster_eth_abi/packed.py,sha256=YN1k8heenRMVQQsPEKAYfpd1XhWNF3mOn4sbaR4HiYE,418
|
|
28
|
+
faster_eth_abi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
faster_eth_abi/registry.py,sha256=zzSCz7oIIBBVX7WzVBU5j7vhfcLqKIlCrYHHXtmB7U0,23934
|
|
30
|
+
faster_eth_abi/typing.py,sha256=FIMFquzJeZrL6qslWhMlfdRbO95P851gt2lt3T5S16E,105020
|
|
31
|
+
faster_eth_abi/tools/__init__.cpython-311-x86_64-linux-musl.so,sha256=ArNgdDqWfbSNpBVT677I95kUo9ZnfSu62G5C97reeBo,17608
|
|
32
|
+
faster_eth_abi/tools/__init__.py,sha256=trtATEmgu4ctg04qkejbODDzvDSofgcVJ3rkzMP_hQE,51
|
|
33
|
+
faster_eth_abi/tools/_strategies.cpython-311-x86_64-linux-musl.so,sha256=bZOWDpVc7yadaoWj2MqeY1xZM2y5ZGaYSZpJ2dMmJ9Y,17648
|
|
34
|
+
faster_eth_abi/tools/_strategies.py,sha256=EymRvmfg_v0N7Xp5xmJVM9J7WkCm3iDm5TDchipHh0g,6333
|
|
35
|
+
faster_eth_abi/utils/__init__.cpython-311-x86_64-linux-musl.so,sha256=5egU-eUc9NJSY1L0U_B2-_ffNpUzCSkrI-vS_mkRl64,17608
|
|
36
|
+
faster_eth_abi/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
faster_eth_abi/utils/localcontext.cpython-311-x86_64-linux-musl.so,sha256=B69QJ94OMdF9m8HhR7kRufjcjUk7QGvBaC1UPEiFua0,17656
|
|
38
|
+
faster_eth_abi/utils/localcontext.py,sha256=094y3Yfk3AX-noDtcKisRytv9ejnFjetIwLyRIX6Kdk,1140
|
|
39
|
+
faster_eth_abi/utils/numeric.cpython-311-x86_64-linux-musl.so,sha256=FGPs7TY_6HmB-CnxhOo26UBzKLYRzAflCAsgEgNR7Rk,17632
|
|
40
|
+
faster_eth_abi/utils/numeric.py,sha256=fkdazLcgd7FN0JGSSyb6Jsx555QdgRf2N0mxrm6rGB4,3278
|
|
41
|
+
faster_eth_abi/utils/padding.cpython-311-x86_64-linux-musl.so,sha256=Sk-GSMKEsEmV6shVCI9PvuEHhyjzBU_GPjiy43krHoc,17632
|
|
42
|
+
faster_eth_abi/utils/padding.py,sha256=JBuFhdrvKWLrmmJBZ-a6pqbHWydAuiUBt2aBjCwVcVE,493
|
|
43
|
+
faster_eth_abi/utils/string.cpython-311-x86_64-linux-musl.so,sha256=65QhzIG_LIvp4N3bUHYujFex_diljMq-HPRG4wxsgUA,17632
|
|
44
|
+
faster_eth_abi/utils/string.py,sha256=fjsAR2C7Xlu5bHomxx5l4rlADFtByzGTQfugMTo8TQk,436
|
|
45
|
+
faster_eth_abi/utils/validation.cpython-311-x86_64-linux-musl.so,sha256=-__u89pC30AraFh04MxD89sSqQi_ZOKQLIiU_0gfpUs,17648
|
|
46
|
+
faster_eth_abi/utils/validation.py,sha256=NA2wRacYEBdkpQnZfmeDvzF-sHyy6NT2QzCFuBnYJVI,521
|
|
47
|
+
faster_eth_abi-5.2.25.dist-info/METADATA,sha256=bwtX3u3YMO9KgU3fQOYk25yCqU-Poe-S_tnEBYKWZJE,7274
|
|
48
|
+
faster_eth_abi-5.2.25.dist-info/WHEEL,sha256=J_Ko_zS6o8JXUfI9CaFd6O2wkMIFNryhqfb69cs30HY,113
|
|
49
|
+
faster_eth_abi-5.2.25.dist-info/top_level.txt,sha256=Y0kTTMPnPpssaR0jlmJwQ2XbkYXMEj_80Ewd7quo1Cg,37
|
|
50
|
+
faster_eth_abi-5.2.25.dist-info/RECORD,,
|
|
Binary file
|