Fix: Ensure correct handling of _included entities in Entity class
#225
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.
Background
I encountered this issue while calling the
roles.listmethod with theincludeparameter, specifically:When iterating over the returned
rolesobject, I attempted to access the includeduserandspacedata using dynamically generated methods, such asrole.user()androle.space(). However, I noticed that these methods did not return the correct associated data. Instead, both methods returned the same data, corresponding to the last entity processed in the_includeddictionary.Root Cause:
The problematic line of code is:
Here, the
lambdafunction captures the variableentityby reference. Sinceentityis updated during each iteration of the loop, all dynamically created methods (e.g.,role.user()androle.space()) share the same reference toentity. As a result, after the loop completes, all methods return the data of the last processed entity.Solution:
To fix this issue, I replaced the
lambdawithfunctools.partial, which binds the current value ofentityto the dynamically created method. This ensures that each method maintains an independent reference to the correctentityvalue.If you have any suggestions, or need additional details about the fix, please feel free to contact me. I'm happy to provide further clarification or make additional changes if necessary.
Looking forward to your feedback and I hope this contribution can help improve the project!