Skip to content

Commit 78565ce

Browse files
committed
black .
1 parent 76c03d9 commit 78565ce

File tree

6 files changed

+88
-21
lines changed

6 files changed

+88
-21
lines changed

benchmarks/params.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,11 @@
4242
BYTES_VALS: List[bytes] = [v for v, _ in BYTES_CASES]
4343
BYTES_IDS: List[str] = [id for _, id in BYTES_CASES]
4444

45+
4546
def variant_ids(base_ids: List[str], prefix: str) -> List[str]:
4647
return [f"{prefix}({id})" for id in base_ids]
4748

49+
4850
BYTEARRAYS = [bytearray(b) for b in BYTES_VALS]
4951
BYTEARRAYS_IDS = variant_ids(BYTES_IDS, "bytearray")
5052

benchmarks/test__utils_benchmarks.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,36 @@
77

88
import faster_hexbytes._utils
99
from benchmarks.params import (
10-
TO_BYTES_VALS, TO_BYTES_IDS,
11-
HEXSTRINGS, HEXSTRINGS_IDS,
10+
TO_BYTES_VALS,
11+
TO_BYTES_IDS,
12+
HEXSTRINGS,
13+
HEXSTRINGS_IDS,
1214
)
1315

16+
1417
def run_100(func: Callable[..., Any], *args: Any) -> None:
1518
for i in range(100):
1619
func(*args)
1720

21+
1822
@pytest.mark.benchmark(group="to_bytes")
1923
@pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS)
2024
def test_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None:
2125
benchmark(run_100, hexbytes._utils.to_bytes, val)
2226

27+
2328
@pytest.mark.benchmark(group="to_bytes")
2429
@pytest.mark.parametrize("val", TO_BYTES_VALS, ids=TO_BYTES_IDS)
2530
def test_faster_to_bytes(benchmark: BenchmarkFixture, val: Any) -> None:
2631
benchmark(run_100, faster_hexbytes._utils.to_bytes, val)
2732

33+
2834
@pytest.mark.benchmark(group="hexstr_to_bytes")
2935
@pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS)
3036
def test_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None:
3137
benchmark(run_100, hexbytes._utils.hexstr_to_bytes, hexstr)
3238

39+
3340
@pytest.mark.benchmark(group="hexstr_to_bytes")
3441
@pytest.mark.parametrize("hexstr", HEXSTRINGS, ids=HEXSTRINGS_IDS)
3542
def test_faster_hexstr_to_bytes(benchmark: BenchmarkFixture, hexstr: HexStr) -> None:

benchmarks/test_main_benchmarks.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,73 +6,95 @@
66

77
import faster_hexbytes
88
from benchmarks.params import (
9-
CONSTRUCTOR_VALS, CONSTRUCTOR_IDS,
10-
BYTES_VALS, BYTES_IDS,
11-
SLICES, SLICE_IDS,
9+
CONSTRUCTOR_VALS,
10+
CONSTRUCTOR_IDS,
11+
BYTES_VALS,
12+
BYTES_IDS,
13+
SLICES,
14+
SLICE_IDS,
1215
)
1316

17+
1418
def run_100(func: Callable[..., Any], *args: Any) -> None:
1519
for i in range(100):
1620
func(*args)
1721

22+
1823
@pytest.mark.benchmark(group="HexBytes.__new__")
1924
@pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS)
2025
def test_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None:
2126
benchmark(run_100, hexbytes.HexBytes, val)
2227

28+
2329
@pytest.mark.benchmark(group="HexBytes.__new__")
2430
@pytest.mark.parametrize("val", CONSTRUCTOR_VALS, ids=CONSTRUCTOR_IDS)
2531
def test_faster_hexbytes_new(benchmark: BenchmarkFixture, val: Any) -> None:
2632
benchmark(run_100, faster_hexbytes.HexBytes, val)
2733

34+
2835
@pytest.mark.benchmark(group="HexBytes.__getitem__ (index)")
2936
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
3037
@pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1])
31-
def test_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None:
38+
def test_hexbytes_getitem_index(
39+
benchmark: BenchmarkFixture, val: bytes, idx: int
40+
) -> None:
3241
obj = hexbytes.HexBytes(val)
3342
if len(val) > abs(idx):
3443
benchmark(run_100, lambda: obj[idx])
3544

