Repository navigation
chore(release): bump version to 2.0.0b11 - #98
GreenGrassBlueOcean merged 3 commits into
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
fedem95
left a comment
There was a problem hiding this comment.
Approving. The branch is the pre-fix #95 plus the bump (1 ahead, 13 behind master); merged locally into master (4e39126) the only change is __version__ = "2.0.0-b11", and set_frequency("101", 96200) still gives *#16*101*#6*0*96200##. OWNd suite on that merge: 1287 passed; MyHOME against the same master: 3521 passed, 1 skipped.
For the release itself:
- b11 carries seven PRs since v2.0.0-b10, not only #95: #83, #84, #93, #99, #90, #92, #95. Worth listing them all in the release notes.
- The description says WHO 16 is "grounded in authentic physical L4561N hardware captures"; on #95 you described that trace as filtered, with no ACK/NACK and no state change, cited only as "sent on a real plant".
- The diff GitHub shows still contains the old
sound.py({khz:06d}) and the green CI is from 2026-10-08 on that branch. A rebase on master would reduce the diff to the version line and run CI on what gets published.
The merge-base changed after approval.
e98bb95 to
b2e3c7d
Compare
|
Hi @fedem95, We ran a full Home Assistant Core readiness audit on OWNd (and MyHOME) and addressed all the findings across the open PRs (including your review points on #98 and #129). Every branch is rebased on master and 100% green in CI (100% coverage + MyHOME conformance). Here is the summary of what changed and the recommended review/merge order:
|
b2e3c7d to
84a6818
Compare
…penWebNet-HA#132, OpenWebNet-HA#133 to the changelog Brings in OpenWebNet-HA#132 (typed exceptions, fast send reconnect), OpenWebNet-HA#133 (discovery shim removal, MH201 retry notes) and OpenWebNet-HA#129 (expose builders, query helpers, tri-state profile flags). OWNd/__init__.py keeps master's exception re-exports with __version__ = "2.0.0b11". Changelog dated 2026-10-20. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@fedem95, before asking for one more review, I want to say thank you properly, because b11 is as much your release as anyone's. I went back through the history to put some numbers on it:
The numbers don't capture the precision. #129 is a good example: you found that two profile overrides rested on oracle verdicts nobody had published, and you spotted that the MH201 never fills the WHO 13 timezone field. Those catches keep this library honest about what the hardware actually does, and they make me much more comfortable shipping it to everyone running MyHOME. So, thank you. It has been a pleasure working with you. And the ask: could you take a look at this one? It is the b11 release PR, now merged with master (#129, #132 and #133 included) at |
fedem95
left a comment
There was a problem hiding this comment.
It's ok for me!
Two small fixes, non-blocking:
CHANGELOG.mdnamesOWNLoadControlEvent/OWNLoadControlCommand; the classes areOWNLoadEvent/OWNLoadCommand.README.mdline 294 still tells contributors to installtypes-python-dateutil/types-pytz.
And thank you for the kind words above. They go both ways: most of what b11 contains was written by you. You took every review point seriously, often came back with better evidence than I had asked for, and fixed things quickly. It's been a pleasure working on this release with you.
…ges from README CHANGELOG.md named OWNLoadControlEvent / OWNLoadControlCommand; the classes are OWNLoadEvent / OWNLoadCommand. README.md still told contributors to install types-python-dateutil / types-pytz, which this release no longer needs. README.md is the PyPI description, so 2.0.0b11 ships the fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@fedem95 Both fixes are in 5530f40:
README.md is the PyPI description, so the fix ships with 2.0.0b11 (checked in the built wheel's METADATA). On 5530f40: The ruleset dismisses approvals on push, so could you approve once more? Thank you, also for the kind words. It's been a pleasure on my side too. |
fedem95
left a comment
There was a problem hiding this comment.
Both fixes are in 5530f40: the changelog now names OWNLoadEvent / OWNLoadCommand, and the README no longer installs the stub packages. Approving again.
What is the problem
OpenWebNet-HA/MyHOMEneeds a publishedOWNd==2.0.0b11: itsmanifest.jsonpins it, and the expose engine (OpenWebNet-HA/MyHOME#750) uses builders and profile flags that exist only onmaster. Sincev2.0.0-b10(2026-10-06), 39 PRs have been merged and none are released. Before tagging, the release branch also needed the following:__version__was2.0.0-b10, not canonical PEP 440. Metadata lived in a legacysetup.py.pytzandpython-dateutilwere declared as runtime dependencies although only threerelativedelta(years=…)calls used them.How is it solved
pyproject.toml,setup.py,OWNd/__init__.py,OWNd/message/energy.py)__version__ = "2.0.0b11".tests/test_metadata.pychecks that it is canonical PEP 440 and that it matches the installed distribution.[project]with PEP 639license = "Apache-2.0"/license-files = ["LICENSE"], andsetup.pybecomes a shim.aiohttpanddefusedxml. The threerelativedeltacalls inenergy.pybecomedate.replace(year=…).types-pytz/types-python-dateutilleave the CI and release workflows.tzdatais added to thetestextra on Windows (zoneinfohas no system database there), andtests/test_sync_documentation.pyhandles CRLF.CHANGELOG.mdcovers every PR merged sincev2.0.0-b10(fix(#77): review follow-ups (fan zone, brightness log, WHO 25 commands) and golden corrections #83–refactor(connection): remove _resolve_discovery_fn test shim and document MH201 retry semantics #133). Highlights:report_*/write_*builders,OWNHeatingEvent.probe_temperature, and the tri-stateGatewayProfileinjection flags.Nonemeans unverified; onlyF461Profilesets them.OWNd.exceptions,last_error, opt-inraise_on_error,on_auth_error), andsend()reconnects only once, with a 2 s cooldown. Mid-send transport loss replays only idempotent queries, and input bounds are hardened.master(0f67829). The merge adds feat(message,profiles): add declarative expose frame builders, query helpers, and profile flags #129, feat(connection): add typed exceptions, fast send reconnect, and API hardening #132 and refactor(connection): remove _resolve_discovery_fn test shim and document MH201 retry semantics #133. The one conflict,OWNd/__init__.py, keeps master's exception re-exports with__version__ = "2.0.0b11".Changes callers can notice
set_*_to_now, raiseValueErrorfor UTC offsets that are not whole hours (Asia/Kolkata,Asia/Kathmandu,America/St_Johns) instead of truncating them (feat(message,profiles): add declarative expose frame builders, query helpers, and profile flags #129).OWNd.connection.gatewayno longer looks upfind_gateways/get_gateway/get_portthrough the package, so tests have to patchOWNd.connection.gateway.*(refactor(connection): remove _resolve_discovery_fn test shim and document MH201 retry semantics #133; MyHOME side inOpenWebNet-HA/MyHOME#758).OWNCommandSession.send()reconnects only once. Callers that need the full 5-attempt connect window callconnect()first (feat(connection): add typed exceptions, fast send reconnect, and API hardening #132, refactor(connection): remove _resolve_discovery_fn test shim and document MH201 retry semantics #133).Noneon every profile exceptF461Profile. Consumers must treatNoneas unverified, not asFalse(feat(message,profiles): add declarative expose frame builders, query helpers, and profile flags #129).How is it tested
Run on
0f67829in a fresh Python 3.14 venv (pip install -e ".[test]"), on the same steps asci.ymlandrelease.yml:pytest -q: 1893 passed, 2 skipped,test_metadata.pyincluded.scripts/verify_coverage.py coverage.xml 80.0: 6,444 / 6,444 statements (100.0%).ruff check OWNd tests setup.py scripts,mypy OWNd tests/typing(no issues),scripts/verify_library_standards.py, andscripts/sync_documentation.py --checkpass.validate-pyproject pyproject.toml,python -m build,twine check --strictandcheck-wheel-contentspass. The wheel's metadata readsVersion: 2.0.0b11,License-Expression: Apache-2.0,Requires-Python: >=3.11,Requires-Dist: aiohttp, defusedxml.State diagram
flowchart LR A["39 PRs merged since v2.0.0-b10<br/>#83 – #133"] --> B["Merge master into release branch<br/>(adds #129, #132, #133)"] B --> C["__version__ = 2.0.0b11<br/>PEP 621 / 639 metadata<br/>runtime deps: aiohttp, defusedxml"] C --> D["CHANGELOG.md"] D --> E["CI green + review"] E --> F["Merge #98"] F --> G["GitHub pre-release v2.0.0-b11 on master"] G --> H["release.yml: validate, build,<br/>publish OWNd 2.0.0b11 to PyPI"]Where are the traces
This PR changes no protocol behaviour, so it adds no traces. The released code is pinned by the fixtures its constituent PRs added:
tests/golden/corpus.json/SOURCE.yaml: 164 golden frames with provenance.tests/golden/firmware_oracle.json: 509 oracle inputs across 12 emulated firmwares (F450, F453, F453AV, F454, F459, F460, F461, H4684, MH200, MH200N, MH202, MyHomeServer1).OpenWebNet-HA/MyHOME/tests/fixtures/traces/.What does the Oracle / Encyclopedia say
Nothing new is claimed here. Each subsystem's oracle and Encyclopedia evidence is in the PR that introduced it, and
tests/test_firmware_oracle_conformance.pyre-checks the parsers and profiles againstfirmware_oracle.jsonin CI.Release steps after merge
v2.0.0-b11targetingmaster, with notes taken fromCHANGELOG.md.release.yml, which validates, builds, and publishesOWNd 2.0.0b11to PyPI through trusted publishing.OpenWebNet-HA/MyHOMEagainst it.