fix: support for List[EIP712Type]
#56
Open
+97
−18
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.
What I did
This fix allows the
eip712
library to handle lists ofEIP712Type
instances correctly. Specifically, it supports nested structures where fields can be lists of custom types, enabling the generation of signable messages and hashes for more complex data structures.How I did it
Modified the
_types_
Property:_types_
property in theEIP712Type
class to recursively build type definitions for fields that are lists of custom types.EIP712Type
, ensuring their types are correctly added to the type definitions.Updated the
_body_
Property:_body_
property in theEIP712Message
class to correctly serialize lists ofEIP712Type
instances.Enhanced Data Preparation for Hashing:
_prepare_data_for_hashing
function to handle lists of dictionaries, ensuring nested structures are correctly flattened for hashing.How to verify it
Define Custom Types:
EIP712Message
types, including a nested structure where one field is a list of another custom type.Run the Example:
Check Outputs:
Checklist