Avatar for the pyapp-kit user
pyapp-kit
psygnal
BlogDocsChangelog

feat: make Signal and SignalInstance Generic, support static type validation of signal connections

#304
Comparing
tlambert03:generic-signal
(
44c222b
) with
main
(
8bf2d82
)
CodSpeed Performance Gauge
-53%
Improvements
1
Regressions
1
Untouched
65
New
0
Dropped
0
Ignored
0

Benchmarks

Failed

test_create_signal_instanceRegression
tests/test_bench.py::test_create_signal_instance
CodSpeed Performance Gauge
-53%
34.8 µs
73.3 µs

Improved

test_create_signal
tests/test_bench.py::test_create_signal
CodSpeed Performance Gauge
×2.3
62.8 µs
27.4 µs

Passed

test_dataclass_setattr[attrs]
tests/test_bench.py::test_dataclass_setattr[attrs]
CodSpeed Performance Gauge
+1%
65.5 µs
64.6 µs
test_dataclass_group_create[dataclass]
tests/test_bench.py::test_dataclass_group_create[dataclass]
CodSpeed Performance Gauge
+1%
12.8 µs
12.7 µs
test_dataclass_setattr[msgspec]
tests/test_bench.py::test_dataclass_setattr[msgspec]
CodSpeed Performance Gauge
+1%
65.8 µs
65.3 µs
test_emit_time[real_func-50]
tests/test_bench.py::test_emit_time[real_func-50]
CodSpeed Performance Gauge
+1%
142.8 µs
141.9 µs
test_emit_time[method-2]
tests/test_bench.py::test_emit_time[method-2]
CodSpeed Performance Gauge
+1%
59.3 µs
59 µs
test_emit_time[partial_method-2]
tests/test_bench.py::test_emit_time[partial_method-2]
CodSpeed Performance Gauge
0%
61.8 µs
61.6 µs
test_emit_time[real_func-34]
tests/test_bench.py::test_emit_time[real_func-34]
CodSpeed Performance Gauge
0%
116.3 µs
115.9 µs
test_emit_time[partial_method-50]
tests/test_bench.py::test_emit_time[partial_method-50]
CodSpeed Performance Gauge
0%
147.7 µs
147.3 µs
test_emit_time[setattr-2]
tests/test_bench.py::test_emit_time[setattr-2]
CodSpeed Performance Gauge
0%
53.7 µs
53.5 µs
test_emit_time[method-34]
tests/test_bench.py::test_emit_time[method-34]
CodSpeed Performance Gauge
0%
102.5 µs
102.2 µs
test_emit_time[partial_method-18]
tests/test_bench.py::test_emit_time[partial_method-18]
CodSpeed Performance Gauge
0%
90.9 µs
90.6 µs
test_emit_time[setattr-18]
tests/test_bench.py::test_emit_time[setattr-18]
CodSpeed Performance Gauge
0%
59.9 µs
59.7 µs
test_emit_time[partial-2]
tests/test_bench.py::test_emit_time[partial-2]
CodSpeed Performance Gauge
0%
59.2 µs
59 µs
test_emit_time[function-50]
tests/test_bench.py::test_emit_time[function-50]
CodSpeed Performance Gauge
0%
104.8 µs
104.6 µs
test_emit_time[function-18]
tests/test_bench.py::test_emit_time[function-18]
CodSpeed Performance Gauge
0%
72.8 µs
72.6 µs
test_emit_time[partial-50]
tests/test_bench.py::test_emit_time[partial-50]
CodSpeed Performance Gauge
0%
127.9 µs
127.6 µs
test_emit_time[method-50]
tests/test_bench.py::test_emit_time[method-50]
CodSpeed Performance Gauge
0%
123.8 µs
123.5 µs
test_emit_time[method-18]
tests/test_bench.py::test_emit_time[method-18]
CodSpeed Performance Gauge
0%
80.8 µs
80.7 µs
test_emit_time[setitem-50]
tests/test_bench.py::test_emit_time[setitem-50]
CodSpeed Performance Gauge
0%
89 µs
88.9 µs
test_emit_time[partial-18]
tests/test_bench.py::test_emit_time[partial-18]
CodSpeed Performance Gauge
0%
82.7 µs
82.6 µs
test_emit_fast
tests/test_bench.py::test_emit_fast
CodSpeed Performance Gauge
0%
20.9 µs
20.9 µs
test_emit_time[lambda-34]
tests/test_bench.py::test_emit_time[lambda-34]
CodSpeed Performance Gauge
0%
88.6 µs
88.6 µs
test_evented_setattr
tests/test_bench.py::test_evented_setattr
CodSpeed Performance Gauge
0%
26.2 µs
26.1 µs
test_emit_time[partial-34]
tests/test_bench.py::test_emit_time[partial-34]
CodSpeed Performance Gauge
0%
105.6 µs
105.5 µs
test_emit_time[real_func-18]
tests/test_bench.py::test_emit_time[real_func-18]
CodSpeed Performance Gauge
0%
89 µs
89 µs
test_emit_time[lambda-2]
tests/test_bench.py::test_emit_time[lambda-2]
CodSpeed Performance Gauge
0%
56.7 µs
56.7 µs
test_emit_time[setitem-18]
tests/test_bench.py::test_emit_time[setitem-18]
CodSpeed Performance Gauge
0%
67.2 µs
67.2 µs
test_dataclass_group_create[msgspec]
tests/test_bench.py::test_dataclass_group_create[msgspec]
CodSpeed Performance Gauge
0%
20 µs
20 µs
test_emit_time[partial_method-34]
tests/test_bench.py::test_emit_time[partial_method-34]
CodSpeed Performance Gauge
0%
119.7 µs
119.7 µs
test_emit_time[setitem-34]
tests/test_bench.py::test_emit_time[setitem-34]
CodSpeed Performance Gauge
0%
77.8 µs
77.8 µs
test_emit_time[real_func-2]
tests/test_bench.py::test_emit_time[real_func-2]
CodSpeed Performance Gauge
0%
60.4 µs
60.4 µs
test_emit_time[function-34]
tests/test_bench.py::test_emit_time[function-34]
CodSpeed Performance Gauge
0%
88.5 µs
88.6 µs
test_emit_time[print-18]
tests/test_bench.py::test_emit_time[print-18]
CodSpeed Performance Gauge
0%
170.4 µs
170.5 µs
test_emit_time[print-34]
tests/test_bench.py::test_emit_time[print-34]
CodSpeed Performance Gauge
0%
266 µs
266.2 µs
test_connect_time[setitem-]
tests/test_bench.py::test_connect_time[setitem-]
CodSpeed Performance Gauge
0%
63.7 µs
63.8 µs
test_connect_time[function-check_types]
tests/test_bench.py::test_connect_time[function-check_types]
CodSpeed Performance Gauge
0%
142.7 µs
142.9 µs
test_connect_time[real_func-]
tests/test_bench.py::test_connect_time[real_func-]
CodSpeed Performance Gauge
0%
119.2 µs
119.4 µs
test_dataclass_group_create[attrs]
tests/test_bench.py::test_dataclass_group_create[attrs]
CodSpeed Performance Gauge
0%
20 µs
20 µs
test_connect_time[partial-]
tests/test_bench.py::test_connect_time[partial-]
CodSpeed Performance Gauge
0%
215.1 µs
215.5 µs
test_emit_time[setattr-34]
tests/test_bench.py::test_emit_time[setattr-34]
CodSpeed Performance Gauge
0%
65.6 µs
65.7 µs
test_connect_time[function-]
tests/test_bench.py::test_connect_time[function-]
CodSpeed Performance Gauge
0%
135.8 µs
136.1 µs
test_emit_time[setattr-50]
tests/test_bench.py::test_emit_time[setattr-50]
CodSpeed Performance Gauge
0%
71.6 µs
71.8 µs
test_emit_time[lambda-50]
tests/test_bench.py::test_emit_time[lambda-50]
CodSpeed Performance Gauge
0%
104.6 µs
104.8 µs
test_connect_time[method-]
tests/test_bench.py::test_connect_time[method-]
CodSpeed Performance Gauge
0%
169.3 µs
169.7 µs
test_connect_time[lambda-]
tests/test_bench.py::test_connect_time[lambda-]
CodSpeed Performance Gauge
0%
134.9 µs
135.2 µs
test_emit_time[print-50]
tests/test_bench.py::test_emit_time[print-50]
CodSpeed Performance Gauge
0%
359.9 µs
360.9 µs
test_connect_time[real_func-check_types]
tests/test_bench.py::test_connect_time[real_func-check_types]
CodSpeed Performance Gauge
0%
122.6 µs
123 µs
test_connect_time[lambda-check_types]
tests/test_bench.py::test_connect_time[lambda-check_types]
CodSpeed Performance Gauge
0%
139.1 µs
139.5 µs
test_emit_time[setitem-2]
tests/test_bench.py::test_emit_time[setitem-2]
CodSpeed Performance Gauge
0%
55.1 µs
55.3 µs
test_connect_time[method-check_types]
tests/test_bench.py::test_connect_time[method-check_types]
CodSpeed Performance Gauge
0%
175.9 µs
176.5 µs
test_connect_time[print-]
tests/test_bench.py::test_connect_time[print-]
CodSpeed Performance Gauge
0%
732 µs
735.2 µs
test_connect_time[setattr-check_types]
tests/test_bench.py::test_connect_time[setattr-check_types]
CodSpeed Performance Gauge
0%
63.1 µs
63.4 µs
test_connect_time[partial-check_types]
tests/test_bench.py::test_connect_time[partial-check_types]
CodSpeed Performance Gauge
0%
226.2 µs
227.2 µs
test_connect_time[partial_method-check_types]
tests/test_bench.py::test_connect_time[partial_method-check_types]
CodSpeed Performance Gauge
0%
253.6 µs
254.7 µs
test_connect_time[setattr-]
tests/test_bench.py::test_connect_time[setattr-]
CodSpeed Performance Gauge
0%
63.2 µs
63.5 µs
test_connect_time[partial_method-]
tests/test_bench.py::test_connect_time[partial_method-]
CodSpeed Performance Gauge
0%
245.5 µs
246.6 µs
test_connect_time[print-check_types]
tests/test_bench.py::test_connect_time[print-check_types]
CodSpeed Performance Gauge
-1%
731.3 µs
735 µs
test_emit_time[lambda-18]
tests/test_bench.py::test_emit_time[lambda-18]
CodSpeed Performance Gauge
-1%
72.6 µs
73 µs
test_connect_time[setitem-check_types]
tests/test_bench.py::test_connect_time[setitem-check_types]
CodSpeed Performance Gauge
-1%
63.7 µs
64.1 µs
test_emit_time[function-2]
tests/test_bench.py::test_emit_time[function-2]
CodSpeed Performance Gauge
-1%
56.7 µs
57.1 µs
test_emit_time[print-2]
tests/test_bench.py::test_emit_time[print-2]
CodSpeed Performance Gauge
-1%
75.9 µs
76.5 µs
test_dataclass_setattr[pydantic]
tests/test_bench.py::test_dataclass_setattr[pydantic]
CodSpeed Performance Gauge
-1%
114.4 µs
115.4 µs
test_dataclass_group_create[pydantic]
tests/test_bench.py::test_dataclass_group_create[pydantic]
CodSpeed Performance Gauge
-1%
22.1 µs
22.4 µs
test_dataclass_setattr[dataclass]
tests/test_bench.py::test_dataclass_setattr[dataclass]
CodSpeed Performance Gauge
-3%
54.5 µs
55.9 µs
test_evented_creation
tests/test_bench.py::test_evented_creation
CodSpeed Performance Gauge
-6%
1.7 ms
1.8 ms

Commits

Click on a commit to change the comparison range
Base
main
8bf2d82
-23%
install ruff
ff18b86
1 year ago
by tlambert03
-1%
skip test
4156847
1 year ago
by tlambert03
+1%
Add mypy to pip install command
330cfd1
1 year ago
by tlambert03
-33%
prebuild sig
66a86ce
1 year ago
by tlambert03
0%
Merge branch 'main' into generic-signal
cdb2ec3
8 months ago
by tlambert03
+4%
Merge branch 'generic-signal' of https://github.com/tlambert03/psygnal into generic-signal
68d3169
9 days ago
by tlambert03
0%
fix stub
c408d56
9 days ago
by tlambert03
0%
Merge branch 'main' into generic-signal
44c222b
5 days ago
by tlambert03
© 2025 CodSpeed Technology
Home Terms Privacy Docs