Serialize common numpy data types in write_json
#1119
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of proposed changes
There is a possibility that data to be written by this function contains numpy data types that are un-serializable by the default JSONEncoder¹. Make them serializable using a custom subclass.
Note that defining a default function for un-serializable values is another approach², but using a custom subclass is more complete since it allows for proper fall-back to the default encoder which automatically raises meaningful TypeErrors.
¹ https://docs.python.org/3/library/json.html#json.JSONEncoder
² https://stackoverflow.com/a/65151218/4410590
Related issue(s)
Fixes #1060
Testing
Added pytest which fails when reverting the fix.
Checklist