-
-
Notifications
You must be signed in to change notification settings - Fork 374
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recursively evolve nested attrs classes #759
Conversation
Co-authored-by: Hynek Schlawack <[email protected]>
Applied your suggestions and updated the test to include a change to |
Thanks! |
changes[init_name] = value | ||
elif has(value): | ||
# Evolve nested attrs classes | ||
changes[init_name] = evolve(value, **changes[init_name]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
doesn't that break the edge case of legitimately replacing a attrs instance with a dict where permissible?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
has(value)
makes sure we only attempt recursion when the current value is an attrs
class.
I added a test asserting that dicts can still normaly be replaced, nonetheless. :)
* Revert "Recursively evolve nested attrs classes (#759)" * Add regression test * lol legacy python * Add newsfragment * Add a test to prevent inst -> dict replacement breaking
Fixes: #634
Pull Request Check List
This is just a friendly reminder about the most common mistakes. Please make sure that you tick all boxes. But please read our contribution guide at least once, it will save you unnecessary review cycles!
If an item doesn't apply to your pull request, check it anyway to make it apparent that there's nothing left to do. If your pull request is a documentation fix or a trivial typo, feel free to delete the whole thing.
.pyi
).tests/typing_example.py
.docs/api.rst
by hand.@attr.s()
have to be added by hand too.versionadded
,versionchanged
, ordeprecated
directives. Find the appropriate next version in our__init__.py
file..rst
files is written using semantic newlines.changelog.d
.If you have any questions to any of the points above, just submit and ask! This checklist is here to help you, not to deter you from contributing!