3
3
import json
4
4
import random
5
5
import sys
6
+ from collections .abc import Callable
6
7
from dataclasses import dataclass
7
8
from enum import Enum
8
9
from statistics import stdev
9
10
from time import process_time as clock
10
- from typing import Any , Callable , Optional , TextIO , Union
11
+ from typing import Any , TextIO
11
12
12
13
import click
13
14
from chia_rs import FullBlock
@@ -43,8 +44,8 @@ class BenchmarkMiddle(Streamable):
43
44
@streamable
44
45
@dataclass (frozen = True )
45
46
class BenchmarkClass (Streamable ):
46
- a : Optional [ BenchmarkMiddle ]
47
- b : Optional [ BenchmarkMiddle ]
47
+ a : BenchmarkMiddle | None
48
+ b : BenchmarkMiddle | None
48
49
c : BenchmarkMiddle
49
50
d : list [BenchmarkMiddle ]
50
51
e : tuple [BenchmarkMiddle , BenchmarkMiddle , BenchmarkMiddle ]
@@ -64,8 +65,8 @@ def get_random_middle() -> BenchmarkMiddle:
64
65
65
66
66
67
def get_random_benchmark_object () -> BenchmarkClass :
67
- a : Optional [ BenchmarkMiddle ] = None
68
- b : Optional [ BenchmarkMiddle ] = get_random_middle ()
68
+ a : BenchmarkMiddle | None = None
69
+ b : BenchmarkMiddle | None = get_random_middle ()
69
70
c : BenchmarkMiddle = get_random_middle ()
70
71
d : list [BenchmarkMiddle ] = [get_random_middle () for _ in range (5 )]
71
72
e : tuple [BenchmarkMiddle , BenchmarkMiddle , BenchmarkMiddle ] = (
@@ -79,10 +80,10 @@ def get_random_benchmark_object() -> BenchmarkClass:
79
80
def print_row (
80
81
* ,
81
82
mode : str ,
82
- us_per_iteration : Union [ str , float ] ,
83
- stdev_us_per_iteration : Union [ str , float ] ,
84
- avg_iterations : Union [ str , int ] ,
85
- stdev_iterations : Union [ str , float ] ,
83
+ us_per_iteration : str | float ,
84
+ stdev_us_per_iteration : str | float ,
85
+ avg_iterations : str | int ,
86
+ stdev_iterations : str | float ,
86
87
end : str = "\n " ,
87
88
) -> None :
88
89
print (
@@ -142,14 +143,14 @@ def to_bytes(obj: Any) -> bytes:
142
143
@dataclass
143
144
class ModeParameter :
144
145
conversion_cb : Callable [[Any ], Any ]
145
- preparation_cb : Optional [ Callable [[Any ], Any ]] = None
146
+ preparation_cb : Callable [[Any ], Any ] | None = None
146
147
147
148
148
149
@dataclass
149
150
class BenchmarkParameter :
150
151
data_class : type [Any ]
151
152
object_creation_cb : Callable [[], Any ]
152
- mode_parameter : dict [Mode , Optional [ ModeParameter ] ]
153
+ mode_parameter : dict [Mode , ModeParameter | None ]
153
154
154
155
155
156
benchmark_parameter : dict [Data , BenchmarkParameter ] = {
@@ -202,12 +203,12 @@ def pop_data(key: str, *, old: dict[str, Any], new: dict[str, Any]) -> tuple[Any
202
203
return old .pop (key ), new .pop (key )
203
204
204
205
205
- def print_compare_row (c0 : str , c1 : Union [ str , float ] , c2 : Union [ str , float ] , c3 : Union [ str , float ] ) -> None :
206
+ def print_compare_row (c0 : str , c1 : str | float , c2 : str | float , c3 : str | float ) -> None :
206
207
print (f"{ c0 :<12} | { c1 :<16} | { c2 :<16} | { c3 :<12} " )
207
208
208
209
209
210
def compare_results (
210
- old : dict [str , dict [str , dict [str , Union [ float , int ]]]] , new : dict [str , dict [str , dict [str , Union [ float , int ] ]]]
211
+ old : dict [str , dict [str , dict [str , float | int ]]], new : dict [str , dict [str , dict [str , float | int ]]]
211
212
) -> None :
212
213
old_version , new_version = pop_data ("version" , old = old , new = new )
213
214
if old_version != new_version :
0 commit comments