BlogDocs

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

Merging
tlambert03:generic-signal
into
main
-66%
IMPROVEMENTS
1
REGRESSIONS
5
UNTOUCHED
60
NEW
0
DROPPED
0
IGNORED
0

Benchmarks

Failing

test_create_signal_instanceRegression
tests/test_bench.py::test_create_signal_instance
-66%
51.9 µs
152.8 µs
test_dataclass_group_create[attrs]Regression
tests/test_bench.py::test_dataclass_group_create[attrs]
-23%
2.4 ms
3.1 ms
test_dataclass_group_create[dataclass]Regression
tests/test_bench.py::test_dataclass_group_create[dataclass]
-25%
2 ms
2.7 ms
test_dataclass_group_create[msgspec]Regression
tests/test_bench.py::test_dataclass_group_create[msgspec]
-22%
2.4 ms
3.1 ms
test_dataclass_group_create[pydantic]Regression
tests/test_bench.py::test_dataclass_group_create[pydantic]
-22%
2.4 ms
3.1 ms

Passing

test_connect_time[function-]
tests/test_bench.py::test_connect_time[function-]
+1%
338.3 µs
335.2 µs
test_connect_time[function-check_types]
tests/test_bench.py::test_connect_time[function-check_types]
+1%
396.3 µs
391.8 µs
test_connect_time[lambda-]
tests/test_bench.py::test_connect_time[lambda-]
0%
336.2 µs
336.6 µs
test_connect_time[lambda-check_types]
tests/test_bench.py::test_connect_time[lambda-check_types]
+1%
353.2 µs
349.9 µs
test_connect_time[method-]
tests/test_bench.py::test_connect_time[method-]
+1%
481 µs
476.9 µs
test_connect_time[method-check_types]
tests/test_bench.py::test_connect_time[method-check_types]
0%
509.7 µs
508.1 µs
test_connect_time[partial-]
tests/test_bench.py::test_connect_time[partial-]
0%
801.7 µs
805.7 µs
test_connect_time[partial-check_types]
tests/test_bench.py::test_connect_time[partial-check_types]
0%
852.9 µs
850 µs
test_connect_time[partial_method-]
tests/test_bench.py::test_connect_time[partial_method-]
+1%
951.3 µs
946.2 µs
test_connect_time[partial_method-check_types]
tests/test_bench.py::test_connect_time[partial_method-check_types]
+1%
979.1 µs
973.7 µs
test_connect_time[print-]
tests/test_bench.py::test_connect_time[print-]
+1%
371 µs
369.1 µs
test_connect_time[print-check_types]
tests/test_bench.py::test_connect_time[print-check_types]
+1%
617.3 µs
612.8 µs
test_connect_time[real_func-]
tests/test_bench.py::test_connect_time[real_func-]
0%
286.2 µs
285.5 µs
test_connect_time[real_func-check_types]
tests/test_bench.py::test_connect_time[real_func-check_types]
0%
299.7 µs
298.9 µs
test_connect_time[setattr-]
tests/test_bench.py::test_connect_time[setattr-]
-1%
125.5 µs
127.2 µs
test_connect_time[setattr-check_types]
tests/test_bench.py::test_connect_time[setattr-check_types]
-1%
142.6 µs
144.7 µs
test_connect_time[setitem-]
tests/test_bench.py::test_connect_time[setitem-]
-1%
127.2 µs
128.2 µs
test_connect_time[setitem-check_types]
tests/test_bench.py::test_connect_time[setitem-check_types]
0%
141 µs
141.6 µs
test_create_signal
tests/test_bench.py::test_create_signal
×2.8
144.7 µs
51.3 µs
test_dataclass_setattr[attrs]
tests/test_bench.py::test_dataclass_setattr[attrs]
0%
3.4 ms
3.4 ms
test_dataclass_setattr[dataclass]
tests/test_bench.py::test_dataclass_setattr[dataclass]
+1%
3.4 ms
3.3 ms
test_dataclass_setattr[msgspec]
tests/test_bench.py::test_dataclass_setattr[msgspec]
0%
3.4 ms
3.4 ms
test_dataclass_setattr[pydantic]
tests/test_bench.py::test_dataclass_setattr[pydantic]
-1%
3.8 ms
3.8 ms
test_emit_time[function-18]
tests/test_bench.py::test_emit_time[function-18]
-1%
187.5 µs
189 µs
test_emit_time[function-2]
tests/test_bench.py::test_emit_time[function-2]
0%
126.3 µs
126.1 µs
test_emit_time[function-34]
tests/test_bench.py::test_emit_time[function-34]
0%
262.6 µs
263.3 µs
test_emit_time[function-50]
tests/test_bench.py::test_emit_time[function-50]
0%
336.8 µs
338.4 µs
test_emit_time[lambda-18]
tests/test_bench.py::test_emit_time[lambda-18]
-1%
187.6 µs
189.1 µs
test_emit_time[lambda-2]
tests/test_bench.py::test_emit_time[lambda-2]
-1%
113.8 µs
115.1 µs
test_emit_time[lambda-34]
tests/test_bench.py::test_emit_time[lambda-34]
0%
262.3 µs
263.2 µs
test_emit_time[lambda-50]
tests/test_bench.py::test_emit_time[lambda-50]
-1%
336.8 µs
338.7 µs
test_emit_time[method-18]
tests/test_bench.py::test_emit_time[method-18]
0%
231.6 µs
232.1 µs
test_emit_time[method-2]
tests/test_bench.py::test_emit_time[method-2]
-1%
121.9 µs
122.7 µs
test_emit_time[method-34]
tests/test_bench.py::test_emit_time[method-34]
0%
341.5 µs
341.5 µs
test_emit_time[method-50]
tests/test_bench.py::test_emit_time[method-50]
0%
451.6 µs
452.6 µs
test_emit_time[partial-18]
tests/test_bench.py::test_emit_time[partial-18]
0%
236.6 µs
237.4 µs
test_emit_time[partial-2]
tests/test_bench.py::test_emit_time[partial-2]
0%
119.9 µs
120 µs
test_emit_time[partial-34]
tests/test_bench.py::test_emit_time[partial-34]
+1%
355.4 µs
352.3 µs
test_emit_time[partial-50]
tests/test_bench.py::test_emit_time[partial-50]
0%
477.2 µs
476.2 µs
test_emit_time[partial_method-18]
tests/test_bench.py::test_emit_time[partial_method-18]
0%
275.6 µs
276.4 µs
test_emit_time[partial_method-2]
tests/test_bench.py::test_emit_time[partial_method-2]
+1%
128.4 µs
127.1 µs
test_emit_time[partial_method-34]
tests/test_bench.py::test_emit_time[partial_method-34]
0%
421.2 µs
422 µs
test_emit_time[partial_method-50]
tests/test_bench.py::test_emit_time[partial_method-50]
0%
571 µs
569.8 µs
test_emit_time[print-18]
tests/test_bench.py::test_emit_time[print-18]
0%
683 µs
683.9 µs
test_emit_time[print-2]
tests/test_bench.py::test_emit_time[print-2]
-1%
193.4 µs
194.6 µs
test_emit_time[print-34]
tests/test_bench.py::test_emit_time[print-34]
0%
1.2 ms
1.2 ms
test_emit_time[print-50]
tests/test_bench.py::test_emit_time[print-50]
0%
1.7 ms
1.7 ms
test_emit_time[real_func-18]
tests/test_bench.py::test_emit_time[real_func-18]
0%
308.7 µs
309 µs
test_emit_time[real_func-2]
tests/test_bench.py::test_emit_time[real_func-2]
0%
130.6 µs
131.2 µs
test_emit_time[real_func-34]
tests/test_bench.py::test_emit_time[real_func-34]
0%
482.6 µs
483.2 µs
test_emit_time[real_func-50]
tests/test_bench.py::test_emit_time[real_func-50]
0%
662.7 µs
662.2 µs
test_emit_time[setattr-18]
tests/test_bench.py::test_emit_time[setattr-18]
-1%
138.9 µs
140.1 µs
test_emit_time[setattr-2]
tests/test_bench.py::test_emit_time[setattr-2]
0%
107.1 µs
107.1 µs
test_emit_time[setattr-34]
tests/test_bench.py::test_emit_time[setattr-34]
0%
172.1 µs
172 µs
test_emit_time[setattr-50]
tests/test_bench.py::test_emit_time[setattr-50]
-1%
203.8 µs
205.1 µs
test_emit_time[setitem-18]
tests/test_bench.py::test_emit_time[setitem-18]
-1%
174.8 µs
175.8 µs
test_emit_time[setitem-2]
tests/test_bench.py::test_emit_time[setitem-2]
0%
111.9 µs
112.4 µs
test_emit_time[setitem-34]
tests/test_bench.py::test_emit_time[setitem-34]
0%
238 µs
238.6 µs
test_emit_time[setitem-50]
tests/test_bench.py::test_emit_time[setitem-50]
0%
301.5 µs
302.5 µs
test_evented_creation
tests/test_bench.py::test_evented_creation
-6%
7.4 ms
7.9 ms
test_evented_setattr
tests/test_bench.py::test_evented_setattr
-2%
42.1 µs
42.9 µs

Commits

Click on a commit to change the comparison range
base
main
c4c83b2
-30%
install ruff
ff18b86
2 months ago by tlambert03
0%
skip test
4156847
a month ago by tlambert03
0%
Add mypy to pip install command
330cfd1
a month ago by tlambert03
-35%
prebuild sig
66a86ce
a month ago by tlambert03
ResourcesHomePricingDocsBlogGitHub
Copyright © 2024 CodSpeed Technology SAS. All rights reserved.