faster-eth-abi 5.2.15__cp38-cp38-macosx_11_0_arm64.whl → 5.2.16__cp38-cp38-macosx_11_0_arm64.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.

Potentially problematic release.


This version of faster-eth-abi might be problematic. Click here for more details.

Files changed (48) hide show
  1. 29859a9e7da9d19bb98c__mypyc.cpython-38-darwin.so +0 -0
  2. faster_eth_abi/_codec.cpython-38-darwin.so +0 -0
  3. faster_eth_abi/_codec.py +6 -0
  4. faster_eth_abi/_decoding.cpython-38-darwin.so +0 -0
  5. faster_eth_abi/_decoding.py +28 -15
  6. faster_eth_abi/_encoding.cpython-38-darwin.so +0 -0
  7. faster_eth_abi/_encoding.py +7 -1
  8. faster_eth_abi/_grammar.cpython-38-darwin.so +0 -0
  9. faster_eth_abi/_grammar.py +5 -0
  10. faster_eth_abi/abi.cpython-38-darwin.so +0 -0
  11. faster_eth_abi/base.py +4 -0
  12. faster_eth_abi/codec.py +1261 -144
  13. faster_eth_abi/constants.cpython-38-darwin.so +0 -0
  14. faster_eth_abi/decoding.py +91 -47
  15. faster_eth_abi/encoding.py +51 -3
  16. faster_eth_abi/exceptions.py +5 -2
  17. faster_eth_abi/from_type_str.cpython-38-darwin.so +0 -0
  18. faster_eth_abi/from_type_str.py +4 -0
  19. faster_eth_abi/grammar.py +17 -19
  20. faster_eth_abi/io.py +4 -0
  21. faster_eth_abi/packed.cpython-38-darwin.so +0 -0
  22. faster_eth_abi/packed.py +4 -0
  23. faster_eth_abi/registry.py +98 -33
  24. faster_eth_abi/tools/__init__.cpython-38-darwin.so +0 -0
  25. faster_eth_abi/tools/_strategies.cpython-38-darwin.so +0 -0
  26. faster_eth_abi/typing.py +94 -10
  27. faster_eth_abi/utils/__init__.cpython-38-darwin.so +0 -0
  28. faster_eth_abi/utils/numeric.cpython-38-darwin.so +0 -0
  29. faster_eth_abi/utils/padding.cpython-38-darwin.so +0 -0
  30. faster_eth_abi/utils/string.cpython-38-darwin.so +0 -0
  31. faster_eth_abi/utils/validation.cpython-38-darwin.so +0 -0
  32. {faster_eth_abi-5.2.15.dist-info → faster_eth_abi-5.2.16.dist-info}/METADATA +12 -8
  33. faster_eth_abi-5.2.16.dist-info/RECORD +47 -0
  34. {faster_eth_abi-5.2.15.dist-info → faster_eth_abi-5.2.16.dist-info}/top_level.txt +0 -1
  35. benchmarks/__init__.py +0 -1
  36. benchmarks/batch.py +0 -9
  37. benchmarks/data.py +0 -313
  38. benchmarks/test_abi_benchmarks.py +0 -82
  39. benchmarks/test_decoding_benchmarks.py +0 -109
  40. benchmarks/test_encoding_benchmarks.py +0 -99
  41. benchmarks/test_grammar_benchmarks.py +0 -38
  42. benchmarks/test_io_benchmarks.py +0 -99
  43. benchmarks/test_packed_benchmarks.py +0 -41
  44. benchmarks/test_registry_benchmarks.py +0 -45
  45. benchmarks/type_strings.py +0 -26
  46. faster_eth_abi-5.2.15.dist-info/RECORD +0 -58
  47. {faster_eth_abi-5.2.15.dist-info → faster_eth_abi-5.2.16.dist-info}/LICENSE +0 -0
  48. {faster_eth_abi-5.2.15.dist-info → faster_eth_abi-5.2.16.dist-info}/WHEEL +0 -0
@@ -1,3 +1,7 @@
1
+ """Registry and predicate logic for ABI encoders and decoders.
2
+
3
+ Implements registration, lookup, and matching of encoders and decoders for ABI type strings.
4
+ """
1
5
  import abc
