BlogDocs

feat: make Signal and SignalInstance Generic, support static type validation of signal connections(#304)

Comparing
tlambert03:generic-signal
(
cdb2ec3
) with
main
(
019232e
)
-57%
IMPROVEMENTS
2
REGRESSIONS
5
UNTOUCHED
59
NEW
1
DROPPED
0
IGNORED
0

Benchmarks

Failed

test_create_signal_instanceRegression
tests/test_bench.py::test_create_signal_instance
-57%
33.4 µs
77.6 µs
test_dataclass_group_create[attrs]Regression
tests/test_bench.py::test_dataclass_group_create[attrs]
-21%
536.8 µs
676.7 µs
test_dataclass_group_create[dataclass]Regression
tests/test_bench.py::test_dataclass_group_create[dataclass]
-20%
523.1 µs
657.7 µs
test_dataclass_group_create[msgspec]Regression
tests/test_bench.py::test_dataclass_group_create[msgspec]
-19%
544.9 µs
676 µs
test_dataclass_group_create[pydantic]Regression
tests/test_bench.py::test_dataclass_group_create[pydantic]
-20%
541.2 µs
677.9 µs

Improved

test_create_signal
tests/test_bench.py::test_create_signal
×2.4
68.8 µs
28.2 µs
test_emit_time[partial-2]
tests/test_bench.py::test_emit_time[partial-2]
+12%
69 µs
61.6 µs

New

test_emit_fast
tests/test_bench.py::test_emit_fast
N/A
N/A
21.7 µs

Passed

test_emit_time[lambda-2]
tests/test_bench.py::test_emit_time[lambda-2]
+2%
60.1 µs
59 µs
test_connect_time[function-]
tests/test_bench.py::test_connect_time[function-]
+2%
143.4 µs
141.1 µs
test_emit_time[setattr-2]
tests/test_bench.py::test_emit_time[setattr-2]
+1%
56.2 µs
55.5 µs
test_emit_time[setitem-2]
tests/test_bench.py::test_emit_time[setitem-2]
+1%
58.2 µs
57.4 µs
test_emit_time[setitem-18]
tests/test_bench.py::test_emit_time[setitem-18]
+1%
70.4 µs
69.4 µs
test_connect_time[setattr-]
tests/test_bench.py::test_connect_time[setattr-]
+1%
62.3 µs
61.6 µs
test_connect_time[setitem-]
tests/test_bench.py::test_connect_time[setitem-]
+1%
62.8 µs
62.1 µs
test_emit_time[real_func-34]
tests/test_bench.py::test_emit_time[real_func-34]
+1%
131.3 µs
129.8 µs
test_emit_time[setattr-34]
tests/test_bench.py::test_emit_time[setattr-34]
+1%
70.2 µs
69.4 µs
test_emit_time[setattr-18]
tests/test_bench.py::test_emit_time[setattr-18]
+1%
63.1 µs
62.4 µs
test_emit_time[partial-50]
tests/test_bench.py::test_emit_time[partial-50]
+1%
131.9 µs
130.6 µs
test_connect_time[method-check_types]
tests/test_bench.py::test_connect_time[method-check_types]
+1%
186.1 µs
184.5 µs
test_emit_time[real_func-18]
tests/test_bench.py::test_emit_time[real_func-18]
+1%
99.1 µs
98.4 µs
test_emit_time[setitem-34]
tests/test_bench.py::test_emit_time[setitem-34]
+1%
82.3 µs
81.7 µs
test_emit_time[print-2]
tests/test_bench.py::test_emit_time[print-2]
+1%
86.8 µs
86.2 µs
test_connect_time[method-]
tests/test_bench.py::test_connect_time[method-]
+1%
177.8 µs
176.5 µs
test_emit_time[lambda-50]
tests/test_bench.py::test_emit_time[lambda-50]
+1%
105 µs
104.3 µs
test_emit_time[setitem-50]
tests/test_bench.py::test_emit_time[setitem-50]
+1%
94.1 µs
93.5 µs
test_emit_time[real_func-2]
tests/test_bench.py::test_emit_time[real_func-2]
+1%
65.9 µs
65.5 µs
test_connect_time[partial-check_types]
tests/test_bench.py::test_connect_time[partial-check_types]
+1%
256.1 µs
254.6 µs
test_emit_time[function-18]
tests/test_bench.py::test_emit_time[function-18]
+1%
74.3 µs
73.9 µs
test_connect_time[lambda-check_types]
tests/test_bench.py::test_connect_time[lambda-check_types]
+1%
145.2 µs
144.5 µs
test_dataclass_setattr[pydantic]
tests/test_bench.py::test_dataclass_setattr[pydantic]
+1%
865.6 µs
861.2 µs
test_emit_time[setattr-50]
tests/test_bench.py::test_emit_time[setattr-50]
0%
76.9 µs
76.5 µs
test_emit_time[function-34]
tests/test_bench.py::test_emit_time[function-34]
0%
89.4 µs
89.1 µs
test_connect_time[lambda-]
tests/test_bench.py::test_connect_time[lambda-]
0%
140.9 µs
140.5 µs
test_connect_time[setitem-check_types]
tests/test_bench.py::test_connect_time[setitem-check_types]
0%
67.4 µs
67.2 µs
test_emit_time[function-50]
tests/test_bench.py::test_emit_time[function-50]
0%
104.9 µs
104.5 µs
test_connect_time[print-check_types]
tests/test_bench.py::test_connect_time[print-check_types]
0%
205.5 µs
205 µs
test_emit_time[real_func-50]
tests/test_bench.py::test_emit_time[real_func-50]
0%
163.8 µs
163.4 µs
test_dataclass_setattr[dataclass]
tests/test_bench.py::test_dataclass_setattr[dataclass]
0%
755.7 µs
753.7 µs
test_emit_time[partial-34]
tests/test_bench.py::test_emit_time[partial-34]
0%
107.6 µs
107.4 µs
test_emit_time[lambda-34]
tests/test_bench.py::test_emit_time[lambda-34]
0%
89.3 µs
89.2 µs
test_dataclass_setattr[msgspec]
tests/test_bench.py::test_dataclass_setattr[msgspec]
0%
773.6 µs
772.4 µs
test_emit_time[print-18]
tests/test_bench.py::test_emit_time[print-18]
0%
179.3 µs
179 µs
test_evented_setattr
tests/test_bench.py::test_evented_setattr
0%
27.8 µs
27.8 µs
test_connect_time[setattr-check_types]
tests/test_bench.py::test_connect_time[setattr-check_types]
0%
67.9 µs
67.8 µs
test_connect_time[real_func-check_types]
tests/test_bench.py::test_connect_time[real_func-check_types]
0%
126.9 µs
126.8 µs
test_emit_time[method-18]
tests/test_bench.py::test_emit_time[method-18]
0%
83.7 µs
83.6 µs
test_connect_time[function-check_types]
tests/test_bench.py::test_connect_time[function-check_types]
0%
156.4 µs
156.3 µs
test_connect_time[real_func-]
tests/test_bench.py::test_connect_time[real_func-]
0%
123.6 µs
123.5 µs
test_connect_time[partial_method-]
tests/test_bench.py::test_connect_time[partial_method-]
0%
275.4 µs
275.5 µs
test_emit_time[lambda-18]
tests/test_bench.py::test_emit_time[lambda-18]
0%
74.2 µs
74.2 µs
test_connect_time[partial-]
tests/test_bench.py::test_connect_time[partial-]
0%
243.2 µs
243.6 µs
test_connect_time[partial_method-check_types]
tests/test_bench.py::test_connect_time[partial_method-check_types]
0%
282.5 µs
282.9 µs
test_emit_time[partial_method-34]
tests/test_bench.py::test_emit_time[partial_method-34]
0%
122 µs
122.3 µs
test_emit_time[partial_method-50]
tests/test_bench.py::test_emit_time[partial_method-50]
0%
151.2 µs
151.7 µs
test_emit_time[partial_method-18]
tests/test_bench.py::test_emit_time[partial_method-18]
0%
93.4 µs
93.7 µs
test_emit_time[method-2]
tests/test_bench.py::test_emit_time[method-2]
0%
62.1 µs
62.4 µs
test_emit_time[print-34]
tests/test_bench.py::test_emit_time[print-34]
0%
277.1 µs
278.2 µs
test_emit_time[method-34]
tests/test_bench.py::test_emit_time[method-34]
0%
105.5 µs
106 µs
test_connect_time[print-]
tests/test_bench.py::test_connect_time[print-]
0%
145.9 µs
146.5 µs
test_emit_time[method-50]
tests/test_bench.py::test_emit_time[method-50]
-1%
127.4 µs
128.1 µs
test_emit_time[function-2]
tests/test_bench.py::test_emit_time[function-2]
-1%
64.7 µs
65.1 µs
test_dataclass_setattr[attrs]
tests/test_bench.py::test_dataclass_setattr[attrs]
-1%
772.3 µs
777.8 µs
test_emit_time[print-50]
tests/test_bench.py::test_emit_time[print-50]
-1%
376.3 µs
379.4 µs
test_emit_time[partial_method-2]
tests/test_bench.py::test_emit_time[partial_method-2]
-1%
64.1 µs
64.8 µs
test_emit_time[partial-18]
tests/test_bench.py::test_emit_time[partial-18]
-1%
83.7 µs
84.8 µs
test_evented_creation
tests/test_bench.py::test_evented_creation
-4%
1.7 ms
1.7 ms

Commits

Click on a commit to change the comparison range
base
main
019232e
-23%
install ruff
ff18b86
8 months ago
by tlambert03
-1%
skip test
4156847
8 months ago
by tlambert03
+1%
Add mypy to pip install command
330cfd1
8 months ago
by tlambert03
-33%
prebuild sig
66a86ce
8 months ago
by tlambert03
0%
Merge branch 'main' into generic-signal
cdb2ec3
18 days ago
by tlambert03
ResourcesHomePricingDocsBlogGitHubChangelog
Copyright © 2024 CodSpeed Technology SAS. All rights reserved.