release: 0.23.0 (seven builder defects and gaps, one bump) - #81
Merged
Conversation
Bumps __version__ to 0.23.0, promotes Unreleased to [0.23.0], adds the tag link definition. Seven issues, all filed by a consumer converting a multi-device adapter onto DeviceTreeBuilder, each with a runnable reproduction. Batched into one release rather than a patch now and a minor later, because every version bump costs a Yocto image rebuild downstream. Fixed, all silent in production: #72 conditionally_settable was inert. The property came out not-settable, which looked right, but the entity_setter was registered only when settable was true, so a later set_settable(True) opened a /set topic with no translator and the property accepted commands and discarded them. The only route the API offered for runtime settability, and it did not work. #77 A value the model already held never reached the wire. Reachable only since 0.22.0: before the reuse fix, twin and model started equally empty. initial_value now seeds rather than overwrites. #73 remove() raised when the model had already dropped the group, leaving the device gone from the broker and a corpse in the builder. #75 remove() left deferred descendants, so resolve_deferred() rebuilt a torn-down device. #76 add() recorded bookkeeping after materializing, stranding a live device on a raise or a re-entrant call. Added and changed: #78 remove_capabilities(), the inverse of extend(). #74 bookkeeping keyed on the resolved device id rather than DeviceSpec object identity, so a producer can re-derive its spec set freely instead of holding a process-lifetime map it was never told to keep. Minor rather than patch: #78 adds a method and #74 changes a documented contract. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
__version__to 0.23.0, promotes[Unreleased], adds the tag link. No code changes.Seven issues, all filed by a consumer converting a multi-device adapter onto
DeviceTreeBuilder, each with a runnable reproduction. Batched into one release rather than a patch now and a minor later, since every version bump costs a Yocto image rebuild downstream.Fixed — all silent in production
conditionally_settablewas inert. The property came out not-settable, which looked right; theentity_setterwas registered only whensettablewas true, so a laterset_settable(True)opened a/settopic with no translator and the property accepted commands and discarded them. The only route the API offered for runtime settability, and it did not work.remove()raised when the model had already dropped the group, leaving the device gone from the broker and a corpse in the builder that short-circuited the nextadd().remove()left deferred descendants, soresolve_deferred()rebuilt a torn-down device.add()recorded bookkeeping after materializing, stranding a live broker-visible device on a raise or a re-entrant call.Added / Changed
remove_capabilities(), the inverse ofextend().DeviceSpecobject identity, so a producer can re-derive its spec set freely instead of holding a process-lifetime map the API never told it to keep.Minor rather than patch: #78 adds a method and #74 changes a documented contract.
Verification
ruff check/ruff format --checkclean; markdownlint cleanpython -m buildproduces both artifacts; wheelMETADATAreadsVersion: 0.23.0ebus_sdk.__version__,pyproject.toml's dynamic attr, and thesetup.pyregex shim🤖 Generated with Claude Code