Loading
Use device telemetry for nested client spans
Client calls inside device methods used process-level telemetry, which could give spans the wrong service identity and ignore the device's tracing configuration.
Consider this scenario: client -> Leader device -> Follower device. The client send a command to the Leader to turn on a Follower.
- Yellow: PyTango client
- Dark green: Leader
- Light green: Follower
Using 10.3.1, we see the three services, but there are two client calls (yellow) coming from the Leader, when it creates and uses the DeviceProxy (6th and 11th spans):
Using the code in the MR, we now see all the Leader's call are dark green:
(Note, the differences in duration of the two tests are not significant - repeated tests show similar times for the old and new versions).
Changes:
- Scope nested client telemetry to the active device's settings
- Suppress spans and propagation when device telemetry is disabled
- Preserve device scope across executor threads and greenlets
- Handle bound device methods called without arguments
- Remove redundant Python telemetry client identity attributes as cppTango >= 10.3.0 includes client identity in its telemetry spans
- Update tests
Co-authored-by: Codex codex@openai.com