45+
3646
@pytest.mark.benchmark(group="HexBytes.__getitem__ (index)")
3747
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
3848
@pytest.mark.parametrize("idx", [0, 1, 2, 3, 4, 5, -1])
39-
def test_faster_hexbytes_getitem_index(benchmark: BenchmarkFixture, val: bytes, idx: int) -> None:
49+
def test_faster_hexbytes_getitem_index(
50+
benchmark: BenchmarkFixture, val: bytes, idx: int
51+
) -> None:
4052
obj = faster_hexbytes.HexBytes(val)
4153
if len(val) > abs(idx):
4254
benchmark(run_100, lambda: obj[idx])
4355

56+
4457
@pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)")
4558
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
4659
@pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS)
47-
def test_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None:
60+
def test_hexbytes_getitem_slice(
61+
benchmark: BenchmarkFixture, val: bytes, slice_: slice
62+
) -> None:
4863
obj = hexbytes.HexBytes(val)
4964
benchmark(run_100, lambda: obj[slice_])
5065

66+
5167
@pytest.mark.benchmark(group="HexBytes.__getitem__ (slice)")
5268
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
5369
@pytest.mark.parametrize("slice_", SLICES, ids=SLICE_IDS)
54-
def test_faster_hexbytes_getitem_slice(benchmark: BenchmarkFixture, val: bytes, slice_: slice) -> None:
70+
def test_faster_hexbytes_getitem_slice(
71+
benchmark: BenchmarkFixture, val: bytes, slice_: slice
72+
) -> None:
5573
obj = faster_hexbytes.HexBytes(val)
5674
benchmark(run_100, lambda: obj[slice_])
5775

76+
5877
@pytest.mark.benchmark(group="HexBytes.__repr__")
5978
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
6079
def test_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None:
6180
obj = hexbytes.HexBytes(val)
6281
benchmark(run_100, obj.__repr__)
6382

83+
6484
@pytest.mark.benchmark(group="HexBytes.__repr__")
6585
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
6686
def test_faster_hexbytes_repr(benchmark: BenchmarkFixture, val: bytes) -> None:
6787
obj = faster_hexbytes.HexBytes(val)
6888
benchmark(run_100, obj.__repr__)
6989

90+
7091
@pytest.mark.benchmark(group="HexBytes.to_0x_hex")
7192
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
7293
def test_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None:
7394
obj = hexbytes.HexBytes(val)
7495
benchmark(run_100, obj.to_0x_hex)
7596

97+
7698
@pytest.mark.benchmark(group="HexBytes.to_0x_hex")
7799
@pytest.mark.parametrize("val", BYTES_VALS, ids=BYTES_IDS)
78100
def test_faster_hexbytes_to_0x_hex(benchmark: BenchmarkFixture, val: bytes) -> None:

