Skip to content

Fix dec_hook exception type in json.decode docstring - #1127

Merged
provinzkraut merged 1 commit into
msgspec:mainfrom
rvaccone:contrib/774-dec-hook-docstring
Jul 20, 2026
Merged

provinzkraut merged 1 commit into
msgspec:mainfrom
rvaccone:contrib/774-dec-hook-docstring

Conversation

@rvaccone

Copy link
Copy Markdown
Contributor

Fixes #774.

json.decode was the only dec_hook docstring telling users to raise a
TypeError for an unsupported type. json.Decoder, msgpack.decode,
msgpack.Decoder, and convert all say NotImplementedError, which is the
intended contract you confirmed in #774 (TypeError/ValueError are for a
value that doesn't match the type). This changes the one line to match.

Grepped the rest of the tree for the wording and this docstring was the only
copy, so there's nothing to fix in the docs or stubs. Added an ## Unreleased
changelog entry. I pointed it at the issue with {issue}774`` since there was
no PR number when I wrote it; happy to swap it to {pr} with this PR's number.

Disclosure: I used AI assistance (Claude) to draft this change and reviewed the
result.

Fixes msgspec#774.

json.decode was the only dec_hook docstring saying to raise a TypeError
for an unsupported type; json.Decoder, msgpack.decode, msgpack.Decoder,
and convert all say NotImplementedError, which jcrist confirmed in msgspec#774
is the intended contract (TypeError/ValueError are for bad values).

The changelog entry points at the issue since there's no PR number yet;
it can reference the PR instead once one exists.

Disclosure: I used AI assistance (Claude) to draft this change and
reviewed the result.

@provinzkraut provinzkraut left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks!

@provinzkraut
provinzkraut added this pull request to the merge queue Jul 20, 2026
@provinzkraut
provinzkraut removed this pull request from the merge queue due to a manual request Jul 20, 2026
@codspeed

codspeed Bot commented Jul 20, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 139 untouched benchmarks
⏩ 135 skipped benchmarks1


Comparing rvaccone:contrib/774-dec-hook-docstring (dcf6a65) with main (a1ebbcd)

Open in CodSpeed

Footnotes

  1. 135 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@provinzkraut
provinzkraut added this pull request to the merge queue Jul 20, 2026
Merged via the queue into msgspec:main with commit 593ec54 Jul 20, 2026
26 of 27 checks passed
Brohammad pushed a commit to Brohammad/msgspec that referenced this pull request Sep 4, 2026
The 0.21.1 to 0.22.0 changelog batch (msgspec#1112) landed on 2026-07-03. Four
user-visible changes merged between then and the 0.22.0 release on
2026-08-11 never got an entry:

- msgspec#700, overloads on the `Meta` stub, so type checkers reject mixing
`gt` with `ge` and `lt` with `le`
- msgspec#1028, `null` placed last in the `anyOf` generated for optional unions
- msgspec#1114, `__struct_encode_fields__` added to `src/msgspec/__init__.pyi`
(its companion msgspec#813 only touched `tests/typing`, so it needs no entry of
its own)
- msgspec#1118, `json.encode` raising `TypeError` for a `dict` keyed by a plain
`str`-valued `enum.Enum`

I went over every PR merged in that window. The rest need no entry: msgspec#813
and msgspec#1117 are tests only, msgspec#1121 fixes an unreleased regression from
msgspec#1028, msgspec#1145 is an unused variable under free-threaded builds, and msgspec#1146
and msgspec#1148 are CI and tooling. msgspec#1127, msgspec#1135 and msgspec#1080 already have
entries.

Docs build clean with `--fail-on-warning`.

Note for whoever retries the release: the section is still headed
`Version 0.22.0 (2026-08-11)`, and that date will need updating, since
the tag was deleted after the upload failed. Refs msgspec#1134.

Co-authored-by: Siyet <[email protected]>
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.

What should dec_hook raise if the type is unsupported?

2 participants