You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi there and as always, thanks for the work you put into msgspec!
I'm decoding from a source that uses camelCase names, but also includes a "_links" key.
Decoding into a struct with rename="camel" results in a ValidationError for that field.
Easy as pie workaround is to declare = msgspec.field(name="_links"), so no blocker, but I wanted to check that this is the intended behavior.
Python 3.12.0 (main, Oct 7 2023, 15:26:19) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import msgspec
>>> classMyStruct(msgspec.Struct, rename="camel"):
... _field: str
...
>>> msgspec.json.decode(b'{"_field":"value"}', type=MyStruct)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
msgspec.ValidationError: Object missing required field `field`
>>> msgspec.__version__
'0.18.5'
One related data point is that the inflection library doesn't strip leading underscores when camelizing:
Python 3.12.0 (main, Oct 7 2023, 15:26:19) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import inflection
>>> inflection.camelize("_links")
'_links'
>>>
The text was updated successfully, but these errors were encountered:
This was "intended behavior" in that we had a test checking for this behavior, but it also wasn't extremely well thought out :). I agree that preserving leading underscores would be more ergonomic in these cases, and am happy to make a small change to fix this. Should be resolved by #620.
Description
Hi there and as always, thanks for the work you put into msgspec!
I'm decoding from a source that uses camelCase names, but also includes a
"_links"
key.Decoding into a struct with
rename="camel"
results in aValidationError
for that field.Easy as pie workaround is to declare
= msgspec.field(name="_links")
, so no blocker, but I wanted to check that this is the intended behavior.One related data point is that the
inflection
library doesn't strip leading underscores when camelizing:The text was updated successfully, but these errors were encountered: