fix(nodes): pydantic field type massaging improvements #7984
+388
−265
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.
Summary
When we do our field type overrides to allow invocations to be instantiated without all required fields, we were not modifying the annotation of the field but did set the default value of the field to
None
.This results in an error when doing a ser/de round trip. Here's what we end up doing:
And here is a simple round-trip, which should not error but which does:
To fix this, we now check every incoming field and update its annotation to match its default value. In other words, when we override the default field value to
None
, we make its type annotation<original type> | None
.This prevents the error during deserialization.
This slightly alters the schema for all invocations and outputs - the values of all fields without default values are now typed as
<original type> | None
, reflecting the overrides.This means the autogenerated types for fields have also changed for fields without defaults:
This does not break anything on the frontend.
Related Issues / Discussions
n/a
QA Instructions
Merge Plan
n/a
Checklist
What's New
copy (if doing a release after this PR)