This feature was introduced in 2.10 but results a lot of data being
overwritten with (potentially) incorrect data the next time a user runs
`mbsync` over their library.
To make this less of a "breaking" change, make this feature opt-in. The
users who want this large change can enable the functionality.
ReadError and WriteError formatted the super() proxy in their f-string, so file read and write failures lost the path and reason.
Use super().__str__() to return the FileOperationError message.
- Wrap new test_dbcore.py tests in TestModelTypeFallback class
- Add changelog entry for the modify -a multi-value field fix
- Document multi-valued field support for album modify in cli.rst
Per @snejus review: let super().__getattribute__ run normally and only
intercept its AttributeError when the attribute resolves to a
cached_property. Re-raise as RuntimeError using with_traceback(
exc.__traceback__) so the wrapped error still points at the real
failing line, and raise ... from None to suppress the chained
"during handling of the above exception" block that doubled the CLI
traceback.
Update tests to match: cause chain is now suppressed and the real
traceback lives on the RuntimeError itself. Also add a changelog
entry under Bug fixes.
if import.from_scratch was set in the config, runnning mbsync would
clear any metadata not provided by MBz (replay gain, lyrics, genres...).
we now ignore this setting when running mbsync to preserve metadata.
Fixes: #6613
* the pugin used an empty format string unless --count was provided,
resulting in outputs like `: 1`. it now correctly displays duplicated
items.
* --count was ignored (aside from above bug), and item count was always
appended to output.