cgse 0.17.2__tar.gz → 0.17.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. {cgse-0.17.2 → cgse-0.17.3}/CHANGELOG.md +5 -0
  2. {cgse-0.17.2 → cgse-0.17.3}/PKG-INFO +1 -1
  3. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/pyproject.toml +1 -1
  4. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/device.py +0 -70
  5. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/scpi.py +52 -123
  6. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/pyproject.toml +1 -1
  7. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/pyproject.toml +1 -1
  8. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/service_registry.db +0 -0
  9. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/service_registry.db-shm +0 -0
  10. cgse-0.17.3/libs/cgse-core/service_registry.db-wal +0 -0
  11. cgse-0.17.3/libs/cgse-core/src/egse/connect.py +55 -0
  12. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/dummy.py +3 -19
  13. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/logger/__init__.py +2 -2
  14. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/notifyhub/server.py +1 -3
  15. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/registry/client.py +3 -9
  16. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/registry/server.py +3 -11
  17. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/registry/service.py +5 -11
  18. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/fixtures/helpers.py +1 -61
  19. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/fixtures/services.py +16 -65
  20. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_client_server_interaction.py +8 -3
  21. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_cm_cs.py +43 -3
  22. cgse-0.17.3/libs/cgse-core/tests/test_connect.py +200 -0
  23. cgse-0.17.3/libs/cgse-core/tests/test_dummy.py +68 -0
  24. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_event_notification.py +2 -6
  25. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_logger.py +10 -23
  26. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_registry_service.py +8 -8
  27. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_server_running.py +8 -14
  28. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_server_running_with_fixture.py +7 -12
  29. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_zmq_microservice.py +7 -19
  30. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/pyproject.toml +1 -1
  31. {cgse-0.17.2 → cgse-0.17.3}/make-a-release.md +7 -1
  32. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/pyproject.toml +1 -1
  33. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/pyproject.toml +1 -1
  34. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  35. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +22 -31
  36. cgse-0.17.3/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +97 -0
  37. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +44 -89
  38. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +20 -78
  39. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +22 -58
  40. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +35 -18
  41. cgse-0.17.2/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py → cgse-0.17.3/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +22 -26
  42. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +7 -26
  43. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +7 -3
  44. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/tests/test_adev.py +13 -150
  45. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/tests/test_dev.py +14 -18
  46. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  47. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  48. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +2 -3
  49. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-fits/pyproject.toml +1 -1
  50. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  51. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-spw/pyproject.toml +1 -1
  52. {cgse-0.17.2 → cgse-0.17.3}/pyproject.toml +1 -1
  53. cgse-0.17.2/.pylintrc +0 -5
  54. cgse-0.17.2/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -442
  55. cgse-0.17.2/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -596
  56. cgse-0.17.2/libs/cgse-common/src/egse/ratelimit.py +0 -275
  57. cgse-0.17.2/libs/cgse-common/src/egse/socketdevice.py +0 -379
  58. cgse-0.17.2/libs/cgse-common/tests/test_ratelimit.py +0 -365
  59. cgse-0.17.2/libs/cgse-common/tests/test_socketdevice.py +0 -329
  60. cgse-0.17.2/libs/cgse-core/service_registry.db-wal +0 -0
  61. cgse-0.17.2/libs/cgse-core/src/egse/async_control.py +0 -1085
  62. cgse-0.17.2/libs/cgse-core/src/egse/async_control_claude.py +0 -807
  63. cgse-0.17.2/libs/cgse-core/src/egse/confman/confman_acs.py +0 -35
  64. cgse-0.17.2/libs/cgse-core/src/egse/connect.py +0 -528
  65. cgse-0.17.2/libs/cgse-core/src/egse/metricshub/server.py +0 -271
  66. cgse-0.17.2/libs/cgse-core/src/egse/notifyhub/test.py +0 -303
  67. cgse-0.17.2/libs/cgse-core/tests/fixtures/log_cs.start.out +0 -13
  68. cgse-0.17.2/libs/cgse-core/tests/marimo/intro.py +0 -116
  69. cgse-0.17.2/libs/cgse-core/tests/simple_server.py +0 -135
  70. cgse-0.17.2/libs/cgse-core/tests/test_async_control.py +0 -68
  71. cgse-0.17.2/libs/cgse-core/tests/test_connect.py +0 -691
  72. cgse-0.17.2/libs/cgse-core/tests/test_dummy.py +0 -153
  73. cgse-0.17.2/libs/cgse-core/tests/test_proxy.py +0 -16
  74. cgse-0.17.2/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -3
  75. cgse-0.17.2/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -77
  76. cgse-0.17.2/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -305
  77. cgse-0.17.2/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -53
  78. cgse-0.17.2/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -60
  79. cgse-0.17.2/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  80. cgse-0.17.2/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -12
  81. {cgse-0.17.2 → cgse-0.17.3}/.env.example +0 -0
  82. {cgse-0.17.2 → cgse-0.17.3}/.github/workflows/ruff-format-check.yaml +0 -0
  83. {cgse-0.17.2 → cgse-0.17.3}/.gitignore +0 -0
  84. {cgse-0.17.2 → cgse-0.17.3}/README.md +0 -0
  85. {cgse-0.17.2 → cgse-0.17.3}/bump.py +0 -0
  86. {cgse-0.17.2 → cgse-0.17.3}/conftest.py +0 -0
  87. {cgse-0.17.2 → cgse-0.17.3}/docs/api/bits.md +0 -0
  88. {cgse-0.17.2 → cgse-0.17.3}/docs/api/calibration.md +0 -0
  89. {cgse-0.17.2 → cgse-0.17.3}/docs/api/command.md +0 -0
  90. {cgse-0.17.2 → cgse-0.17.3}/docs/api/config.md +0 -0
  91. {cgse-0.17.2 → cgse-0.17.3}/docs/api/control.md +0 -0
  92. {cgse-0.17.2 → cgse-0.17.3}/docs/api/counter.md +0 -0
  93. {cgse-0.17.2 → cgse-0.17.3}/docs/api/decorators.md +0 -0
  94. {cgse-0.17.2 → cgse-0.17.3}/docs/api/device.md +0 -0
  95. {cgse-0.17.2 → cgse-0.17.3}/docs/api/dicts.md +0 -0
  96. {cgse-0.17.2 → cgse-0.17.3}/docs/api/dummy.md +0 -0
  97. {cgse-0.17.2 → cgse-0.17.3}/docs/api/env.md +0 -0
  98. {cgse-0.17.2 → cgse-0.17.3}/docs/api/exceptions.md +0 -0
  99. {cgse-0.17.2 → cgse-0.17.3}/docs/api/heartbeat.md +0 -0
  100. {cgse-0.17.2 → cgse-0.17.3}/docs/api/hk.md +0 -0
  101. {cgse-0.17.2 → cgse-0.17.3}/docs/api/index.md +0 -0
  102. {cgse-0.17.2 → cgse-0.17.3}/docs/api/listener.md +0 -0
  103. {cgse-0.17.2 → cgse-0.17.3}/docs/api/metrics.md +0 -0
  104. {cgse-0.17.2 → cgse-0.17.3}/docs/api/mixin.md +0 -0
  105. {cgse-0.17.2 → cgse-0.17.3}/docs/api/monitoring.md +0 -0
  106. {cgse-0.17.2 → cgse-0.17.3}/docs/api/observer.md +0 -0
  107. {cgse-0.17.2 → cgse-0.17.3}/docs/api/obsid.md +0 -0
  108. {cgse-0.17.2 → cgse-0.17.3}/docs/api/persistence.md +0 -0
  109. {cgse-0.17.2 → cgse-0.17.3}/docs/api/plugin.md +0 -0
  110. {cgse-0.17.2 → cgse-0.17.3}/docs/api/process.md +0 -0
  111. {cgse-0.17.2 → cgse-0.17.3}/docs/api/reload.md +0 -0
  112. {cgse-0.17.2 → cgse-0.17.3}/docs/api/settings.md +0 -0
  113. {cgse-0.17.2 → cgse-0.17.3}/docs/api/setup.md +0 -0
  114. {cgse-0.17.2 → cgse-0.17.3}/docs/api/system.md +0 -0
  115. {cgse-0.17.2 → cgse-0.17.3}/docs/custom_theme/main.html +0 -0
  116. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/coding_style.md +0 -0
  117. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/docs.md +0 -0
  118. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/dotenv.md +0 -0
  119. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/index.md +0 -0
  120. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/installation.md +0 -0
  121. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/monitoring.md +0 -0
  122. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/monorepo.md +0 -0
  123. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/nox.md +0 -0
  124. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/plugins.md +0 -0
  125. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/project-configuration.md +0 -0
  126. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/unit_testing.md +0 -0
  127. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/uv.md +0 -0
  128. {cgse-0.17.2 → cgse-0.17.3}/docs/dev_guide/versioning.md +0 -0
  129. {cgse-0.17.2 → cgse-0.17.3}/docs/getting_started.md +0 -0
  130. {cgse-0.17.2 → cgse-0.17.3}/docs/help.md +0 -0
  131. {cgse-0.17.2 → cgse-0.17.3}/docs/images/cli-cgse.png +0 -0
  132. {cgse-0.17.2 → cgse-0.17.3}/docs/images/github-fork-clone-dark.png +0 -0
  133. {cgse-0.17.2 → cgse-0.17.3}/docs/images/github-fork-clone.png +0 -0
  134. {cgse-0.17.2 → cgse-0.17.3}/docs/images/grafana-queries.png +0 -0
  135. {cgse-0.17.2 → cgse-0.17.3}/docs/images/icons/cgse-logo-blue.svg +0 -0
  136. {cgse-0.17.2 → cgse-0.17.3}/docs/images/icons/cgse-logo.svg +0 -0
  137. {cgse-0.17.2 → cgse-0.17.3}/docs/index.md +0 -0
  138. {cgse-0.17.2 → cgse-0.17.3}/docs/initialize.md +0 -0
  139. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-common/images/load_methods.png +0 -0
  140. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-common/index.md +0 -0
  141. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-common/settings.md +0 -0
  142. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-common/setup.md +0 -0
  143. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-coordinates/index.md +0 -0
  144. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-core/index.md +0 -0
  145. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-core/notifyhub.md +0 -0
  146. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-core/registry.md +0 -0
  147. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/cgse-gui/index.md +0 -0
  148. {cgse-0.17.2 → cgse-0.17.3}/docs/libs/index.md +0 -0
  149. {cgse-0.17.2 → cgse-0.17.3}/docs/package_list.md +0 -0
  150. {cgse-0.17.2 → cgse-0.17.3}/docs/projects/cgse-tools.md +0 -0
  151. {cgse-0.17.2 → cgse-0.17.3}/docs/projects/index.md +0 -0
  152. {cgse-0.17.2 → cgse-0.17.3}/docs/projects/symetrie-hexapod.md +0 -0
  153. {cgse-0.17.2 → cgse-0.17.3}/docs/roadmap.md +0 -0
  154. {cgse-0.17.2 → cgse-0.17.3}/docs/stylesheets/custom.css +0 -0
  155. {cgse-0.17.2 → cgse-0.17.3}/docs/stylesheets/extra.css +0 -0
  156. {cgse-0.17.2 → cgse-0.17.3}/docs/tutorial.md +0 -0
  157. {cgse-0.17.2 → cgse-0.17.3}/docs/user_guide/cli.md +0 -0
  158. {cgse-0.17.2 → cgse-0.17.3}/docs/user_guide/env.md +0 -0
  159. {cgse-0.17.2 → cgse-0.17.3}/docs/user_guide/index.md +0 -0
  160. {cgse-0.17.2 → cgse-0.17.3}/duckdb_metrics.db +0 -0
  161. {cgse-0.17.2 → cgse-0.17.3}/duckdb_metrics.db.wal +0 -0
  162. {cgse-0.17.2 → cgse-0.17.3}/identifier.sqlite +0 -0
  163. {cgse-0.17.2 → cgse-0.17.3}/justfile +0 -0
  164. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/README.md +0 -0
  165. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/justfile +0 -0
  166. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/noxfile.py +0 -0
  167. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/service_registry.db +0 -0
  168. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  169. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  170. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  171. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/bits.py +0 -0
  172. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/calibration.py +0 -0
  173. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/config.py +0 -0
  174. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/counter.py +0 -0
  175. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/decorators.py +0 -0
  176. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/dicts.py +0 -0
  177. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/env.py +0 -0
  178. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/exceptions.py +0 -0
  179. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  180. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/hk.py +0 -0
  181. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/log.py +0 -0
  182. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/metrics.py +0 -0
  183. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/observer.py +0 -0
  184. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/obsid.py +0 -0
  185. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/persistence.py +0 -0
  186. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/plugin.py +0 -0
  187. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  188. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/process.py +0 -0
  189. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/py.typed +0 -0
  190. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  191. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/reload.py +0 -0
  192. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/resource.py +0 -0
  193. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/response.py +0 -0
  194. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/settings.py +0 -0
  195. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/settings.yaml +0 -0
  196. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/setup.py +0 -0
  197. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/signal.py +0 -0
  198. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/state.py +0 -0
  199. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/system.py +0 -0
  200. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/task.py +0 -0
  201. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/version.py +0 -0
  202. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  203. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/conftest.py +0 -0
  204. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/COPYING +0 -0
  205. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  206. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  207. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  208. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  209. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  210. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  211. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  212. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  213. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  214. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  215. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  216. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  217. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  218. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  219. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  220. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  221. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  222. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  223. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  224. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  225. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  226. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  227. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  228. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  229. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  230. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  231. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  232. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  233. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  234. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  235. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  236. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  237. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  238. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  239. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  240. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  241. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  242. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  243. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  244. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  245. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  246. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  247. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  248. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_bits.py +0 -0
  249. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_config.py +0 -0
  250. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_decorators.py +0 -0
  251. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_device.py +0 -0
  252. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_env.py +0 -0
  253. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_fixtures.py +0 -0
  254. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_hk.py +0 -0
  255. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  256. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_log.py +0 -0
  257. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_metrics.py +0 -0
  258. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_plugin.py +0 -0
  259. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_process.py +0 -0
  260. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_resource.py +0 -0
  261. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_response.py +0 -0
  262. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_settings.py +0 -0
  263. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_setup.py +0 -0
  264. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_signal.py +0 -0
  265. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_state.py +0 -0
  266. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_system.py +0 -0
  267. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_task.py +0 -0
  268. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_version.py +0 -0
  269. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  270. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/README.md +0 -0
  271. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  272. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  273. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  274. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  275. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  276. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  277. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  278. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  279. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  280. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  281. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  282. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  283. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  284. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  285. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  286. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_point.py +0 -0
  287. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  288. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  289. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  290. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/README.md +0 -0
  291. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  292. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  293. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  294. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  295. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  296. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/services.py +0 -0
  297. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  298. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  299. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/command.py +0 -0
  300. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  301. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  302. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  303. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  304. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/control.py +0 -0
  305. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  306. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  307. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  308. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  309. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  310. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  311. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  312. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/listener.py +0 -0
  313. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  314. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  315. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/mixin.py +0 -0
  316. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/monitoring.py +0 -0
  317. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  318. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  319. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  320. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  321. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  322. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  323. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  324. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  325. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  326. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/protocol.py +0 -0
  327. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/proxy.py +0 -0
  328. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  329. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  330. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/services.py +0 -0
  331. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/services.yaml +0 -0
  332. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  333. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  334. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  335. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  336. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  337. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/conftest.py +0 -0
  338. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  339. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  340. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  341. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  342. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  343. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  344. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  345. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/services.py +0 -0
  346. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  347. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_command.py +0 -0
  348. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_confman_setups.py +1 -1
  349. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_control.py +0 -0
  350. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_extensions.py +0 -0
  351. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_listener.py +0 -0
  352. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_mixin.py +0 -0
  353. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  354. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_protocol.py +0 -0
  355. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  356. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-core/tests/test_settings_core.py +0 -0
  357. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/README.md +0 -0
  358. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  359. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  360. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  361. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  362. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  363. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  364. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  365. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  366. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  367. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  368. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  369. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  370. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  371. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  372. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  373. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  374. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  375. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  376. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  377. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  378. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  379. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  380. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  381. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  382. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  383. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  384. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  385. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  386. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  387. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  388. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  389. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  390. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  391. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  392. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  393. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  394. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  395. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  396. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  397. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  398. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  399. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  400. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  401. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  402. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  403. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  404. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  405. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  406. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  407. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  408. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  409. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  410. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  411. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  412. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  413. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  414. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  415. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  416. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  417. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  418. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  419. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  420. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  421. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  422. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  423. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  424. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  425. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  426. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  427. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  428. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  429. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  430. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  431. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  432. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  433. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  434. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  435. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  436. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  437. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  438. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  439. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  440. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  441. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  442. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  443. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  444. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  445. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  446. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  447. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  448. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  449. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  450. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  451. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  452. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  453. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  454. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  455. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  456. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  457. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  458. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  459. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  460. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  461. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  462. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  463. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  464. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  465. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  466. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  467. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  468. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  469. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  470. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  471. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  472. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  473. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  474. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  475. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  476. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  477. {cgse-0.17.2 → cgse-0.17.3}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  478. {cgse-0.17.2 → cgse-0.17.3}/mkdocs.yml +0 -0
  479. {cgse-0.17.2 → cgse-0.17.3}/noxfile.py +0 -0
  480. {cgse-0.17.2 → cgse-0.17.3}/overrides/.icons/custom/dbend-dark.svg +0 -0
  481. {cgse-0.17.2 → cgse-0.17.3}/overrides/.icons/custom/dbend-light.svg +0 -0
  482. {cgse-0.17.2 → cgse-0.17.3}/overrides/.icons/custom/gear.svg +0 -0
  483. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/README.md +0 -0
  484. {cgse-0.17.2/libs/cgse-core/src/egse/metricshub → cgse-0.17.3/projects/ariel/ariel-tcu/src/ariel_tcu}/__init__.py +0 -0
  485. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_explore.py +0 -0
  486. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_services.py +0 -0
  487. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/ariel_tcu/settings.yaml +0 -0
  488. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/__init__.py +0 -0
  489. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.py +0 -0
  490. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.yaml +0 -0
  491. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cmd_utils.py +0 -0
  492. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cs.py +0 -0
  493. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_devif.py +0 -0
  494. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_protocol.py +0 -0
  495. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/tests/test_tcu.py +0 -0
  496. {cgse-0.17.2 → cgse-0.17.3}/projects/ariel/ariel-tcu/tests/test_tcu_cmd_utils.py +0 -0
  497. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/README.md +0 -0
  498. {cgse-0.17.2/projects/ariel/ariel-tcu/src/ariel_tcu → cgse-0.17.3/projects/generic/cgse-tools/src/cgse_tools}/__init__.py +0 -0
  499. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  500. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  501. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  502. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  503. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/README.md +0 -0
  504. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/justfile +0 -0
  505. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  506. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  507. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  508. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  509. {cgse-0.17.2/projects/generic/cgse-tools/src/cgse_tools → cgse-0.17.3/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol}/__init__.py +0 -0
  510. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  511. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  512. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  513. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  514. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  515. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  516. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  517. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  518. {cgse-0.17.2/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol → cgse-0.17.3/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol}/__init__.py +0 -0
  519. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  520. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  521. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  522. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  523. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/README.md +0 -0
  524. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  525. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  526. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  527. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  528. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  529. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  530. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  531. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  532. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  533. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  534. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  535. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  536. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  537. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  538. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  539. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  540. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  541. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  542. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  543. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  544. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  545. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  546. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  547. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  548. {cgse-0.17.2/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol → cgse-0.17.3/projects/generic/symetrie-hexapod/src/symetrie_hexapod}/__init__.py +0 -0
  549. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  550. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  551. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  552. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  553. {cgse-0.17.2 → cgse-0.17.3}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  554. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-fits/README.md +0 -0
  555. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  556. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-hdf5/README.md +0 -0
  557. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  558. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-spw/README.md +0 -0
  559. {cgse-0.17.2 → cgse-0.17.3}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  560. {cgse-0.17.2 → cgse-0.17.3}/ruff.toml +0 -0
  561. {cgse-0.17.2 → cgse-0.17.3}/scratch/advanced-process-monitoring.py +0 -0
  562. {cgse-0.17.2 → cgse-0.17.3}/scratch/live-process-monitoring.py +0 -0
  563. {cgse-0.17.2 → cgse-0.17.3}/scratch/match-case.py +0 -0
  564. {cgse-0.17.2 → cgse-0.17.3}/scratch/mock-version.py +0 -0
  565. {cgse-0.17.2 → cgse-0.17.3}/scratch/processes.json +0 -0
  566. {cgse-0.17.2 → cgse-0.17.3}/scratch/simple-process-monitoring.py +0 -0
  567. {cgse-0.17.2 → cgse-0.17.3}/scratch/test_version_behavior.py +0 -0
  568. {cgse-0.17.2 → cgse-0.17.3}/scratch/understanding-the-mocking-library.py +0 -0
  569. {cgse-0.17.2 → cgse-0.17.3}/scratch/understanding_the_with_statement.py +0 -0
  570. {cgse-0.17.2 → cgse-0.17.3}/service_registry.db +0 -0
  571. {cgse-0.17.2 → cgse-0.17.3}/test_service_registry.db +0 -0
