Commit 76123a5
committed
release: 3.0.0, with both adapters at 1.0.0
First public release of the split: span-panel-api 3.0.0, span-panel-api-schema-0
1.0.0 and span-panel-api-schema-1 1.0.0. Every dependency floor between them now
names a stable version rather than the prerelease it tracked during development
-- a specifier naming a prerelease is pip's own signal that prereleases are
acceptable for that requirement, so the old floors would have left a released
install willing to resolve a future beta of its sibling unasked.
Changelogs carry public versions only. Every beta heading is folded into the
entry for the version it was working towards, described against the last public
release rather than against the beta before it, and a fix that only repaired an
earlier beta is gone entirely -- from the point of view of somebody upgrading
between released versions it never happened. That collapses thirteen bootstrap
betas into one 3.0.0 entry and drops the b8/b9/b10 retry-widening narrative, the
_charge_positive rename and the b1-to-b3 discover_adapters churn, none of which
a reader upgrading from 2.6.4 has any use for. RELEASE.md states the rule so the
next beta does not reintroduce the old shape.
Python floor raised to 3.14, matching the only thing that consumes this. Home
Assistant requires >=3.14.2 from 2026.3, and the SPAN integration requires HA
2026.8 or newer, so every install reaching this code is on 3.14 whatever we
declare. The old >=3.10 was never true in either direction: tests/test_packaging
imports tomllib, stdlib only from 3.11, and 3.10 replaces a Protocol's __init__
with (*args, **kwargs), so SchemaAdapter's declared constructor signature is not
introspectable there and the check that stops two independently-versioned wheels
disagreeing about construction had nothing to read. Floor and CI matrix are now
the same version, which is the only arrangement where a green run proves the
declared range. mypy's python_version follows the floor for the same reason.
Raising the target let ruff apply what it unlocks: asyncio.TimeoutError is the
builtin TimeoutError from 3.11, Generator[T, None, None] is Generator[T] from
3.13, and typing.TypeAlias is superseded by the type keyword. The two converted
aliases are annotation-only under `from __future__ import annotations`, so
nothing resolves them at runtime.
The eBus SDK ceiling is now a tested claim. schema-1 declared >=0.19,<0.24 while
the lock pinned 0.21.0 and 0.23.1 was current -- and the lock does not ship, so
every fresh install resolved the version CI had never run. Upgraded to 0.23.1
(ebus-mqtt-client 0.5.0 with it) and the suite is green, which makes the comment
above the bound true again.
Documentation corrected against what the code actually does. The README still
described HomiePropertyAccumulator, HomieLifecycle and HomieDeviceConsumer as
this package's own layers after they moved to schema-0, listed mqtt/accumulator
and mqtt/homie in a tree where neither exists, claimed three protocols while
showing four, credited a simulation engine removed in 2.3.0, and predated the
adapter errors, the widened SpanPanelServerError and the product_name retirement.
It gains a section on the hot-loading model, which is the thing a consumer most
needs and the thing nothing explained. schema-1's README announced "Status:
incomplete -- this distribution does not yet register a schema_1 adapter", which
has been false since its first beta and would have shipped on the 1.0.0 page.
Also adds span_panel_api_schema_1 to ruff's known-first-party, which the comment
directly above it exists to prevent being missed and did not, and adds schema-1
to the coverage measured in CI, which the pre-commit gate covered and the
uploaded report did not.1 parent 8623107 commit 76123a5
21 files changed
Lines changed: 489 additions & 1048 deletions
File tree
- .github/workflows
- packages
- schema-0
- schema-1
- src/span_panel_api_schema_1
- reference_payloads
- src/span_panel_api
- mqtt
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
20 | 25 | | |
21 | 26 | | |
22 | 27 | | |
| |||
64 | 69 | | |
65 | 70 | | |
66 | 71 | | |
| 72 | + | |
67 | 73 | | |
68 | 74 | | |
69 | 75 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
8 | 18 | | |
9 | 19 | | |
10 | 20 | | |
| |||
271 | 281 | | |
272 | 282 | | |
273 | 283 | | |
274 | | - | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
275 | 294 | | |
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
34 | 37 | | |
35 | 38 | | |
36 | 39 | | |
| |||
73 | 76 | | |
74 | 77 | | |
75 | 78 | | |
76 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
77 | 85 | | |
78 | 86 | | |
79 | 87 | | |
| |||
100 | 108 | | |
101 | 109 | | |
102 | 110 | | |
103 | | - | |
104 | | - | |
105 | | - | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
106 | 114 | | |
107 | 115 | | |
108 | 116 | | |
| |||
160 | 168 | | |
161 | 169 | | |
162 | 170 | | |
163 | | - | |
| 171 | + | |
164 | 172 | | |
165 | 173 | | |
166 | 174 | | |
| |||
172 | 180 | | |
173 | 181 | | |
174 | 182 | | |
175 | | - | |
| 183 | + | |
176 | 184 | | |
177 | 185 | | |
178 | 186 | | |
179 | 187 | | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
180 | 195 | | |
181 | 196 | | |
182 | | - | |
| 197 | + | |
183 | 198 | | |
184 | | - | |
| 199 | + | |
| 200 | + | |
185 | 201 | | |
186 | 202 | | |
187 | 203 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
| 14 | + | |
40 | 15 | | |
41 | 16 | | |
42 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
43 | 24 | | |
44 | 25 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
64 | 33 | | |
65 | 34 | | |
66 | 35 | | |
67 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
68 | 44 | | |
69 | 45 | | |
70 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | 31 | | |
| |||
0 commit comments