CPython engine marshals python classes to lists when the expectation is to get a handle. #10974
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.
Purpose
While trying to get data-shapes working with the cpython engine it was discovered that some of the data-shapes python classes implement
__iter__/__getitem__
and sequence protocols.These classes are marshaled into dynamo as lists, but for use in data-shapes they need to be marshaled as handles only.
To enable this workflow I've added a new "builtin" 👋 attribute the class author can choose to add to their class.
__dynamoskipconversion__
. If this attribute exists at all (the return value does not matter) then the object will skip all conversion attempts and immediately be marshaled as a handle.For dataShapes this means a one line code change to get this class working.
Declarations
Check these if you believe they are true
*.resx
files