@@ -9,6 +9,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
9
9
  ## [Unreleased]
10
10
 
11
11
 
12
+ ## [0.17.3] - 2025-11-29
13
+
14
+ In the previous release, uncommitted and untracked files were released by mistake. This release fixes this. Nothings has been changed with respect of release 0.17.2, except the removal of the uncommitted and untracked files.
15
+
16
+
12
17
  ## [0.17.2] - 2025-11-28
13
18
 
14
19
  This release is mainly on maintenance and improvements to the `cgse-common` package.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.17.2
3
+ Version: 0.17.3
4
4
  Summary: Generic Common-EGSE: Commanding and monitoring lab equipment
5
5
  Author: IvS KU Leuven
6
6
  Maintainer-email: Rik Huygen <rik.huygen@kuleuven.be>, Sara Regibo <sara.regibo@kuleuven.be>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "0.17.2"
3
+ version = "0.17.3"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -339,76 +339,6 @@ class AsyncDeviceTransport:
339
339
  return await self.trans(command)
340
340
 
341
341
 
342
- class AsyncDeviceConnectionInterface(DeviceConnectionObservable):
343
- """Generic connection interface for all Device classes and Controllers.
344
-
345
- This interface shall be implemented in the Controllers that directly connect to the
346
- hardware, but also in the simulators to guarantee an identical interface as the controllers.
347
-
348
- This interface will be implemented in the Proxy classes through the
349
- YAML definitions. Therefore, the YAML files shall define at least
350
- the following commands: `connect`, `disconnect`, `reconnect`, `is_connected`.
351
- """
352
-
353
- def __init__(self):
354
- super().__init__()
355
-
356
- def __enter__(self):
357
- self.connect()
358
- return self
359
-
360
- def __exit__(self, exc_type, exc_val, exc_tb):
361
- self.disconnect()
362
-
363
- async def connect(self) -> None:
364
- """Connect to the device controller.
365
-
366
- Raises:
367
- ConnectionError: when the connection can not be opened.
368
- """
369
-
370
- raise NotImplementedError
371
-
372
- async def disconnect(self) -> None:
373
- """Disconnect from the device controller.
374
-
375
- Raises:
376
- ConnectionError: when the connection can not be closed.
377
- """
378
- raise NotImplementedError
379
-
380
- async def reconnect(self):
381
- """Reconnect the device controller.
382
-
383
- Raises:
384
- ConnectionError: when the device can not be reconnected for some reason.
385
- """
386
- raise NotImplementedError
387
-
388
- async def is_connected(self) -> bool:
389
- """Check if the device is connected.
390
-
391
- Returns:
392
- True if the device is connected and responds to a command, False otherwise.
393
- """
394
- raise NotImplementedError
395
-
396
-
397
- class AsyncDeviceInterface(AsyncDeviceConnectionInterface):
398
- """A generic interface for all device classes."""
399
-
400
- def is_simulator(self) -> bool:
401
- """Checks whether the device is a simulator rather than a real hardware controller.
402
-
403
- This can be useful for testing purposes or when doing actual movement simulations.
404
-
405
- Returns:
406
- True if the Device is a Simulator; False if the Device is connected to real hardware.
407
- """
408
-
409
- raise NotImplementedError
410
-
411
-
412
342
  class DeviceFactoryInterface:
413
343
  """
414
344
  Base class for creating a device factory class to access devices.
@@ -4,23 +4,17 @@ from typing import Any
4
4
  from typing import Dict
5
5
  from typing import Optional
6
6
 
7
- from egse.device import AsyncDeviceInterface
8
7
  from egse.device import AsyncDeviceTransport
9
8
  from egse.device import DeviceConnectionError
10
9
  from egse.device import DeviceError
11
10
  from egse.device import DeviceTimeoutError
12
- from egse.env import bool_env
13
11
  from egse.log import logger
14
12
 
13
+ # Constants that can be overridden by specific device implementations
15
14
  DEFAULT_READ_TIMEOUT = 1.0 # seconds
16
15
  DEFAULT_CONNECT_TIMEOUT = 3.0 # seconds
17
16
  IDENTIFICATION_QUERY = "*IDN?"
18
17
 
19
- VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
20
-
21
- SEPARATOR = b"\n"
22
- SEPARATOR_STR = SEPARATOR.decode()
23
-
24
18
 
25
19
  class SCPICommand:
26
20
  """Base class for SCPI commands."""
@@ -38,7 +32,7 @@ class SCPICommand:
38
32
  raise NotImplementedError("Subclasses must implement get_cmd_string().")
39
33
 
40
34
 
41
- class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
35
+ class AsyncSCPIInterface(AsyncDeviceTransport):
42
36
  """Generic asynchronous interface for devices that use SCPI commands over Ethernet."""
43
37
 
44
38
  def __init__(
@@ -62,9 +56,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
62
56
  read_timeout: Timeout for read operations in seconds
63
57
  id_validation: String that should appear in the device's identification response
64
58
  """
