Skip to content

chore(release): bump version to 2.0.0b11 - #98

Merged
GreenGrassBlueOcean merged 3 commits into
OpenWebNet-HA:masterfrom
GreenGrassBlueOcean:chore/release-2.0.0-b11
Oct 21, 2026
Merged

GreenGrassBlueOcean merged 3 commits into
OpenWebNet-HA:masterfrom
GreenGrassBlueOcean:chore/release-2.0.0-b11

Conversation

@GreenGrassBlueOcean

@GreenGrassBlueOcean GreenGrassBlueOcean commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

What is the problem

OpenWebNet-HA/MyHOME needs a published OWNd==2.0.0b11: its manifest.json pins it, and the expose engine (OpenWebNet-HA/MyHOME#750) uses builders and profile flags that exist only on master. Since v2.0.0-b10 (2026-10-06), 39 PRs have been merged and none are released. Before tagging, the release branch also needed the following:

  1. Version and packaging. __version__ was 2.0.0-b10, not canonical PEP 440. Metadata lived in a legacy setup.py. pytz and python-dateutil were declared as runtime dependencies although only three relativedelta(years=…) calls used them.
  2. A changelog. The repository had none, and the b10 release notes live only on the GitHub release.

How is it solved

  1. Packaging (pyproject.toml, setup.py, OWNd/__init__.py, OWNd/message/energy.py)
    • __version__ = "2.0.0b11". tests/test_metadata.py checks that it is canonical PEP 440 and that it matches the installed distribution.
    • Metadata moves to PEP 621 [project] with PEP 639 license = "Apache-2.0" / license-files = ["LICENSE"], and setup.py becomes a shim.
    • Runtime dependencies drop to aiohttp and defusedxml. The three relativedelta calls in energy.py become date.replace(year=…). types-pytz / types-python-dateutil leave the CI and release workflows.
    • tzdata is added to the test extra on Windows (zoneinfo has no system database there), and tests/test_sync_documentation.py handles CRLF.
  2. CHANGELOG.md covers every PR merged since v2.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:
  3. Brought up to date with 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


How is it tested

Run on 0f67829 in a fresh Python 3.14 venv (pip install -e ".[test]"), on the same steps as ci.yml and release.yml:

  • pytest -q: 1893 passed, 2 skipped, test_metadata.py included. 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, and scripts/sync_documentation.py --check pass.
  • validate-pyproject pyproject.toml, python -m build, twine check --strict and check-wheel-contents pass. The wheel's metadata reads Version: 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"]
Loading

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).
  • Plant traces referenced by those fixtures live in 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.py re-checks the parsers and profiles against firmware_oracle.json in CI.


Release steps after merge

  1. Create a GitHub pre-release v2.0.0-b11 targeting master, with notes taken from CHANGELOG.md.
  2. Publishing it triggers release.yml, which validates, builds, and publishes OWNd 2.0.0b11 to PyPI through trusted publishing.
  3. Check https://pypi.org/project/OWNd/2.0.0b11/ before releasing OpenWebNet-HA/MyHOME against it.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

fedem95
fedem95 previously approved these changes Oct 10, 2026

@fedem95 fedem95 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@GreenGrassBlueOcean
GreenGrassBlueOcean dismissed fedem95’s stale review October 10, 2026 08:43

The merge-base changed after approval.

@GreenGrassBlueOcean GreenGrassBlueOcean changed the title chore(release): bump version to 2.0.0-b11 chore(release): bump version to 2.0.0b11 Oct 19, 2026
@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor Author

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:

  1. PR fix(connection): only retry idempotent queries after mid-send transport loss #131 — Retry guard split out ( ix/non-query-no-retry)

  2. PR feat(message,profiles): add declarative expose frame builders, query helpers, and profile flags #129 — Declarative expose builders ( eat/declarative-expose)

    • Rejects naive datetime/ ime inputs in OWNGatewayCommand unless ime_zone is explicitly provided (instead of silently encoding UTC

…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>
@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor Author

@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:

  • 79 pull requests reviewed across OpenWebNet-HA (69 in OWNd, 10 in MyHOME), in 92 review rounds since 17 September.
  • 68 of the 76 OWNd PRs merged since then went through your review. That is roughly nine out of ten.
  • Close to 80,000 characters of review text. These were real reviews: you ran the suite on the exact commit, checked claims against the traces and the oracle TSVs, and compared them with what your own MH201 answers.
  • 7 PRs of your own, all merged. They include the foundations everything else builds on: the OWNd 2.0 runtime engine (Consolidate the OWNd 2.0 runtime engine #26, +3,591 / −1,019), the CI and packaging baseline (Add CI and packaging baseline #24), unvendoring OWNd from MyHOME (MyHOME#253, 60 files and 5,500 lines gone), and the MH201 hardening and plant traces.
  • 125 issues and PRs where you took part in the discussion.

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 0f67829. The changelog covers #83–#133, and the description lists the changes callers will notice. Your earlier review was dismissed by the push, so it needs a fresh approval before I can tag v2.0.0-b11 and publish to PyPI.

fedem95
fedem95 previously approved these changes Oct 20, 2026

@fedem95 fedem95 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's ok for me!
Two small fixes, non-blocking:

  • CHANGELOG.md names OWNLoadControlEvent / OWNLoadControlCommand; the classes are OWNLoadEvent / OWNLoadCommand.
  • README.md line 294 still tells contributors to install types-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>
@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor Author

@fedem95 Both fixes are in 5530f40:

  • CHANGELOG.md: WHO 3 now names OWNLoadEvent / OWNLoadCommand.
  • README.md line 294: pip install -e ".[test,serial]" ruff mypy, without the stub packages.

README.md is the PyPI description, so the fix ships with 2.0.0b11 (checked in the built wheel's METADATA). On 5530f40: pytest -q 1893 passed, 2 skipped; sync_documentation.py --check passes. No code changed.

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 fedem95 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both fixes are in 5530f40: the changelog now names OWNLoadEvent / OWNLoadCommand, and the README no longer installs the stub packages. Approving again.

@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit bf65616 into OpenWebNet-HA:master Oct 21, 2026
8 checks passed
@GreenGrassBlueOcean
GreenGrassBlueOcean deleted the chore/release-2.0.0-b11 branch October 21, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants