gabledata / recap

Work with your web service, database, and streaming schemas in a single format.
https://recap.build
MIT License
334 stars 24 forks source link

RecapType.is_nullable should iterate on union types #426

Closed criccomini closed 9 months ago

criccomini commented 9 months ago

There was a bug in #423. Null types in a union with extra_attrs or other attributes set would result in False returned when there was in fact a NullType in the UnionType's types list. __eq__ checks all attributes, so you must iterate over the UnionType's types attribute and look for any type with isinstance(..., NullType) is True. I updated the logic accordingly.

In doing so, I discovered that the JSON converter logic was converting JSON schema fields of null type to a UnionType with a single nested NullType type. This seems wrong; I updated the test to validate that null JSON fields are returned as NullType with a default of None.

criccomini commented 9 months ago

cc @adrianisk @mjperrone

criccomini commented 9 months ago

Released in 0.12.0:

https://pypi.org/project/recap-core/0.12.0/