65
- super().__init__()
66
-
67
- self._device_name = device_name
59
+ self.device_name = device_name
68
60
  self.hostname = hostname
69
61
  self.port = port
70
62
  self.settings = settings or {}
@@ -78,66 +70,8 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
78
70
  self._connect_lock = asyncio.Lock()
79
71
  """Prevents multiple, simultaneous connect or disconnect attempts."""
80
72
  self._io_lock = asyncio.Lock()
81
- """Prevents multiple coroutines from attempting to read, write or query from the same stream at the same time."""
82
-
83
- def is_simulator(self) -> bool:
84
- return False
85
-
86
- @property
87
- def device_name(self) -> str:
88
- return self._device_name
89
-
90
- async def initialize(self, commands: list[tuple[str, bool]] = None, reset_device: bool = False) -> list[str | None]:
91
- """Initialize the device with optional reset and command sequence.
92
-
93
- Performs device initialization by optionally resetting the device and then
94
- executing a sequence of commands. Each command can optionally expect a
95
- response that will be logged for debugging purposes.
96
-
97
- Args:
98
- commands: List of tuples containing (command_string, expects_response).
99
- Each tuple specifies a command to send and whether to wait for and
100
- log the response. Defaults to None (no commands executed).
101
- reset_device: Whether to send a reset command (*RST) before executing
102
- the command sequence. Defaults to False.
103
-
104
- Returns:
105
- Response for each of the commands, or None when no response was expected.
106
-
107
- Raises:
108
- Any exceptions raised by the underlying write() or trans() methods,
109
- typically communication errors or device timeouts.
110
-
111
- Example:
112
- await device.initialize(
113
- [
114
- ("*IDN?", True), # Query device ID, expect response
115
- ("SYST:ERR?", True), # Check for errors, expect response
116
- ("OUTP ON", False), # Enable output, no response expected
117
- ],
118
- reset_device=True
119
- )
120
- """
121
-
122
- commands = commands or []
123
- responses = []
124
-
125
- if reset_device:
126
- logger.info(f"Resetting the {self._device_name}...")
127
- await self.write("*RST") # this also resets the user-defined buffer
128
-
129
- for cmd, expects_response in commands:
130
- if expects_response:
131
- logger.debug(f"Sending {cmd}...")
132
- response = (await self.trans(cmd)).decode().strip()
133
- responses.append(response)
134
- logger.debug(f"{response = }")
135
- else:
136
- logger.debug(f"Sending {cmd}...")
137
- await self.write(cmd)
138
- responses.append(None)
139
-
140
- return responses
73
+ """Prevents multiple coroutines from attempting to read, write or query from the same stream
74
+ at the same time."""
141
75
 
142
76
  async def connect(self) -> None:
143
77
  """Connect to the device asynchronously.
@@ -150,51 +84,47 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
150
84
  async with self._connect_lock:
151
85
  # Sanity checks
152
86
  if self._is_connection_open:
153
- logger.warning(f"{self._device_name}: Trying to connect to an already connected device.")
87
+ logger.warning(f"{self.device_name}: Trying to connect to an already connected device.")
154
88
  return
155
89
 
156
90
  if not self.hostname:
157
- raise ValueError(f"{self._device_name}: Hostname is not initialized.")
91
+ raise ValueError(f"{self.device_name}: Hostname is not initialized.")
158
92
 
159
93
  if not self.port:
160
- raise ValueError(f"{self._device_name}: Port number is not initialized.")
94
+ raise ValueError(f"{self.device_name}: Port number is not initialized.")
161
95
 
162
96
  # Attempt to establish a connection
163
97
  try:
164
- logger.debug(f'Connecting to {self._device_name} at "{self.hostname}" using port {self.port}')
98
+ logger.debug(f'Connecting to {self.device_name} at "{self.hostname}" using port {self.port}')
165
99
 
166
100
  connect_task = asyncio.open_connection(self.hostname, self.port)
167
101
  self._reader, self._writer = await asyncio.wait_for(connect_task, timeout=self.connect_timeout)
168
102
 
169
103
  self._is_connection_open = True
170
104
 
171
- response = await self.read_string()
172
- if VERBOSE_DEBUG:
173
- logger.debug(f"Response after connection: {response}")
174
-
175
- logger.debug(f"Successfully connected to {self._device_name}.")
105
+ logger.debug(f"Successfully connected to {self.device_name}.")
176
106
 
177
107
  except asyncio.TimeoutError as exc:
178
108
  raise DeviceTimeoutError(
179
- self._device_name, f"Connection to {self.hostname}:{self.port} timed out"
109
+ self.device_name, f"Connection to {self.hostname}:{self.port} timed out"
180
110
  ) from exc
181
111
  except ConnectionRefusedError as exc:
182
112
  raise DeviceConnectionError(
183
- self._device_name, f"Connection refused to {self.hostname}:{self.port}"
113
+ self.device_name, f"Connection refused to {self.hostname}:{self.port}"
184
114
  ) from exc
185
115
  except socket.gaierror as exc:
186
- raise DeviceConnectionError(self._device_name, f"Address resolution error for {self.hostname}") from exc
116
+ raise DeviceConnectionError(self.device_name, f"Address resolution error for {self.hostname}") from exc
187
117
  except socket.herror as exc:
188
- raise DeviceConnectionError(self._device_name, f"Host address error for {self.hostname}") from exc
118
+ raise DeviceConnectionError(self.device_name, f"Host address error for {self.hostname}") from exc
189
119
  except OSError as exc:
190
- raise DeviceConnectionError(self._device_name, f"OS error: {exc}") from exc
120
+ raise DeviceConnectionError(self.device_name, f"OS error: {exc}") from exc
191
121
 
192
122
  # Validate device identity if requested
193
123
  if self.id_validation:
194
124
  logger.debug("Validating connection..")
195
125
  if not await self.is_connected():
196
126
  await self.disconnect()
197
- raise DeviceConnectionError(self._device_name, "Device connected but failed identity verification")
127
+ raise DeviceConnectionError(self.device_name, "Device connected but failed identity verification")
198
128
 
199
129
  async def disconnect(self) -> None:
200
130
  """Disconnect from the device asynchronously.
@@ -205,20 +135,22 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
205
135
  async with self._connect_lock:
206
136
  try:
207
137
  if self._is_connection_open and self._writer is not None:
208
- logger.debug(f"Disconnecting from {self._device_name} at {self.hostname}")
138
+ logger.debug(f"Disconnecting from {self.device_name} at {self.hostname}")
209
139
  self._writer.close()
210
140
  await self._writer.wait_closed()
211
141
  self._writer = None
212
142
  self._reader = None
213
143
  self._is_connection_open = False
214
144
  except Exception as exc:
215
- raise DeviceConnectionError(self._device_name, f"Could not close connection: {exc}") from exc
145
+ raise DeviceConnectionError(self.device_name, f"Could not close connection: {exc}") from exc
216
146
 
217
147
  async def reconnect(self) -> None:
218
148
  """Reconnect to the device asynchronously."""
219
- await self.disconnect()
220
- await asyncio.sleep(0.1)
221
- await self.connect()
149
+ async with self._connect_lock:
150
+ if self._is_connection_open:
151
+ await self.disconnect()
152
+ await asyncio.sleep(0.1)
153
+ await self.connect()
222
154
 
223
155
  async def is_connected(self) -> bool:
224
156
  """Check if the device is connected and responds correctly to identification.
@@ -236,7 +168,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
236
168
  # Validate the response if validation string is provided
237
169
  if self.id_validation and self.id_validation not in id_response:
238
170
  logger.error(
239
- f"{self._device_name}: Device did not respond correctly to identification query. "
171
+ f"{self.device_name}: Device did not respond correctly to identification query. "
240
172
  f'Expected "{self.id_validation}" in response, got: {id_response}'
241
173
  )
242
174
  await self.disconnect()
@@ -245,7 +177,8 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
245
177
  return True
246
178
 
247
179
  except DeviceError as exc:
248
- logger.error(f"{self._device_name}: Connection test failed: {exc}", exc_info=True)
180
+ logger.exception(exc)
181
+ logger.error(f"{self.device_name}: Connection test failed")
249
182
  await self.disconnect()
250
183
  return False
251
184
 
@@ -262,20 +195,19 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
262
195
  async with self._io_lock:
263
196
  try:
264
197
  if not self._is_connection_open or self._writer is None:
265
- raise DeviceConnectionError(self._device_name, "Device not connected, use connect() first")
198
+ raise DeviceConnectionError(self.device_name, "Device not connected, use connect() first")
266
199
 
267
- # Ensure command ends with the proper separator or terminator
268
- if not command.endswith(SEPARATOR_STR):
269
- command += SEPARATOR_STR
200
+ # Ensure command ends with newline
201
+ if not command.endswith("\n"):
202
+ command += "\n"
270
203
 
271
- logger.info(f"-----> {command}")
272
204
  self._writer.write(command.encode())
273
205
  await self._writer.drain()
274
206
 
275
207
  except asyncio.TimeoutError as exc:
276
- raise DeviceTimeoutError(self._device_name, "Write operation timed out") from exc
208
+ raise DeviceTimeoutError(self.device_name, "Write operation timed out") from exc
277
209
  except (ConnectionError, OSError) as exc:
278
- raise DeviceConnectionError(self._device_name, f"Communication error: {exc}") from exc
210
+ raise DeviceConnectionError(self.device_name, f"Communication error: {exc}") from exc
279
211
 
280
212
  async def read(self) -> bytes:
281
213
  """
