Inheritance of pipes in high-level server API

I'm starting to port a test & measure framework to pytango. We have a number of SCPI based instruments and to make it more efficient to implement device servers for them I've been attempting to build a class hierarchy on top of the pytango high level server api.

Thus I have an IEE488.2 class that implements the standard commands such as *IDN? and *RST and then a SCPI class that knows how to read back the error buffer and implements the minimum command set and then on top of that I'll build subclasses for the various actual instruments,

My problem is that whilst the tango attributes and commands (defined using the tango.server.attribute/command decorators) all propagate through the class hierarchy, the pipes are not and are only visible to the client api for devices of the class at which they are defined.

Is this by design? Is there a good workaround?
Gavin Burnell
Associate Professor of Condensed Matter Physics
University of Leeds, UK
https://condensed-matter.leeds.ac.uk/
So after a little poking, it seems tango.server.is_tango_object() is not recognizing that a pipe is a tango object. Teaching it that pipes are tango objects allows pipes to be inherited correctly, but I wonder if there is a good reason why this hasn't been implemented that I'm missing…
Gavin Burnell
Associate Professor of Condensed Matter Physics
University of Leeds, UK
https://condensed-matter.leeds.ac.uk/
Hi Gavin

Thanks for reporting. No, it is not by design. Just a bug! Thanks for the fix you submitted https://gitlab.com/tango-controls/pytango/-/merge_requests/446

This will be included in the next PyTango release.

/Anton
 
Register or login to create to post a reply.