scripts/benchmark/compare_benchmark_results.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,13 @@ def compare_group(group_results: Dict[str, Any]) -> Dict[str, Any]:
4545
if ref and fast:
4646
mean_ref = ref["mean"]
4747
mean_fast = fast["mean"]
48-
percent_change = ((mean_ref - mean_fast) / mean_ref) * 100 if mean_ref != 0 else 0.0
49-
speedup_x = mean_ref / mean_fast if mean_fast != 0 else float('inf')
50-
speedup_percent = (speedup_x - 1) * 100 if speedup_x != float('inf') else float('inf')
48+
percent_change = (
49+
((mean_ref - mean_fast) / mean_ref) * 100 if mean_ref != 0 else 0.0
50+
)
51+
speedup_x = mean_ref / mean_fast if mean_fast != 0 else float("inf")
52+
speedup_percent = (
53+
(speedup_x - 1) * 100 if speedup_x != float("inf") else float("inf")
54+
)
5155
return {
5256
"reference_mean": mean_ref,
5357
"faster_mean": mean_fast,

scripts/benchmark/generate_benchmark_markdown.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import os
22
import json
33

4+
45
def main():
56
diff_path = "pytest_benchmark_diff.json"
67
results_dir = os.path.join("benchmarks", "results")
78
os.makedirs(results_dir, exist_ok=True)
89

910
# Get repo and branch info from environment variables (for links)
1011
repo = os.environ.get("GITHUB_REPOSITORY", "unknown/unknown")
11-
branch = os.environ.get("GITHUB_HEAD_REF") or os.environ.get("GITHUB_REF", "main").replace("refs/heads/", "")
12+
branch = os.environ.get("GITHUB_HEAD_REF") or os.environ.get(
13+
"GITHUB_REF", "main"
14+
).replace("refs/heads/", "")
1215

1316
with open(diff_path, "r", encoding="utf-8") as f:
1417
diff = json.load(f)
@@ -19,7 +22,7 @@ def main():
1922
benchmarkFile = "unknown"
2023
m = None
2124
if submodule.startswith("faster_hexbytes."):
22-
m = submodule[len("faster_hexbytes."):]
25+
m = submodule[len("faster_hexbytes.") :]
2326

2427
if m:
2528
submoduleFile = f"faster_hexbytes/{m}.py"
@@ -29,9 +32,15 @@ def main():
2932
benchmarkUrl = f"https://github.com/{repo}/blob/{branch}/{benchmarkFile}"
3033

3134
md_lines = []
32-
md_lines.append(f"#### [{submodule}]({submoduleUrl}) - [view benchmarks]({benchmarkUrl})\n")
33-
md_lines.append("| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |")
34-
md_lines.append("|----------|---------------|-------------|----------|-------------|----------|--------|")
35+
md_lines.append(
36+
f"#### [{submodule}]({submoduleUrl}) - [view benchmarks]({benchmarkUrl})\n"
37+
)
38+
md_lines.append(
39+
"| Function | Reference Mean | Faster Mean | % Change | Speedup (%) | x Faster | Faster |"
40+
)
41+
md_lines.append(
42+
"|----------|---------------|-------------|----------|-------------|----------|--------|"
43+
)
3544

3645
for group, data in sorted(groupDiffs.items()):
3746
if data.get("percent_change") is not None:
@@ -40,9 +49,22 @@ def main():
4049
emoji = "✅"
4150
elif data["percent_change"] < 0:
4251
emoji = "❌"
43-
percentChange = f"{data['percent_change']:.2f}%" if data.get("percent_change") is not None else ""
44-
speedupPercent = f"{data['speedup_percent']:.2f}%" if data.get("speedup_percent") is not None else ""
45-
speedupX = f"{data['speedup_x']:.2f}x" if data.get("speedup_x") is not None and isinstance(data["speedup_x"], (int, float)) else ""
52+
percentChange = (
53+
f"{data['percent_change']:.2f}%"
54+
if data.get("percent_change") is not None
55+
else ""
56+
)
57+
speedupPercent = (
58+
f"{data['speedup_percent']:.2f}%"
59+
if data.get("speedup_percent") is not None
60+
else ""
61+
)
62+
speedupX = (
63+
f"{data['speedup_x']:.2f}x"
64+
if data.get("speedup_x") is not None
65+
and isinstance(data["speedup_x"], (int, float))
66+
else ""
67+
)
4668
md_lines.append(
4769
f"| `{group}` | {data.get('reference_mean', '')} | {data.get('faster_mean', '')} | {percentChange} | {speedupPercent} | {speedupX} | {emoji} |"
4870
)
@@ -58,5 +80,6 @@ def main():
5880
with open(out_path, "w", encoding="utf-8") as outf:
5981
outf.write(md_content)
6082

83+
6184
if __name__ == "__main__":
6285
main()

setup.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,16 @@
6868
license="MIT",
6969
zip_safe=False,
7070
keywords="ethereum",
71-
packages=find_packages(exclude=["scripts", "scripts.*", "tests", "tests.*", "benchmarks", "benchmarks.*"]),
71+
packages=find_packages(
72+
exclude=[
73+
"scripts",
74+
"scripts.*",
75+
"tests",
76+
"tests.*",
77+
"benchmarks",
78+
"benchmarks.*",
79+
]
80+
),
7281
ext_modules=ext_modules,
7382
package_data={"faster_hexbytes": ["py.typed"]},
7483
classifiers=[

0 commit comments

Comments
 (0)