@@ -290,7 +222,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
290
222
  """
291
223
  async with self._io_lock:
292
224
  if not self._is_connection_open or self._reader is None:
293
- raise DeviceConnectionError(self._device_name, "Device not connected, use connect() first")
225
+ raise DeviceConnectionError(self.device_name, "Device not connected, use connect() first")
294
226
 
295
227
  try:
296
228
  # First, small delay to allow device to prepare response
@@ -299,19 +231,18 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
299
231
  # Try to read until newline (common SCPI terminator)
300
232
  try:
301
233
  response = await asyncio.wait_for(
302
- self._reader.readuntil(separator=SEPARATOR), timeout=self.read_timeout
234
+ self._reader.readuntil(separator=b"\n"), timeout=self.read_timeout
303
235
  )
304
- logger.info(f"<----- {response}")
305
236
  return response
306
237
 
307
238
  except asyncio.IncompleteReadError as exc:
308
239
  # Connection closed before receiving full response
309
- logger.warning(f"{self._device_name}: Incomplete read, got {len(exc.partial)} bytes")
310
- return exc.partial if exc.partial else SEPARATOR
240
+ logger.warning(f"{self.device_name}: Incomplete read, got {len(exc.partial)} bytes")
241
+ return exc.partial if exc.partial else b"\r\n"
311
242
 
312
243
  except asyncio.LimitOverrunError:
313
244
  # Response too large for buffer
314
- logger.warning(f"{self._device_name}: Response exceeded buffer limits")
245
+ logger.warning(f"{self.device_name}: Response exceeded buffer limits")
315
246
  # Fall back to reading a large chunk
316
247
  return await asyncio.wait_for(
317
248
  self._reader.read(8192), # Larger buffer for exceptional cases
@@ -319,9 +250,9 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
319
250
  )
320
251
 
321
252
  except asyncio.TimeoutError as exc:
322
- raise DeviceTimeoutError(self._device_name, "Read operation timed out") from exc
253
+ raise DeviceTimeoutError(self.device_name, "Read operation timed out") from exc
323
254
  except Exception as exc:
324
- raise DeviceConnectionError(self._device_name, f"Read error: {exc}") from exc
255
+ raise DeviceConnectionError(self.device_name, f"Read error: {exc}") from exc
325
256
 
326
257
  async def trans(self, command: str) -> bytes:
327
258
  """
@@ -342,35 +273,33 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
342
273
  async with self._io_lock:
343
274
  try:
344
275
  if not self._is_connection_open or self._writer is None:
345
- raise DeviceConnectionError(self._device_name, "Device not connected, use connect() first")
276
+ raise DeviceConnectionError(self.device_name, "Device not connected, use connect() first")
346
277
 
347
- # Ensure command ends with the required terminator
348
- if not command.endswith(SEPARATOR_STR):
349
- command += SEPARATOR_STR
278
+ # Ensure command ends with newline
279
+ if not command.endswith("\n"):
280
+ command += "\n"
350
281
 
351
- logger.info(f"-----> {command=}")
352
282
  self._writer.write(command.encode())
353
283
  await self._writer.drain()
354
284
 
355
- # First, small delay to allow the device to prepare a response
285
+ # First, small delay to allow device to prepare response
356
286
  await asyncio.sleep(0.01)
357
287
 
358
- # Try to read until the required separator (common SCPI terminator)
288
+ # Try to read until newline (common SCPI terminator)
359
289
  try:
360
290
  response = await asyncio.wait_for(
361
- self._reader.readuntil(separator=SEPARATOR), timeout=self.read_timeout
291
+ self._reader.readuntil(separator=b"\n"), timeout=self.read_timeout
362
292
  )
363
- logger.info(f"<----- {response=}")
364
293
  return response
365
294
 
366
295
  except asyncio.IncompleteReadError as exc:
367
296
  # Connection closed before receiving full response
368
- logger.warning(f"{self._device_name}: Incomplete read, got {len(exc.partial)} bytes")
369
- return exc.partial if exc.partial else SEPARATOR
297
+ logger.warning(f"{self.device_name}: Incomplete read, got {len(exc.partial)} bytes")
298
+ return exc.partial if exc.partial else b"\r\n"
370
299
 
371
300
  except asyncio.LimitOverrunError:
372
301
  # Response too large for buffer
373
- logger.warning(f"{self._device_name}: Response exceeded buffer limits")
302
+ logger.warning(f"{self.device_name}: Response exceeded buffer limits")
374
303
  # Fall back to reading a large chunk
375
304
  return await asyncio.wait_for(
376
305
  self._reader.read(8192), # Larger buffer for exceptional cases
@@ -378,11 +307,11 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
378
307
  )
379
308
 
380
309
  except asyncio.TimeoutError as exc:
381
- raise DeviceTimeoutError(self._device_name, "Communication timed out") from exc
310
+ raise DeviceTimeoutError(self.device_name, "Communication timed out") from exc
382
311
  except (ConnectionError, OSError) as exc:
383
- raise DeviceConnectionError(self._device_name, f"Communication error: {exc}") from exc
312
+ raise DeviceConnectionError(self.device_name, f"Communication error: {exc}") from exc
384
313
  except Exception as exc:
385
- raise DeviceConnectionError(self._device_name, f"Transaction error: {exc}") from exc
314
+ raise DeviceConnectionError(self.device_name, f"Transaction error: {exc}") from exc
386
315
 
387
316
  async def __aenter__(self):
388
317
  """Async context manager entry."""
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.17.2"
3
+ version = "0.17.3"
4
4
  description = "Reference Frames and Coordinate Transofrmations for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-core"
