/
/
/
# What does this implement/fix? <!-- Quick description and explanation of changes. --> When `json_dumps` hit a value it could not convert, the handler returned the value unchanged. orjson then called the handler again with the same value, over and over, until it gave up with "default serializer exceeds recursion limit". That message does not say what went wrong or which value caused it. Cache writes run in a background task, so all you got was that one line in the log and no way to trace it back. The handler now raises an error naming the type that could not be converted. The type name includes the module it came from, because several providers ship classes with the same names as our own models. Two lines in the same function never did anything and are fixed as well. The check for dict value iterators compared a class against a string, so it was always false. `dict_values` was listed twice in the type check. The `raise_unhandled` argument is removed. Nothing used it. I wasn’t able to test this locally but the change is a straightforward improvement to error clarity and tests have been added. **Related issue (if applicable):** - related issue https://github.com/music-assistant/support/issues/5974 ## Types of changes <!-- Tick exactly one box. CI (.github/workflows/pr-labels.yaml) derives the label from the ticked box and applies it automatically; the release-notes generator uses that same label to slot this change into the next release notes. --> - [X] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [ ] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` ## Checklist - [X] The code change is tested and works locally. - [X] `pre-commit run --all-files` passes. - [X] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [X] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate. Co-authored-by: Claude <[email protected]>