Closed cmazzoli closed 8 years ago
Sigh, should have seen this one coming. Fix one issue just to show another...
The issue is that when we collect data for and Event
the result of all the read
calls get merged together. There is a check to make sure that there is not a name collision (as you would be upset if there were two different devices which both exposed a field 'x' and one of them clobbered the other). In this case they are the same object but that information has been lost.
@danielballan I think the solution here is that the plans just need to get smarter and look for more interesting relationships before handing off to the RE.
@dchabot @klauer I think ophyd needs to grow obj.related(other)
and/or obj.common_ancestor(other)
and then someone needs to understand a bit of graph theory.
Maybe use networkx for graph structure.
I think that defining __contains__
(so that epu.gap in epu is True
) and using root are sufficient.
obj.common_ancestor(other) is obj.root == other.root
To solve this particular issue, plans should check (obj in other or other in obj
).
Fixed in ophyd and bluesky in the last cycle @klauer @danielballan