2
6
  from copy import (
3
7
  copy,
@@ -14,6 +18,7 @@ from typing import (
14
18
  Type,
15
19
  TypeVar,
16
20
  Union,
21
+ final,
17
22
  )
18
23
 
19
24
  from eth_typing import (
@@ -177,15 +182,21 @@ class PredicateMapping(Copyable, Generic[T]):
177
182
  return cpy
178
183
 
179
184
 
180
- class Predicate:
185
+ class Predicate(Generic[T]):
181
186
  """
182
187
  Represents a predicate function to be used for type matching in
183
188
  ``ABIRegistry``.
184
189
  """
185
190
 
186
- __slots__ = ()
191
+ __slots__ = ("_string", "__hash")
192
+
193
+ _string: Optional[str]
187
194
 
188
- def __call__(self, *args, **kwargs): # pragma: no cover
195
+ def __init__(self) -> None:
196
+ self._string = None
197
+ self.__hash = None
198
+
199
+ def __call__(self, arg: TypeStr) -> None:
189
200
  raise NotImplementedError("Must implement `__call__`")
190
201
 
191
202
  def __str__(self) -> str:
@@ -194,35 +205,47 @@ class Predicate:
194
205
  def __repr__(self) -> str:
195
206
  return f"<{type(self).__name__} {self}>"
196
207
 
197
- def __iter__(self) -> Iterator[Any]:
198
- for attr in self.__slots__:
199
- yield getattr(self, attr)
208
+ def __iter__(self) -> Iterator[T]:
209
+ raise NotImplementedError("must be implemented by subclass")
200
210
 
201
211
  def __hash__(self) -> int:
202
- return hash(tuple(self))
212
+ hashval = self.__hash
213
+ if hashval is None:
214
+ self.__hash = hashval = hash(tuple(self))
215
+ return hashval
203
216
 
204
- def __eq__(self, other: Any) -> bool:
217
+ def __eq__(self, other: "Predicate") -> bool:
205
218
  return type(self) is type(other) and tuple(self) == tuple(other)
206
219
 
207
220
 
208
- class Equals(Predicate):
221
+ @final
222
+ class Equals(Predicate[str]):
209
223
  """
210
224
  A predicate that matches any input equal to `value`.
211
225
  """
212
226
 
213
227
  __slots__ = ("value",)
214
228
 
215
- def __init__(self, value):
216
- self.value = value
229
+ def __init__(self, value: str) -> None:
230
+ super().__init__()
231
+ self.value: Final = value
217
232
 
218
- def __call__(self, other: Any) -> bool:
233
+ def __call__(self, other: TypeStr) -> bool:
219
234
  return self.value == other
220
235
 
221
236
  def __str__(self) -> str:
222
- return f"(== {self.value!r})"
237
+ # NOTE should this just be done at init time? is it always called?
238
+ string = self._string
239
+ if string is None:
240
+ self._string = string = f"(== {self.value!r})"
241
+ return string
242
+
243
+ def __iter__(self) -> Iterator[str]:
244
+ yield self.value
223
245
 
224
246
 
225
- class BaseEquals(Predicate):
247
+ @final
248
+ class BaseEquals(Predicate[Union[str, bool, None]]):
226
249
  """
227
250
  A predicate that matches a basic type string with a base component equal to
228
251
  `value` and no array component. If `with_sub` is `True`, the type string
@@ -233,9 +256,10 @@ class BaseEquals(Predicate):
233
256
 
234
257
  __slots__ = ("base", "with_sub")
235
258
 
236
- def __init__(self, base, *, with_sub=None):
237
- self.base = base
238
- self.with_sub = with_sub
259
+ def __init__(self, base: TypeStr, *, with_sub: Optional[bool] = None):
260
+ super().__init__()
261
+ self.base: Final = base
262
+ self.with_sub: Final = with_sub
239
263
 
240
264
  def __call__(self, type_str: TypeStr) -> bool:
241
265
  try:
@@ -247,10 +271,12 @@ class BaseEquals(Predicate):
247
271
  if abi_type.arrlist is not None:
248
272
  return False
249
273
 
250
- if self.with_sub is not None:
251
- if self.with_sub and abi_type.sub is None:
274
+ with_sub = self.with_sub
275
+ if with_sub is not None:
276
+ abi_subtype = abi_type.sub
277
+ if with_sub and abi_subtype is None:
252
278
  return False
253
- if not self.with_sub and abi_type.sub is not None:
279
+ if not with_sub and abi_subtype is not None:
254
280
  return False
255
281
 
256
282
  return abi_type.base == self.base
@@ -260,15 +286,21 @@ class BaseEquals(Predicate):
260
286
  return False
261
287
 
262
288
  def __str__(self) -> str:
263
- return (
264
- f"(base == {self.base!r}"
265
- + (
266
- ""
267
- if self.with_sub is None
268
- else (" and sub is not None" if self.with_sub else " and sub is None")
269
- )
270
- + ")"
271
- )
289
+ # NOTE should this just be done at init time? is it always called?
290
+ string = self._string
291
+ if string is None:
292
+ if self.with_sub is None:
293
+ string = f"(base == {self.base!r})"
294
+ elif self.with_sub:
295
+ string = f"(base == {self.base!r} and sub is not None)"
296
+ else:
297
+ string = f"(base == {self.base!r} and sub is None)"
298
+ self._string = string
299
+ return string
300
+
301
+ def __iter__(self) -> Iterator[Union[str, bool, None]]:
302
+ yield self.base
303
+ yield self.with_sub
272
304
 
273
305
 
274
306
  def has_arrlist(type_str: TypeStr) -> bool:
@@ -555,14 +587,35 @@ class ABIRegistry(Copyable, BaseRegistry):
555
587
 
556
588
  registry = ABIRegistry()
557
589
 
590
+ is_int = BaseEquals("int")
591
+ is_int8 = Equals("int8")
592
+ is_int16 = Equals("int16")
593
+ is_uint = BaseEquals("uint")
594
+ is_uint8 = Equals("uint8")
595
+ is_uint16 = Equals("uint16")
596
+
597
+ for size in (8, 16):
598
+ registry.register(
599
+ Equals(f"uint{size}"),
600
+ encoding.UnsignedIntegerEncoder,
601
+ decoding.UnsignedIntegerDecoder,
602
+ label=f"uint{size}",
603
+ )
604
+ registry.register(
605
+ Equals(f"int{size}"),
606
+ encoding.SignedIntegerEncoder,
607
+ decoding.SignedIntegerDecoder,
608
+ label=f"int{size}",
609
+ )
610
+
558
611
  registry.register(
559
- BaseEquals("uint"),
612
+ lambda s: is_uint(s) and not is_uint8(s) and not is_uint16(s),
560
613
  encoding.UnsignedIntegerEncoder,
561
614
  decoding.UnsignedIntegerDecoder,
562
615
  label="uint",
563
616
  )
564
617
  registry.register(
565
- BaseEquals("int"),
618
+ lambda s: is_int(s) and not is_int8(s) and not is_int16(s),
566
619
  encoding.SignedIntegerEncoder,
567
620
  decoding.SignedIntegerDecoder,
568
621
  label="int",
@@ -630,13 +683,25 @@ registry.register(
630
683
 
631
684
  registry_packed = ABIRegistry()
632
685
 
686
+ for size in (8, 16):
687
+ registry_packed.register_encoder(
688
+ Equals(f"uint{size}"),
689
+ encoding.PackedUnsignedIntegerEncoderCached,
690
+ label=f"uint{size}",
691
+ )
692
+ registry_packed.register_encoder(
693
+ Equals(f"int{size}"),
694
+ encoding.PackedSignedIntegerEncoderCached,
695
+ label=f"int{size}",
696
+ )
697
+
633
698
  registry_packed.register_encoder(
634
- BaseEquals("uint"),
699
+ lambda s: is_uint(s) and not is_uint8(s) and not is_uint16(s),
635
700
  encoding.PackedUnsignedIntegerEncoder,
636
701
  label="uint",
637
702
  )
638
703
  registry_packed.register_encoder(
639
- BaseEquals("int"),
704
+ lambda s: is_int(s) and not is_int8(s) and not is_int16(s),
640
705
  encoding.PackedSignedIntegerEncoder,
641
706
  label="int",
642
707
  )
faster_eth_abi/typing.py CHANGED
@@ -1,11 +1,22 @@
1
1
  # AUTOGENERATED FILE. DO NOT EDIT DIRECTLY.
2
2
  from typing import (
3
3
  Literal,
4
+ TypeVar,
4
5
  Union,
5
6
  )
6
7
 
8
+ T = TypeVar("T")
9
+
7
10
  IntegerTypeStr = Union["IntTypeStr", "UintTypeStr"]
8
11
 
12
+ AddressTypeStr = Literal["address"]
13
+ BoolTypeStr = Literal["bool"]
14
+ StringTypeStr = Literal["string"]
15
+
16
+ AddressArrayTypeStr = Literal["address[]"]
17
+ StringArrayTypeStr = Literal["string[]"]
18
+ BoolArrayTypeStr = Literal["bool[]"]
19
+
9
20
  ArrayTypeStr = Union[
10
21
  "AddressArrayTypeStr",
11
22
  "BoolArrayTypeStr",
@@ -93,20 +104,42 @@ UintTypeStr = Literal[
93
104
  "uint256",
94
105
  ]
95
106
 
96
- BoolTypeStr = Literal["bool"]
97
-
98
107
  BytesTypeStr = Literal[
99
108
  "bytes",
100
- # do we need more? probs
109
+ "bytes1",
110
+ "bytes2",
111
+ "bytes3",
112
+ "bytes4",
113
+ "bytes5",
114
+ "bytes6",
115
+ "bytes7",
116
+ "bytes8",
117
+ "bytes9",
118
+ "bytes10",
119
+ "bytes11",
120
+ "bytes12",
121
+ "bytes13",
122
+ "bytes14",
123
+ "bytes15",
124
+ "bytes16",
125
+ "bytes17",
126
+ "bytes18",
127
+ "bytes19",
128
+ "bytes20",
129
+ "bytes21",
130
+ "bytes22",
131
+ "bytes23",
132
+ "bytes24",
133
+ "bytes25",
134
+ "bytes26",
135
+ "bytes27",
136
+ "bytes28",
137
+ "bytes29",
138
+ "bytes30",
139
+ "bytes31",
140
+ "bytes32",
101
141
  ]
102
142
 
103
- StringTypeStr = Literal["string"]
104
-
105
- AddressArrayTypeStr = Literal["address[]"]
106
- BytesArrayTypeStr = Literal["bytes[]"]
107
- StringArrayTypeStr = Literal["string[]"]
108
- BoolArrayTypeStr = Literal["bool[]"]
109
-
110
143
  IntArrayTypeStr = Literal[
111
144
  "int8[]",
112
145
  "int16[]",
@@ -174,6 +207,42 @@ IntArrayTypeStr = Literal[
174
207
  "uint256[]",
175
208
  ]
176
209
 
210
+ BytesArrayTypeStr = Literal[
211
+ "bytes[]",
212
+ "bytes1[]",
213
+ "bytes2[]",
214
+ "bytes3[]",
215
+ "bytes4[]",
216
+ "bytes5[]",
217
+ "bytes6[]",
218
+ "bytes7[]",
219
+ "bytes8[]",
220
+ "bytes9[]",
221
+ "bytes10[]",
222
+ "bytes11[]",
223
+ "bytes12[]",
224
+ "bytes13[]",
225
+ "bytes14[]",
226
+ "bytes15[]",
227
+ "bytes16[]",
228
+ "bytes17[]",
229
+ "bytes18[]",
230
+ "bytes19[]",
231
+ "bytes20[]",
232
+ "bytes21[]",
233
+ "bytes22[]",
234
+ "bytes23[]",
235
+ "bytes24[]",
236
+ "bytes25[]",
237
+ "bytes26[]",
238
+ "bytes27[]",
239
+ "bytes28[]",
240
+ "bytes29[]",
241
+ "bytes30[]",
242
+ "bytes31[]",
243
+ "bytes32[]",
244
+ ]
245
+
177
246
  # New tuple type strings
178
247
  TupleAddressIntTypeStr = Literal[
179
248
  "(address,int8)",
@@ -4541,3 +4610,18 @@ TupleStrIntTypeStr = Literal[
4541
4610
  "(string,uint248)",
4542
4611
  "(string,uint256)",
4543
4612
  ]
4613
+
4614
+ AnyTypeStr = Union[
4615
+ AddressTypeStr,
4616
+ BoolTypeStr,
4617
+ StringTypeStr,
4618
+ AddressArrayTypeStr,
4619
+ StringArrayTypeStr,
4620
+ BoolArrayTypeStr,
4621
+ ArrayTypeStr,
4622
+ TupleTypeStr,
4623
+ BytesTypeStr,
4624
+ IntTypeStr,
4625
+ UintTypeStr,
4626
+ str,
4627
+ ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: faster_eth_abi
3
- Version: 5.2.15
3
+ Version: 5.2.16
4
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
5
  Home-page: https://github.com/BobTheBuidler/faster-eth-abi
6
6
  Author: The Ethereum Foundation
@@ -32,9 +32,9 @@ Requires-Python: >=3.8, <4
32
32
  Description-Content-Type: text/markdown
33
33
  License-File: LICENSE
34
34
  Requires-Dist: cchecksum<0.4,>=0.2.6
35
- Requires-Dist: faster-eth-utils>=2.0.0
36
- Requires-Dist: eth-abi<6,>=5.0.1
37
- Requires-Dist: eth-typing>=3.0.0
35
+ Requires-Dist: faster-eth-utils==5.3.16
36
+ Requires-Dist: eth-abi==5.2.0
37
+ Requires-Dist: eth-typing==5.2.1
38
38
  Requires-Dist: mypy-extensions
39
39
  Requires-Dist: parsimonious<0.11.0,>=0.10.0
40
40
  Provides-Extra: codspeed
@@ -42,10 +42,11 @@ Requires-Dist: pytest>=7.0.0; extra == "codspeed"
42
42
  Requires-Dist: pytest-codspeed<4.3,>=4.2; extra == "codspeed"
43
43
  Requires-Dist: pytest-test-groups; extra == "codspeed"
44
44
  Provides-Extra: dev
45
+ Requires-Dist: mypy<1.18.3,>=1.14.1; extra == "dev"
46
+ Requires-Dist: tqdm; extra == "dev"
45
47
  Requires-Dist: build>=0.9.0; extra == "dev"
46
48
  Requires-Dist: bump-my-version>=0.19.0; extra == "dev"
47
49
  Requires-Dist: ipython; extra == "dev"
48
- Requires-Dist: mypy==1.14.1; extra == "dev"
49
50
  Requires-Dist: pre-commit>=3.4.0; extra == "dev"
50
51
  Requires-Dist: tox>=4.0.0; extra == "dev"
51
52
  Requires-Dist: twine; extra == "dev"
@@ -54,7 +55,7 @@ Requires-Dist: pytest-benchmark; extra == "dev"
54
55
  Requires-Dist: sphinx>=6.0.0; extra == "dev"
55
56
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "dev"
56
57
  Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "dev"
57
- Requires-Dist: towncrier<26,>=25; extra == "dev"
58
+ Requires-Dist: towncrier<26,>=24; extra == "dev"
58
59
  Requires-Dist: pytest>=7.0.0; extra == "dev"
59
60
  Requires-Dist: pytest-timeout>=2.0.0; extra == "dev"
60
61
  Requires-Dist: pytest-xdist>=2.4.0; extra == "dev"
@@ -65,7 +66,10 @@ Provides-Extra: docs
65
66
  Requires-Dist: sphinx>=6.0.0; extra == "docs"
66
67
  Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
67
68
  Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
68
- Requires-Dist: towncrier<26,>=25; extra == "docs"
69
+ Requires-Dist: towncrier<26,>=24; extra == "docs"
70
+ Provides-Extra: mypy
71
+ Requires-Dist: mypy<1.18.3,>=1.14.1; extra == "mypy"
72
+ Requires-Dist: tqdm; extra == "mypy"
69
73
  Provides-Extra: test
70
74
  Requires-Dist: pytest>=7.0.0; extra == "test"
71
75
  Requires-Dist: pytest-timeout>=2.0.0; extra == "test"
@@ -76,7 +80,7 @@ Requires-Dist: hypothesis<6.108.7,>=6.22.0; extra == "test"
76
80
  Provides-Extra: tools
77
81
  Requires-Dist: hypothesis<6.108.7,>=6.22.0; extra == "tools"
78
82
 
79
- ### I forked eth-abi and compiled it to C. It does the same stuff, now ~2-6x faster
83
+ ### I forked eth-abi, added comprehensive type annotations, and compiled it to C. It does the same stuff, now ~2-6x faster.
80
84
 
81
85
  [![PyPI](https://img.shields.io/pypi/v/faster-eth-abi.svg?logo=Python&logoColor=white)](https://pypi.org/project/faster-eth-abi/)
82
86
  [![Monthly Downloads](https://img.shields.io/pypi/dm/faster-eth-abi)](https://pypistats.org/packages/faster-eth-abi)
@@ -0,0 +1,47 @@
1
+ 29859a9e7da9d19bb98c__mypyc.cpython-38-darwin.so,sha256=wjwdNpB3dFX33-z67u7A3JewWHoOvC0R8NVSbH0ry74,694176
2
+ faster_eth_abi/_codec.cpython-38-darwin.so,sha256=b11Z91HzH6qWkIEl7DcIEL4pbP8wCq1k9sLpYs1frLo,50536
3
+ faster_eth_abi/_encoding.py,sha256=SCwXXe6bG1Ep47QfPQ0n9Bn4rNcfeIIdv_3hsQYIaok,8768
4
+ faster_eth_abi/packed.py,sha256=YN1k8heenRMVQQsPEKAYfpd1XhWNF3mOn4sbaR4HiYE,418
5
+ faster_eth_abi/encoding.py,sha256=e94bu4hXo3DCt5ovs8MnwU6pxPuJTqWhPNE4qVo-G4g,21252
6
+ faster_eth_abi/abi.cpython-38-darwin.so,sha256=_yiFrm3azLTbaaYoavh7rnzM5v-ApLze-lLJSxBXEIg,50536
7
+ faster_eth_abi/packed.cpython-38-darwin.so,sha256=HlvpKFrlmgdjwYyRJBgwS0jqbW8aODxWs68PZbyW1AA,50536
8
+ faster_eth_abi/from_type_str.cpython-38-darwin.so,sha256=lyrVKssPQklIhkpKb046CcKcVFLGCkWpIIZiyxtL_gc,50576
9
+ faster_eth_abi/registry.py,sha256=6vpfdnlnT8JfF5tUxXcfdhtXWFLxTo-T66dV8oXfeRY,23772
10
+ faster_eth_abi/_decoding.py,sha256=S2T9KM0skNPdhQaaVTsZhHtIPdU0G5hjALFlZN1g7ZY,9945
11
+ faster_eth_abi/constants.py,sha256=uJbuND1rFs_Pexuz58TKd-BJPuoA6hLqFEX6kkDS-dE,107
12
+ faster_eth_abi/io.py,sha256=2_xCGFY_GiIAiQCEmDi1xp-bgmm-xhLxH9g66NYk9JU,3877
13
+ faster_eth_abi/__init__.py,sha256=55jGpiVbsTGNu-c_rr-wwyH3eqEv9MELSTWa4AMiKvU,205
14
+ faster_eth_abi/_grammar.py,sha256=hqHEJIkEIyz0Gezyfou4MBf1-75TjS_Ako5ZpeykO-Q,10566
15
+ faster_eth_abi/decoding.py,sha256=cB7ED3DPkKJkTqDwquflUomQpEmqbcSxJPgF8cW24e4,17593
16
+ faster_eth_abi/grammar.py,sha256=drkA5ahXOVmZA2IdsldIcVamoc6G8uC6_gFppMPuLFk,4455
17
+ faster_eth_abi/from_type_str.py,sha256=U3Xl7zjRL4C7J0t1aGBpBzhEqGo7BS8sxLYnF5pBu4Y,4490
18
+ faster_eth_abi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ faster_eth_abi/abi.py,sha256=HzkXy0EjHraNbbC5l-EhVqVcx5vy8tcykiKIO4Fp1xw,366
20
+ faster_eth_abi/_decoding.cpython-38-darwin.so,sha256=pRrhIq2lzfLbfPzi8dQC0LQbAM1zBz86RYAEHY-1lC0,50560
21
+ faster_eth_abi/exceptions.py,sha256=I_uWNRq8a1UcWNahYDBJd1rKbET1bYTiTbDf3R4eFOI,3646
22
+ faster_eth_abi/_codec.py,sha256=D_Vn5gtUWZi2ltiqKfH5qm5xr1w8k9CAwDRWSnzOINE,2514
23
+ faster_eth_abi/_grammar.cpython-38-darwin.so,sha256=B30-3_BzBqR6Gz_Si-Qhiuad3u7P28jrTyzoC3AAA0g,50560
24
+ faster_eth_abi/constants.cpython-38-darwin.so,sha256=Nqw1bQvNffxTt9jgpqRL_cKco8lB0GG_NXfW2QBI4Fs,50560
25
+ faster_eth_abi/typing.py,sha256=FIMFquzJeZrL6qslWhMlfdRbO95P851gt2lt3T5S16E,105020
26
+ faster_eth_abi/codec.py,sha256=A04ZzXppz3QK0RzZcsDMoYxuH1eGx6fzOqGGGdNu62c,66624
27
+ faster_eth_abi/_encoding.cpython-38-darwin.so,sha256=uOf4WePwP4ZYzPuReQOOrj7FJ0tPIR-kq1N5mRpUiWg,50560
28
+ faster_eth_abi/base.py,sha256=HgqTDvzYb2tvarczhm94gRjdgVfrBmICPX5kCw25AJ4,1329
29
+ faster_eth_abi/tools/__init__.cpython-38-darwin.so,sha256=UoQBXpcX6PNz3FXLBPHqecea6a95WydMbVRo8yS26_I,50544
30
+ faster_eth_abi/tools/_strategies.py,sha256=XQhK8eG87W7LB5v6ibzEAB0BkhTr-oc7dIzPvZu6AE0,6089
31
+ faster_eth_abi/tools/__init__.py,sha256=trtATEmgu4ctg04qkejbODDzvDSofgcVJ3rkzMP_hQE,51
32
+ faster_eth_abi/tools/_strategies.cpython-38-darwin.so,sha256=fKAJ1oFw3meJiSY3BSoDXHicC8zc769YVfv7TLBDmw4,50592
33
+ faster_eth_abi/utils/__init__.cpython-38-darwin.so,sha256=02jVcFtSEi46AaTY7pwisUdPdsmK2cut3sy0GCgc93k,50544
34
+ faster_eth_abi/utils/validation.cpython-38-darwin.so,sha256=mfL_9vClseEYjqPgujJls6tJT5p2imAd6s-3qjA0XPQ,50576
35
+ faster_eth_abi/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
+ faster_eth_abi/utils/padding.cpython-38-darwin.so,sha256=3Cmb27kUQJ_VJuIl9e2unhkGwfkfbD_CvcKIHCHRtUM,50560
37
+ faster_eth_abi/utils/numeric.py,sha256=fkdazLcgd7FN0JGSSyb6Jsx555QdgRf2N0mxrm6rGB4,3278
38
+ faster_eth_abi/utils/string.cpython-38-darwin.so,sha256=TbeUDLzJELBD_Rp2mA19D1LxCRXaMTHxA8LN05esgQI,50552
39
+ faster_eth_abi/utils/numeric.cpython-38-darwin.so,sha256=TK2h0Ja6ygiWAt-iViGj2adnvI6qLNGgGXE3pLd0VhE,50560
40
+ faster_eth_abi/utils/string.py,sha256=fjsAR2C7Xlu5bHomxx5l4rlADFtByzGTQfugMTo8TQk,436
41
+ faster_eth_abi/utils/padding.py,sha256=JBuFhdrvKWLrmmJBZ-a6pqbHWydAuiUBt2aBjCwVcVE,493
42
+ faster_eth_abi/utils/validation.py,sha256=NA2wRacYEBdkpQnZfmeDvzF-sHyy6NT2QzCFuBnYJVI,521
43
+ faster_eth_abi-5.2.16.dist-info/RECORD,,
44
+ faster_eth_abi-5.2.16.dist-info/LICENSE,sha256=P_zrhVa0OXK-_XuA0RF3d3gwMLXRSBkn2fWraC4CFLo,1106
45
+ faster_eth_abi-5.2.16.dist-info/WHEEL,sha256=9FabR3Kab7Nb3lO5nBQWtZc544XJ0hYCmiQC2RH2bHM,107
46
+ faster_eth_abi-5.2.16.dist-info/top_level.txt,sha256=VAQVriOsRsqhSQlZZtJw0zN50hc93HkAqPqL70TVuRU,43
47
+ faster_eth_abi-5.2.16.dist-info/METADATA,sha256=M6fXsbwew90N6SgN8LfoPpwvCu4nnyQs4CI3vx0iaM4,6894
@@ -1,3 +1,2 @@
1
1
  29859a9e7da9d19bb98c__mypyc
2
- benchmarks
3
2
  faster_eth_abi
benchmarks/__init__.py DELETED
@@ -1 +0,0 @@
1
-
benchmarks/batch.py DELETED
@@ -1,9 +0,0 @@
1
- from typing import (
2
- Any,
3
- Callable,
4
- )
5
-
6
-
7
- def batch(iterations: int, func: Callable[..., Any], *args: Any, **kwargs: Any) -> None:
8
- for _ in range(iterations):
9
- func(*args, **kwargs)