Make sync() populate objects with same .id with the same set of fields
* Currently sync() will track objects by their Python address, so if we have `alice1` with just `name` property, and we have `alice2` with the same `id` but only `email` property, after sync() they would only have their `.name` and `.email` properties updated respectively. We are changing sync() to populate them with the same data, so after sync() they would both have `.name` and `.email` attributes and their `.__dict__` would be equal. We do this because of computed backlinks (although I think we can find more motivation for this if we think hard). If `alice1` and `alice2` have the same `.id` and `alice1` was added to the `UserGroup.users` multi link, we want *both* `alice1.groups` and `alice2.groups` computeds to point back to the new user group they are member of. We also want to make it irrelevant if it was `alice1` or `alice2` added to `UserGroup.users` -- after sync() it shouldn't matter as they will both reflect the same data and be completely equivalent (albeit still two distinct Python objects, with distinct link set & multi props & mutable props collections!) * LinkSet / LinkWithPropsSet / TrackedList get `__copy__` and `__deepcopy__` methods
Y
Yury Selivanov committed
354778d163948acefcbf0110314a908f46227398
Parent: b887b84
Committed by Yury Selivanov <yury@edgedb.com>
on 8/13/2025, 8:38:23 PM