forked from bitcoinafterlife/bal-electrum-plugin
v0.5.11: update changelog
This commit is contained in:
50
CHANGELOG.md
50
CHANGELOG.md
@@ -2011,3 +2011,53 @@ user actually switches BASIC<->ADVANCED, and a manual Date choice is preserved.
|
|||||||
transaction list still refreshes) to be done by the owner from the test ZIP.
|
transaction list still refreshes) to be done by the owner from the test ZIP.
|
||||||
|
|
||||||
**Outcome:** DONE (delivered as test ZIP v0.5.10; commit only after confirmation).
|
**Outcome:** DONE (delivered as test ZIP v0.5.10; commit only after confirmation).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 35. v0.5.11 - Electrum 4.8.0 compatibility (json_db.register_dict removed)
|
||||||
|
|
||||||
|
**Date:** 2026-07-05
|
||||||
|
|
||||||
|
**Problem (owner-reported):** With Electrum 4.8.0 the plugin fails to load:
|
||||||
|
|
||||||
|
AttributeError: module 'electrum.json_db' has no attribute 'register_dict'
|
||||||
|
Exception: Error loading bal plugin: ...
|
||||||
|
|
||||||
|
**Root cause (verified against the official Electrum sources):** Electrum 4.8.0
|
||||||
|
REMOVED `json_db.register_dict` and moved the wallet-DB registration API to a new
|
||||||
|
module, `electrum.stored_dict`, switching from flat key names to '/'-separated
|
||||||
|
paths with a wildcard, and swapping the last two arguments:
|
||||||
|
|
||||||
|
Electrum <= 4.7.2 : json_db.register_dict(NAME, method, _type)
|
||||||
|
Electrum >= 4.8.0 : stored_dict.register_name('/NAME/*', _type, method)
|
||||||
|
|
||||||
|
Electrum migrated its own registrations the same way (e.g. `contacts`). The
|
||||||
|
conversion semantics are IDENTICAL in both versions (`_type is dict` ->
|
||||||
|
`method(**value)`, `_type is tuple` -> `method(*value)`, else `method(value)`);
|
||||||
|
only the registration API changed. `electrum.stored_dict` does not exist in
|
||||||
|
4.7.2, and `register_dict` no longer exists in 4.8.0, so a plain port would have
|
||||||
|
broken users still on 4.7.2.
|
||||||
|
|
||||||
|
**Fix (`bal/core/plugin_base.py`) - compatibility shim (owner's choice):** a
|
||||||
|
`_register_will_dict()` helper detects which API is available (`try: from
|
||||||
|
electrum.stored_dict import register_name` / `except ImportError:` fall back to
|
||||||
|
`json_db.register_dict`) and registers `heirs`, `will` and `will_settings`
|
||||||
|
through it. The plugin therefore works on BOTH Electrum 4.7.2 and 4.8.0.
|
||||||
|
`bal/__init__.py`: module docstring updated accordingly (text only).
|
||||||
|
|
||||||
|
**Verification:**
|
||||||
|
- Full test suite against **Electrum 4.7.2**: `266 passed` (same 2 pre-existing,
|
||||||
|
unrelated `baltx_fees` failures).
|
||||||
|
- Full test suite against **Electrum 4.8.0**: `266 passed` (same 2 pre-existing
|
||||||
|
failures) - previously ALL tests failed at collection with the AttributeError.
|
||||||
|
- Direct check: `heirs`, `will`, `will_settings` are confirmed REGISTERED in
|
||||||
|
Electrum 4.7.2 (`json_db.registered_dicts`) and in Electrum 4.8.0
|
||||||
|
(`stored_dict.registered_names`).
|
||||||
|
- `ruff`: all checks passed.
|
||||||
|
|
||||||
|
**Caveat:** the test suite covers the plugin logic, not the whole Qt GUI. Electrum
|
||||||
|
4.8.0 changed other things too, so further incompatibilities may only surface when
|
||||||
|
actually running the plugin; owner to confirm on Windows with the test ZIP.
|
||||||
|
|
||||||
|
**Outcome:** DONE (delivered as test ZIP v0.5.11; commit only after the owner
|
||||||
|
confirms the plugin loads and works on Electrum 4.8.0).
|
||||||
|
|||||||
Reference in New Issue
Block a user