3
- version = "0.17.2"
3
+ version = "0.17.3"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -0,0 +1,55 @@
1
+ from egse.env import bool_env
2
+ from egse.log import logging
3
+ from egse.zmq_ser import connect_address
4
+
5
+ logger = logging.getLogger("egse.connect")
6
+
7
+ # random.seed(time.monotonic()) # uncomment for testing only, main application should set a seed.
8
+
9
+ VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
10
+
11
+
12
+ def get_endpoint(
13
+ service_type: str,
14
+ protocol: str = "tcp",
15
+ hostname: str = "localhost",
16
+ port: int = 0,
17
+ ):
18
+ """
19
+ Returns the endpoint for a service, either from the registry or by constructing
20
+ it from protocol, hostname and port.
21
+
22
+ If port is 0 (the default), attempt to retrieve the endpoint from the service registry.
23
+
24
+ Args:
25
+ service_type: The service type to look up in the registry.
26
+ protocol: Protocol to use if constructing the endpoint, defaults to tcp.
27
+ hostname: Hostname to use if constructing the endpoint, defaults to localhost.
28
+ port: Port to use if constructing the endpoint, defaults to 0.
29
+
30
+ Returns:
31
+ The endpoint string.
32
+
33
+ Raises:
34
+ RuntimeError: If no endpoint can be determined.
35
+ """
36
+ endpoint = None
37
+ from egse.registry.client import RegistryClient
38
+
39
+ if port == 0:
40
+ with RegistryClient() as reg:
41
+ endpoint = reg.get_endpoint(service_type)
42
+ if endpoint:
43
+ if VERBOSE_DEBUG:
44
+ logger.debug(f"Endpoint for {service_type} found in registry: {endpoint}")
45
+ else:
46
+ logger.warning(f"No endpoint for {service_type} found in registry.")
47
+
48
+ if not endpoint:
49
+ if port == 0:
50
+ raise RuntimeError(f"No service registered as {service_type} and no port provided.")
51
+ endpoint = connect_address(protocol, hostname, port)
52
+ if VERBOSE_DEBUG:
53
+ logger.debug(f"Endpoint constructed from protocol/hostname/port: {endpoint}")
54
+
55
+ return endpoint
@@ -35,7 +35,6 @@ and stopped with:
35
35
 
36
36
  from __future__ import annotations
37
37
 
38
- import contextlib
39
38
  import multiprocessing
40
39
  import random
41
40
  import select
@@ -53,14 +52,12 @@ from egse.device import DeviceConnectionError
53
52
  from egse.device import DeviceConnectionInterface
54
53
  from egse.device import DeviceTimeoutError
55
54
  from egse.device import DeviceTransport
56
- from egse.env import bool_env
57
55
  from egse.log import logger
58
56
  from egse.protocol import CommandProtocol
59
57
  from egse.proxy import Proxy
60
58
  from egse.system import SignalCatcher
61
59
  from egse.system import attrdict
62
60
  from egse.system import format_datetime
63
- from egse.system import type_name
64
61
  from egse.zmq_ser import bind_address
65
62
  from egse.zmq_ser import connect_address
66
63
 
@@ -80,9 +77,6 @@ WRITE_TIMEOUT = 1.0
80
77
  CONNECT_TIMEOUT = 3.0
81
78
  """The maximum time in seconds to wait for establishing a socket connect."""
82
79
 
83
-
84
- VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG", default=False)
85
-
86
80
  # Especially DummyCommand and DummyController need to be defined in a known module
87
81
  # because those objects are pickled and when de-pickled at the clients side the class
88
82
  # definition must be known.
@@ -122,17 +116,14 @@ def is_dummy_cs_active() -> bool:
122
116
 
123
117
 
124
118
  def is_dummy_dev_active() -> bool:
125
- if VERBOSE_DEBUG:
126
- logger.debug("Checking if dummy device is active...")
127
119
  try:
128
120
  dev = DummyDeviceEthernetInterface(DEV_HOST, DEV_PORT)
129
121
  dev.connect()
130
122
  rc = dev.trans("ping\n")
131
123
  dev.disconnect()
132
124
  return rc.decode().strip() == "pong"
133
- except (DeviceConnectionError, ConnectionResetError, DeviceTimeoutError) as exc:
134
- if VERBOSE_DEBUG:
135
- logger.debug(f"Caught {type_name(exc)}: {exc} - returning False")
125
+ except DeviceConnectionError as exc:
126
+ # logger.error(f"Caught {type_name(exc)}: {exc}")
136
127
  return False
137
128
 
138
129
 
@@ -589,18 +580,11 @@ def start_dev():
589
580
  with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
590
581
  s.bind((DEV_HOST, DEV_PORT))
591
582
  s.listen()
592
- s.settimeout(CONNECT_TIMEOUT)
593
583
  logger.info(f"Ready to accept connection on {DEV_HOST}:{DEV_PORT}...")
594
- while True:
595
- with contextlib.suppress(socket.timeout):
596
- conn, addr = s.accept()
597
- break
598
- if killer.term_signal_received:
599
- return
584
+ conn, addr = s.accept()
600
585
  with conn:
601
586
  logger.info(f"Accepted connection from {addr}")
602
587
  conn.sendall(f"Dummy Device {__version__}".encode())
603
- conn.settimeout(READ_TIMEOUT)
604
588
  try:
605
589
  while True:
606
590
  error_msg = ""
@@ -57,7 +57,7 @@ COMMANDER_PORT = settings.get("COMMANDER_PORT", 0) # dynamically assigned by th
57
57
  _initialised = False # will be set to True in the setup_logging() function
58
58
 
59
59
 
60
- def get_log_file_name() -> str:
60
+ def get_log_file_name():
61
61
  """
62
62
  Returns the filename of the log file as defined in the Settings or return the default name 'general.log'.
63
63
  """
@@ -315,7 +315,7 @@ def send_request(command_request: str):
315
315
  """Sends a request to the Logger Control Server and waits for a response."""
316
316
 
317
317
  if COMMANDER_PORT == 0:
318
- endpoint = get_endpoint_from_registry(SERVICE_TYPE)
318
+ endpoint = get_endpoint_from_registry()
319
319
  else:
320
320
  endpoint = f"{PROTOCOL}://{HOSTNAME}:{COMMANDER_PORT}"
321
321
 
@@ -23,12 +23,10 @@ from egse.notifyhub import SERVICE_TYPE
23
23
  from egse.notifyhub import STATS_INTERVAL
24
24
  from egse.notifyhub.client import AsyncNotificationHubClient
25
25
  from egse.registry import MessageType
26
- from egse.registry.client import REQUEST_TIMEOUT
27
- from egse.registry.client import AsyncRegistryClient
26
+ from egse.registry.client import AsyncRegistryClient, REQUEST_TIMEOUT
28
27
  from egse.system import TyperAsyncCommand
29
28
  from egse.system import get_host_ip
30
29
  from egse.zmq_ser import get_port_number
31
-
32
30
  from .event import NotificationEvent
33
31
 
34
32
  REQUEST_POLL_TIMEOUT = 1.0