Add `__struct_encode_fields__` to type stub by ncoghlan · Pull Request #813 · msgspec/msgspec · GitHub
Skip to content

Add __struct_encode_fields__ to type stub - #813

Merged
sobolevn merged 3 commits into
msgspec:mainfrom
ncoghlan:patch-1
Jul 3, 2026
Merged

Add __struct_encode_fields__ to type stub#813
sobolevn merged 3 commits into
msgspec:mainfrom
ncoghlan:patch-1

Conversation

@ncoghlan

Copy link
Copy Markdown
Contributor

Static type checkers currently complain if querying the encoded field names instead of the attribute names.

Static type checkers currently complain if querying the
encoded field names instead of the attribute names.
@ncoghlan

Copy link
Copy Markdown
Contributor Author

@sobolevn

sobolevn commented Jul 3, 2026

Copy link
Copy Markdown
Member

@sobolevn
sobolevn added this pull request to the merge queue Jul 3, 2026
Merged via the queue into msgspec:main with commit fbb5a84 Jul 3, 2026
22 of 24 checks passed
sobolevn added a commit to adriangb/msgspec that referenced this pull request Jul 3, 2026
```python
>>> import msgspec
>>> class S(msgspec.Struct):
...     i: int
...     
>>> S(i=1).__struct_encode_fields__
('i',)
```

For some reason CI in msgspec#813 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 <Siyet@users.noreply.github.com>
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.

2 participants