cgse 0.16.6__tar.gz → 0.16.8__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 (540) hide show
  1. {cgse-0.16.6 → cgse-0.16.8}/PKG-INFO +1 -1
  2. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/pyproject.toml +1 -1
  3. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_influxdb_plugin.py +3 -1
  4. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_metrics.py +3 -2
  5. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/pyproject.toml +1 -1
  6. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/pyproject.toml +1 -1
  7. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/__init__.py +2 -0
  8. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/confman_cs.py +12 -11
  9. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/control.py +18 -21
  10. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/log_cs.py +1 -1
  11. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/__init__.py +9 -5
  12. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_cs.py +13 -16
  13. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/proxy.py +15 -7
  14. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/client.py +73 -13
  15. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/server.py +16 -9
  16. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/__init__.py +12 -6
  17. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/storage_cs.py +13 -15
  18. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/pyproject.toml +1 -1
  19. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/pyproject.toml +1 -1
  20. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  21. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  22. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  23. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/pyproject.toml +1 -1
  24. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  25. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/pyproject.toml +1 -1
  26. {cgse-0.16.6 → cgse-0.16.8}/pyproject.toml +1 -1
  27. {cgse-0.16.6 → cgse-0.16.8}/service_registry.db +0 -0
  28. cgse-0.16.8/service_registry.db-shm +0 -0
  29. cgse-0.16.8/service_registry.db-wal +0 -0
  30. {cgse-0.16.6 → cgse-0.16.8}/.github/workflows/ruff-format-check.yaml +0 -0
  31. {cgse-0.16.6 → cgse-0.16.8}/.gitignore +0 -0
  32. {cgse-0.16.6 → cgse-0.16.8}/README.md +0 -0
  33. {cgse-0.16.6 → cgse-0.16.8}/buffer_vat.log +0 -0
  34. {cgse-0.16.6 → cgse-0.16.8}/buffer_vat.png +0 -0
  35. {cgse-0.16.6 → cgse-0.16.8}/bump.py +0 -0
  36. {cgse-0.16.6 → cgse-0.16.8}/conftest.py +0 -0
  37. {cgse-0.16.6 → cgse-0.16.8}/docs/api/bits.md +0 -0
  38. {cgse-0.16.6 → cgse-0.16.8}/docs/api/calibration.md +0 -0
  39. {cgse-0.16.6 → cgse-0.16.8}/docs/api/command.md +0 -0
  40. {cgse-0.16.6 → cgse-0.16.8}/docs/api/config.md +0 -0
  41. {cgse-0.16.6 → cgse-0.16.8}/docs/api/control.md +0 -0
  42. {cgse-0.16.6 → cgse-0.16.8}/docs/api/counter.md +0 -0
  43. {cgse-0.16.6 → cgse-0.16.8}/docs/api/decorators.md +0 -0
  44. {cgse-0.16.6 → cgse-0.16.8}/docs/api/device.md +0 -0
  45. {cgse-0.16.6 → cgse-0.16.8}/docs/api/dicts.md +0 -0
  46. {cgse-0.16.6 → cgse-0.16.8}/docs/api/dummy.md +0 -0
  47. {cgse-0.16.6 → cgse-0.16.8}/docs/api/env.md +0 -0
  48. {cgse-0.16.6 → cgse-0.16.8}/docs/api/exceptions.md +0 -0
  49. {cgse-0.16.6 → cgse-0.16.8}/docs/api/heartbeat.md +0 -0
  50. {cgse-0.16.6 → cgse-0.16.8}/docs/api/hk.md +0 -0
  51. {cgse-0.16.6 → cgse-0.16.8}/docs/api/index.md +0 -0
  52. {cgse-0.16.6 → cgse-0.16.8}/docs/api/listener.md +0 -0
  53. {cgse-0.16.6 → cgse-0.16.8}/docs/api/metrics.md +0 -0
  54. {cgse-0.16.6 → cgse-0.16.8}/docs/api/mixin.md +0 -0
  55. {cgse-0.16.6 → cgse-0.16.8}/docs/api/monitoring.md +0 -0
  56. {cgse-0.16.6 → cgse-0.16.8}/docs/api/observer.md +0 -0
  57. {cgse-0.16.6 → cgse-0.16.8}/docs/api/obsid.md +0 -0
  58. {cgse-0.16.6 → cgse-0.16.8}/docs/api/persistence.md +0 -0
  59. {cgse-0.16.6 → cgse-0.16.8}/docs/api/plugin.md +0 -0
  60. {cgse-0.16.6 → cgse-0.16.8}/docs/api/process.md +0 -0
  61. {cgse-0.16.6 → cgse-0.16.8}/docs/api/reload.md +0 -0
  62. {cgse-0.16.6 → cgse-0.16.8}/docs/api/settings.md +0 -0
  63. {cgse-0.16.6 → cgse-0.16.8}/docs/api/setup.md +0 -0
  64. {cgse-0.16.6 → cgse-0.16.8}/docs/api/system.md +0 -0
  65. {cgse-0.16.6 → cgse-0.16.8}/docs/custom_theme/main.html +0 -0
  66. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/coding_style.md +0 -0
  67. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/docs.md +0 -0
  68. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/index.md +0 -0
  69. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/installation.md +0 -0
  70. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/monitoring.md +0 -0
  71. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/monorepo.md +0 -0
  72. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/nox.md +0 -0
  73. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/plugins.md +0 -0
  74. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/project-configuration.md +0 -0
  75. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/unit_testing.md +0 -0
  76. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/uv.md +0 -0
  77. {cgse-0.16.6 → cgse-0.16.8}/docs/dev_guide/versioning.md +0 -0
  78. {cgse-0.16.6 → cgse-0.16.8}/docs/getting_started.md +0 -0
  79. {cgse-0.16.6 → cgse-0.16.8}/docs/help.md +0 -0
  80. {cgse-0.16.6 → cgse-0.16.8}/docs/images/cli-cgse.png +0 -0
  81. {cgse-0.16.6 → cgse-0.16.8}/docs/images/github-fork-clone-dark.png +0 -0
  82. {cgse-0.16.6 → cgse-0.16.8}/docs/images/github-fork-clone.png +0 -0
  83. {cgse-0.16.6 → cgse-0.16.8}/docs/images/grafana-queries.png +0 -0
  84. {cgse-0.16.6 → cgse-0.16.8}/docs/images/icons/cgse-logo-blue.svg +0 -0
  85. {cgse-0.16.6 → cgse-0.16.8}/docs/images/icons/cgse-logo.svg +0 -0
  86. {cgse-0.16.6 → cgse-0.16.8}/docs/index.md +0 -0
  87. {cgse-0.16.6 → cgse-0.16.8}/docs/initialize.md +0 -0
  88. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/images/load_methods.png +0 -0
  89. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/index.md +0 -0
  90. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/settings.md +0 -0
  91. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-common/setup.md +0 -0
  92. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-coordinates/index.md +0 -0
  93. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/index.md +0 -0
  94. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/notifyhub.md +0 -0
  95. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-core/registry.md +0 -0
  96. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/cgse-gui/index.md +0 -0
  97. {cgse-0.16.6 → cgse-0.16.8}/docs/libs/index.md +0 -0
  98. {cgse-0.16.6 → cgse-0.16.8}/docs/package_list.md +0 -0
  99. {cgse-0.16.6 → cgse-0.16.8}/docs/projects/cgse-tools.md +0 -0
  100. {cgse-0.16.6 → cgse-0.16.8}/docs/projects/index.md +0 -0
  101. {cgse-0.16.6 → cgse-0.16.8}/docs/projects/symetrie-hexapod.md +0 -0
  102. {cgse-0.16.6 → cgse-0.16.8}/docs/roadmap.md +0 -0
  103. {cgse-0.16.6 → cgse-0.16.8}/docs/stylesheets/custom.css +0 -0
  104. {cgse-0.16.6 → cgse-0.16.8}/docs/stylesheets/extra.css +0 -0
  105. {cgse-0.16.6 → cgse-0.16.8}/docs/tutorial.md +0 -0
  106. {cgse-0.16.6 → cgse-0.16.8}/docs/user_guide/cli.md +0 -0
  107. {cgse-0.16.6 → cgse-0.16.8}/docs/user_guide/index.md +0 -0
  108. {cgse-0.16.6 → cgse-0.16.8}/duckdb_metrics.db +0 -0
  109. {cgse-0.16.6 → cgse-0.16.8}/duckdb_metrics.db.wal +0 -0
  110. {cgse-0.16.6 → cgse-0.16.8}/identifier.sqlite +0 -0
  111. {cgse-0.16.6 → cgse-0.16.8}/justfile +0 -0
  112. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/README.md +0 -0
  113. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/justfile +0 -0
  114. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/noxfile.py +0 -0
  115. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/service_registry.db +0 -0
  116. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  117. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  118. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  119. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/bits.py +0 -0
  120. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/calibration.py +0 -0
  121. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/config.py +0 -0
  122. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/counter.py +0 -0
  123. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/decorators.py +0 -0
  124. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/device.py +0 -0
  125. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/dicts.py +0 -0
  126. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/env.py +0 -0
  127. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/exceptions.py +0 -0
  128. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  129. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/hk.py +0 -0
  130. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/log.py +0 -0
  131. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/metrics.py +0 -0
  132. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/observer.py +0 -0
  133. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/obsid.py +0 -0
  134. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/persistence.py +0 -0
  135. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugin.py +0 -0
  136. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
  137. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  138. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
  139. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/process.py +0 -0
  140. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/py.typed +0 -0
  141. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  142. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/ratelimit.py +0 -0
  143. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/reload.py +0 -0
  144. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/resource.py +0 -0
  145. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/response.py +0 -0
  146. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/scpi.py +0 -0
  147. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/settings.py +0 -0
  148. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/settings.yaml +0 -0
  149. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/setup.py +0 -0
  150. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/signal.py +0 -0
  151. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/socketdevice.py +0 -0
  152. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/state.py +0 -0
  153. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/system.py +0 -0
  154. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/task.py +0 -0
  155. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/version.py +0 -0
  156. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  157. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/conftest.py +0 -0
  158. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/COPYING +0 -0
  159. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  160. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  161. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  162. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  163. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  164. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  165. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  166. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  167. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  168. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  169. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  170. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  171. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  172. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  173. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  174. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  175. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  176. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  177. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  178. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  179. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  180. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  181. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  182. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  183. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  184. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  185. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  186. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  187. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  188. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  189. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  190. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  191. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  192. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  193. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  194. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  195. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  196. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  197. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  198. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  199. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  200. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  201. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  202. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_bits.py +0 -0
  203. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_config.py +0 -0
  204. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_decorators.py +0 -0
  205. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_device.py +0 -0
  206. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_env.py +0 -0
  207. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_fixtures.py +0 -0
  208. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_hk.py +0 -0
  209. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_log.py +0 -0
  210. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_plugin.py +0 -0
  211. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_process.py +0 -0
  212. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_ratelimit.py +0 -0
  213. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_resource.py +0 -0
  214. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_response.py +0 -0
  215. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_settings.py +0 -0
  216. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_setup.py +0 -0
  217. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_signal.py +0 -0
  218. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_state.py +0 -0
  219. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_system.py +0 -0
  220. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_task.py +0 -0
  221. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  222. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/README.md +0 -0
  223. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  224. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  225. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  226. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  227. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  228. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  229. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  230. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  231. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  232. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  233. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  234. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  235. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  236. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  237. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  238. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_point.py +0 -0
  239. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  240. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  241. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  242. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/.envrc.disabled +0 -0
  243. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/README.md +0 -0
  244. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/service_registry.db +0 -0
  245. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  246. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  247. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  248. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  249. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  250. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/services.py +0 -0
  251. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  252. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  253. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/async_control.py +0 -0
  254. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
  255. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/command.py +0 -0
  256. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  257. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  258. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/connect-todo.py +0 -0
  259. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/connect.py +0 -0
  260. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/dummy.py +0 -0
  261. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  262. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  263. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  264. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  265. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  266. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  267. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  268. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/listener.py +0 -0
  269. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  270. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  271. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
  272. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
  273. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/mixin.py +0 -0
  274. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/monitoring.py +0 -0
  275. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  276. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  277. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  278. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
  279. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  280. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
  281. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  282. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  283. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  284. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/protocol.py +0 -0
  285. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  286. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  287. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/registry/service.py +0 -0
  288. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/services.py +0 -0
  289. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/services.yaml +0 -0
  290. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  291. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  292. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  293. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/conftest.py +0 -0
  294. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  295. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  296. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  297. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/fixtures/services.py +0 -0
  298. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  299. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  300. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  301. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  302. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  303. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/services.py +0 -0
  304. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  305. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_async_control.py +0 -0
  306. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  307. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  308. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_command.py +0 -0
  309. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  310. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_connect.py +0 -0
  311. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_control.py +0 -0
  312. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_dummy.py +0 -0
  313. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_event_notification.py +0 -0
  314. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_extensions.py +0 -0
  315. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_listener.py +0 -0
  316. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_logger.py +0 -0
  317. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_mixin.py +0 -0
  318. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  319. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_protocol.py +0 -0
  320. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  321. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_registry_service.py +0 -0
  322. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_server_running.py +0 -0
  323. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  324. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_settings_core.py +0 -0
  325. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  326. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/README.md +0 -0
  327. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  328. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  329. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  330. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  331. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  332. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  333. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  334. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  335. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  336. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  337. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  338. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  339. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  340. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  341. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  342. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  343. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  344. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  345. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  346. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  347. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  348. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  349. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  350. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  351. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  352. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  353. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  354. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  355. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  356. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  357. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  358. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  359. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  360. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  361. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  362. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  363. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  364. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  365. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  366. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  367. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  368. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  369. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  370. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  371. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  372. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  373. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  374. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  375. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  376. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  377. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  378. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  379. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  380. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  381. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  382. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  383. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  384. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  385. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  386. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  387. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  388. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  389. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  390. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  391. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  392. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  393. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  394. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  395. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  396. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  397. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  398. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  399. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  400. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  401. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  402. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  403. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  404. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  405. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  406. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  407. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  408. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  409. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  410. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  411. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  412. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  413. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  414. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  415. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  416. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  417. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  418. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  419. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  420. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  421. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  422. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  423. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  424. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  425. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  426. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  427. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  428. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  429. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  430. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  431. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  432. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  433. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  434. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  435. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  436. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  437. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  438. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  439. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  440. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  441. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  442. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  443. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  444. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  445. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  446. {cgse-0.16.6 → cgse-0.16.8}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  447. {cgse-0.16.6 → cgse-0.16.8}/mkdocs.yml +0 -0
  448. {cgse-0.16.6 → cgse-0.16.8}/noxfile.py +0 -0
  449. {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/dbend-dark.svg +0 -0
  450. {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/dbend-light.svg +0 -0
  451. {cgse-0.16.6 → cgse-0.16.8}/overrides/.icons/custom/gear.svg +0 -0
  452. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/README.md +0 -0
  453. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  454. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  455. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  456. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  457. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  458. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/README.md +0 -0
  459. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/justfile +0 -0
  460. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  461. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  462. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  463. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
  464. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  465. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
  466. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
  467. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  468. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  469. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  470. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  471. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  472. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
  473. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  474. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
  475. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  476. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
  477. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
  478. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  479. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
  480. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  481. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  482. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  483. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  484. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  485. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  486. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  487. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  488. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  489. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  490. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  491. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  492. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  493. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/README.md +0 -0
  494. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  495. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  496. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  497. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  498. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  499. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  500. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  501. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  502. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  503. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  504. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  505. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  506. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  507. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  508. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  509. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  510. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  511. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
  512. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  513. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  514. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  515. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  516. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  517. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  518. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  519. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  520. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  521. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  522. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  523. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  524. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  525. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
  526. {cgse-0.16.6 → cgse-0.16.8}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  527. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/README.md +0 -0
  528. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  529. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/README.md +0 -0
  530. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  531. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/README.md +0 -0
  532. {cgse-0.16.6 → cgse-0.16.8}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  533. {cgse-0.16.6 → cgse-0.16.8}/ruff.toml +0 -0
  534. {cgse-0.16.6 → cgse-0.16.8}/scratch/advanced-process-monitoring.py +0 -0
  535. {cgse-0.16.6 → cgse-0.16.8}/scratch/live-process-monitoring.py +0 -0
  536. {cgse-0.16.6 → cgse-0.16.8}/scratch/match-case.py +0 -0
  537. {cgse-0.16.6 → cgse-0.16.8}/scratch/processes.json +0 -0
  538. {cgse-0.16.6 → cgse-0.16.8}/scratch/simple-process-monitoring.py +0 -0
  539. {cgse-0.16.6 → cgse-0.16.8}/temperature_readings.log +0 -0
  540. {cgse-0.16.6 → cgse-0.16.8}/test_service_registry.db +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.16.6
3
+ Version: 0.16.8
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.16.6"
3
+ version = "0.16.8"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -20,7 +20,9 @@ def test_influxdb_access():
20
20
  influxdb = get_metrics_repo("influxdb", {"host": "http://localhost:8181", "database": "ARIEL", "token": token})
21
21
  influxdb.connect()
22
22
 
23
- result = influxdb.query("SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas")
23
+ result = influxdb.query(
24
+ "SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
25
+ )
24
26
  print(result)
25
27
  assert isinstance(result, pd.DataFrame)
26
28
 
@@ -11,8 +11,9 @@ def test_get_metrics_repo():
11
11
 
12
12
  # Don't use a too large time interval here, or you will get an error like:
13
13
  # 'External error: Query would exceed file limit of 432 parquet files'
14
- result = influxdb.query("SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20",
15
- mode="pandas")
14
+ result = influxdb.query(
15
+ "SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
16
+ )
16
17
  print(result)
17
18
 
18
19
  # result = influxdb.query("SHOW TABLES;")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.16.6"
3
+ version = "0.16.8"
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.16.6"
3
+ version = "0.16.8"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -177,6 +177,8 @@ HOSTNAME = settings.get("HOSTNAME", "localhost")
177
177
  COMMANDING_PORT = settings.get("COMMANDING_PORT", 0)
178
178
  SERVICE_PORT = settings.get("SERVICE_PORT", 0)
179
179
  MONITORING_PORT = settings.get("MONITORING_PORT", 0)
180
+ STORAGE_MNEMONIC = settings.get("STORAGE_MNEMONIC", "CM")
181
+ SERVICE_TYPE = settings.get("SERVICE_TYPE", "cm_cs")
180
182
 
181
183
  # CM_SETUP_ID = Gauge("CM_SETUP_ID", 'Setup ID')
182
184
  # CM_TEST_ID = Gauge("CM_TEST_ID", 'Test ID')
@@ -22,12 +22,16 @@ from rich.console import Console
22
22
 
23
23
  from egse.confman import ConfigurationManagerProtocol
24
24
  from egse.confman import ConfigurationManagerProxy
25
- from egse.confman import PROCESS_NAME
26
- from egse.confman import PROTOCOL
27
- from egse.confman import HOSTNAME
28
- from egse.confman import COMMANDING_PORT
29
- from egse.confman import SERVICE_PORT
30
- from egse.confman import MONITORING_PORT
25
+ from egse.confman import (
26
+ PROCESS_NAME,
27
+ PROTOCOL,
28
+ HOSTNAME,
29
+ COMMANDING_PORT,
30
+ SERVICE_PORT,
31
+ MONITORING_PORT,
32
+ STORAGE_MNEMONIC,
33
+ SERVICE_TYPE,
34
+ )
31
35
 
32
36
  from egse.control import ControlServer
33
37
  from egse.env import get_conf_data_location
@@ -66,7 +70,7 @@ class ConfigurationManagerControlServer(ControlServer):
66
70
 
67
71
  self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
68
72
 
69
- self.register_service(service_type=settings.SERVICE_TYPE)
73
+ self.register_service(service_type=SERVICE_TYPE)
70
74
 
71
75
  self.set_hk_delay(10.0)
72
76
 
@@ -85,10 +89,7 @@ class ConfigurationManagerControlServer(ControlServer):
85
89
  return get_port_number(self.dev_ctrl_mon_sock) or MONITORING_PORT
86
90
 
87
91
  def get_storage_mnemonic(self):
88
- try:
89
- return settings.STORAGE_MNEMONIC
90
- except AttributeError:
91
- return "CM"
92
+ return STORAGE_MNEMONIC
92
93
 
93
94
  def is_storage_manager_active(self):
94
95
  from egse.storage import is_storage_manager_active
@@ -132,8 +132,6 @@ class ControlServer(metaclass=abc.ABCMeta):
132
132
  self.registry = RegistryClient()
133
133
  self.registry.connect()
134
134
 
135
- self.service_id = None
136
-
137
135
  # These instance variables will probably be overwritten by the subclass __init__
138
136
  self.service_type = camel_to_kebab(type(self).__name__)
139
137
  self.service_name = camel_to_snake(type(self).__name__)
@@ -620,27 +618,15 @@ class ControlServer(metaclass=abc.ABCMeta):
620
618
  def setup_signaling(self):
621
619
  self.signaling = FileBasedSignaling(self.service_name)
622
620
  self.signaling.start_monitoring()
623
- self.signaling.register_handler("reregister", self._reregister_service)
624
-
625
- def _reregister_service(self, force: bool = False):
626
- self.logger.info(f"Re-registration of service: {self.service_name} ({force=})")
627
-
628
- if self.registry.get_service(self.service_id):
629
- if force:
630
- self.deregister_service()
631
- else:
632
- return
633
-
634
- # FIXME: not sure if the stop heartbeat is necessary here, but I see that after
635
- # a re-registration signal, the heartbeat socket is None.
636
- # self.registry.stop_heartbeat()
637
-
638
- self.register_service(self.service_type)
621
+ self.signaling.register_handler("reregister", self.reregister_service)
639
622
 
640
- def register_service(self, service_type: str):
623
+ def register_service(self, service_type: str) -> None:
641
624
  self.logger.info(f"Registering service {self.service_name} as type {service_type}")
625
+
642
626
  self.service_type = service_type
643
- self.service_id = self.registry.register(
627
+
628
+ self.registry.stop_heartbeat()
629
+ self.registry.register(
644
630
  name=self.service_name,
645
631
  host=get_host_ip() or "127.0.0.1",
646
632
  port=get_port_number(self.dev_ctrl_cmd_sock),
@@ -655,7 +641,18 @@ class ControlServer(metaclass=abc.ABCMeta):
655
641
  def deregister_service(self):
656
642
  if self.registry:
657
643
  self.registry.stop_heartbeat()
658
- self.registry.deregister(self.service_id)
644
+ self.registry.deregister()
645
+
646
+ def reregister_service(self, force: bool = False) -> None:
647
+ self.logger.info(f"Re-registration of service: {self.service_name} ({force=})")
648
+
649
+ if self.registry.get_service():
650
+ if force:
651
+ self.deregister_service()
652
+ else:
653
+ return
654
+
655
+ self.register_service(self.service_type)
659
656
 
660
657
  def store_housekeeping_information(self, data: dict) -> None:
661
658
  """Sends housekeeping information to the Storage Manager.
@@ -254,7 +254,7 @@ def start():
254
254
  commander.close(linger=0)
255
255
  receiver.close(linger=0)
256
256
 
257
- if not is_service_registered:
257
+ if is_service_registered:
258
258
  client.stop_heartbeat()
259
259
  client.deregister(service_id)
260
260
 
@@ -25,10 +25,14 @@ COMMAND_SETTINGS = Settings.load(location=HERE, filename="procman.yaml")
25
25
 
26
26
  PROXY_TIMEOUT = 10.0 # don't wait longer than 10s
27
27
 
28
+ PROCESS_NAME = settings.get("PROCESS_NAME", "pm_cs")
28
29
  SERVICE_TYPE = settings.get("SERVICE_TYPE", "pm_cs")
29
30
  PROTOCOL = settings.get("PROTOCOL", "tcp")
30
31
  HOSTNAME = settings.get("HOSTNAME", "localhost")
31
32
  COMMANDING_PORT = settings.get("COMMANDING_PORT", 0) # dynamically assigned by the system if 0
33
+ SERVICE_PORT = settings.get("SERVICE_PORT", 0)
34
+ MONITORING_PORT = settings.get("MONITORING_PORT", 0)
35
+ STORAGE_MNEMONIC = settings.get("STORAGE_MNEMONIC", "PM")
32
36
 
33
37
 
34
38
  def is_process_manager_active(timeout: float = 0.5) -> bool:
@@ -395,11 +399,11 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
395
399
  """Proxy for process management, used to connect to the Process Manager Control Server and send commands remotely."""
396
400
 
397
401
  def __init__(
398
- self,
399
- protocol: str = PROTOCOL,
400
- hostname: str = HOSTNAME,
401
- port: int = COMMANDING_PORT,
402
- timeout: float = PROXY_TIMEOUT
402
+ self,
403
+ protocol: str = PROTOCOL,
404
+ hostname: str = HOSTNAME,
405
+ port: int = COMMANDING_PORT,
406
+ timeout: float = PROXY_TIMEOUT,
403
407
  ):
404
408
  """
405
409
  Initialisation of a new Proxy for Process Management.
@@ -21,7 +21,16 @@ from egse.process import SubProcess
21
21
  from egse.procman.procman_protocol import ProcessManagerProtocol
22
22
  from egse.registry.client import RegistryClient
23
23
  from egse.services import ServiceProxy
24
- from egse.settings import Settings
24
+ from egse.procman import (
25
+ PROCESS_NAME,
26
+ SERVICE_TYPE,
27
+ PROTOCOL,
28
+ COMMANDING_PORT,
29
+ SERVICE_PORT,
30
+ MONITORING_PORT,
31
+ HOSTNAME,
32
+ STORAGE_MNEMONIC,
33
+ )
25
34
  from egse.storage import store_housekeeping_information
26
35
  from egse.zmq_ser import get_port_number
27
36
 
@@ -29,15 +38,6 @@ from egse.zmq_ser import get_port_number
29
38
 
30
39
  logger = logging.getLogger("egse.procman")
31
40
 
32
- settings = Settings.load("Process Manager Control Server")
33
-
34
- PROCESS_NAME = settings.get("PROCESS_NAME", "cm_cs")
35
- PROTOCOL = settings.get("PROTOCOL", "tcp")
36
- HOSTNAME = settings.get("HOSTNAME", "localhost")
37
- COMMANDING_PORT = settings.get("COMMANDING_PORT", 0)
38
- SERVICE_PORT = settings.get("SERVICE_PORT", 0)
39
- MONITORING_PORT = settings.get("MONITORING_PORT", 0)
40
-
41
41
 
42
42
  class ProcessManagerControlServer(ControlServer):
43
43
  def __init__(self):
@@ -47,7 +47,7 @@ class ProcessManagerControlServer(ControlServer):
47
47
 
48
48
  self.logger = logger
49
49
  self.service_name = PROCESS_NAME
50
- self.service_type = settings.SERVICE_TYPE
50
+ self.service_type = SERVICE_TYPE
51
51
 
52
52
  self.device_protocol = ProcessManagerProtocol(self)
53
53
 
@@ -57,7 +57,7 @@ class ProcessManagerControlServer(ControlServer):
57
57
 
58
58
  self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
59
59
 
60
- self.register_service(service_type=settings.SERVICE_TYPE)
60
+ self.register_service(service_type=SERVICE_TYPE)
61
61
 
62
62
  self.set_hk_delay(10.0)
63
63
 
@@ -76,10 +76,7 @@ class ProcessManagerControlServer(ControlServer):
76
76
  return get_port_number(self.dev_ctrl_mon_sock) or MONITORING_PORT
77
77
 
78
78
  def get_storage_mnemonic(self):
79
- try:
80
- return settings.STORAGE_MNEMONIC
81
- except AttributeError:
82
- return "PM"
79
+ return STORAGE_MNEMONIC
83
80
 
84
81
  def is_storage_manager_active(self):
85
82
  from egse.storage import is_storage_manager_active
@@ -13,6 +13,7 @@ from types import MethodType
13
13
 
14
14
  import zmq
15
15
 
16
+ from egse.connect import VERBOSE_DEBUG
16
17
  from egse.decorators import dynamic_interface
17
18
  from egse.log import logger
18
19
  from egse.mixin import DynamicClientCommandMixin
@@ -102,7 +103,7 @@ class BaseProxy(ControlServerConnectionInterface):
102
103
  for a reply from the control server.
103
104
  """
104
105
 
105
- self._logger = logging.getLogger(self.__class__.__name__)
106
+ self._logger = logger
106
107
 
107
108
  self._ctx = zmq.Context.instance()
108
109
  self._poller = zmq.Poller()
@@ -123,7 +124,8 @@ class BaseProxy(ControlServerConnectionInterface):
123
124
  self.disconnect_cs()
124
125
 
125
126
  def connect_cs(self):
126
- self._logger.log(0, f"Trying to connect {self.__class__.__name__} to {self._endpoint}")
127
+ if VERBOSE_DEBUG:
128
+ self._logger.debug(f"Trying to connect {self.__class__.__name__} to {self._endpoint}")
127
129
 
128
130
  self._socket = self._ctx.socket(zmq.REQ)
129
131
  self._socket.connect(self._endpoint)
@@ -135,7 +137,8 @@ class BaseProxy(ControlServerConnectionInterface):
135
137
  self._poller.unregister(self._socket)
136
138
 
137
139
  def reconnect_cs(self):
138
- self._logger.log(20, f"Trying to reconnect {self.__class__.__name__} to {self._endpoint}")
140
+ if VERBOSE_DEBUG:
141
+ self._logger.debug(f"Trying to reconnect {self.__class__.__name__} to {self._endpoint}")
139
142
 
140
143
  if not self._socket.closed:
141
144
  self._socket.close(linger=0)
@@ -145,7 +148,8 @@ class BaseProxy(ControlServerConnectionInterface):
145
148
  self._poller.register(self._socket, zmq.POLLIN)
146
149
 
147
150
  def reset_cs_connection(self):
148
- self._logger.debug(f"Trying to reset the connection from {self.__class__.__name__} to {self._endpoint}")
151
+ if VERBOSE_DEBUG:
152
+ self._logger.debug(f"Trying to reset the connection from {self.__class__.__name__} to {self._endpoint}")
149
153
 
150
154
  self.disconnect_cs()
151
155
  self.connect_cs()
@@ -191,7 +195,9 @@ class BaseProxy(ControlServerConnectionInterface):
191
195
  if self._socket.closed:
192
196
  self.reconnect_cs()
193
197
 
194
- self._logger.log(0, f"Sending '{data}'")
198
+ if VERBOSE_DEBUG:
199
+ self._logger.debug(f"Sending '{data}'")
200
+
195
201
  self._socket.send(pickle_string)
196
202
 
197
203
  while True:
@@ -202,7 +208,8 @@ class BaseProxy(ControlServerConnectionInterface):
202
208
  if not pickle_string:
203
209
  break
204
210
  response = pickle.loads(pickle_string)
205
- self._logger.log(0, f"Receiving response: {response}")
211
+ if VERBOSE_DEBUG:
212
+ self._logger.debug(f"Receiving response: {response}")
206
213
  return response
207
214
  else:
208
215
  # timeout - server unavailable
@@ -227,7 +234,8 @@ class BaseProxy(ControlServerConnectionInterface):
227
234
 
228
235
  def ping(self):
229
236
  return_code = self.send("Ping", retries=0, timeout=1.0)
230
- self._logger.log(0, f"Check if control server is available: Ping - {return_code}")
237
+ if VERBOSE_DEBUG:
238
+ self._logger.debug(f"Check if control server is available: Ping - {return_code}")
231
239
  return return_code == "Pong"
232
240
 
233
241
  def get_endpoint(self) -> str:
@@ -310,6 +310,25 @@ class RegistryClient:
310
310
  self.logger.error(f"Failed to deregister service: {response.get('error')}")
311
311
  return False
312
312
 
313
+ def reregister(self) -> str | None:
314
+ if not self._service_id:
315
+ self.logger.warning("Cannot reregister: no service is registered")
316
+ return None
317
+
318
+ if not self._service_info:
319
+ self.logger.warning(
320
+ "Cannot reregister: no service info was saved by this registry client or service already deregistered."
321
+ )
322
+ return None
323
+
324
+ return self.register(
325
+ name=self._service_info["name"],
326
+ host=self._service_info["host"],
327
+ port=self._service_info["port"],
328
+ service_type=self._service_info["type"],
329
+ metadata=self._service_info["metadata"],
330
+ )
331
+
313
332
  def discover_service(self, service_type: str, use_cache: bool = False) -> dict[str, Any] | None:
314
333
  """
315
334
  Discover a service of the specified type. The service is guaranteed to be healthy at the time of discovery.
@@ -344,17 +363,23 @@ class RegistryClient:
344
363
  self.logger.warning(f"Service discovery failed: {response.get('error')}")
345
364
  return None
346
365
 
347
- def get_service(self, service_id: str, use_cache: bool = True) -> dict[str, Any] | None:
366
+ def get_service(self, service_id: str | None = None, use_cache: bool = True) -> dict[str, Any] | None:
348
367
  """
349
- Get information about a specific service.
368
+ Get information about a specific service. When no service_id is given,
369
+ the service_id known to this client will be used.
350
370
 
351
371
  Args:
352
- service_id: ID of the service to get
372
+ service_id: ID of the service to get [default=None]
353
373
  use_cache: Whether to use cached service information
354
374
 
355
375
  Returns:
356
376
  Service information if found, None otherwise.
357
377
  """
378
+ service_id = service_id or self._service_id
379
+
380
+ if not service_id:
381
+ self.logger.warning("Cannot get service: no service id is given or known.")
382
+ return None
358
383
 
359
384
  request = {"action": "get", "service_id": service_id}
360
385
 
@@ -436,6 +461,9 @@ class RegistryClient:
436
461
  self.logger.warning("Cannot start heartbeat: no service is registered")
437
462
  return None
438
463
 
464
+ # Cancel an existing heartbeat thread if present
465
+ self.stop_heartbeat()
466
+
439
467
  # If interval not specified, use 1/3 of TTL
440
468
  if interval is None:
441
469
  interval = max(1, self._ttl // 3)
@@ -453,6 +481,9 @@ class RegistryClient:
453
481
  if not self.health_check():
454
482
  self.logger.warning("ServiceRegistry not responding.")
455
483
  return
484
+ else:
485
+ self.logger.info("Health check succeeded, reregistering...")
486
+ self.reregister()
456
487
 
457
488
  else:
458
489
  self.logger.debug(response.get("message"))
@@ -581,8 +612,6 @@ class AsyncRegistryClient:
581
612
  # Default to receiving all events
582
613
  self.sub_socket.setsockopt_string(zmq.SUBSCRIBE, "")
583
614
 
584
- self._connect_hb_socket()
585
-
586
615
  def _connect_hb_socket(self):
587
616
  self.hb_socket = self.context.socket(zmq.REQ)
588
617
  self.hb_socket.setsockopt(zmq.LINGER, 0) # Don't wait for unsent messages on close()
@@ -599,11 +628,10 @@ class AsyncRegistryClient:
599
628
  self.sub_socket.close(linger=0)
600
629
  self.sub_socket = None
601
630
 
602
- self._disconnect_hb_socket()
603
-
604
631
  def _disconnect_hb_socket(self):
605
632
  if self.hb_socket:
606
- self.hb_socket.close(linger=0)
633
+ self.hb_socket.setsockopt(zmq.LINGER, 0)
634
+ self.hb_socket.close()
607
635
  self.hb_socket = None
608
636
 
609
637
  def _get_service_cache_lock(self):
@@ -625,10 +653,10 @@ class AsyncRegistryClient:
625
653
  Returns:
626
654
  The response from the registry as a dictionary.
627
655
  """
628
- self.logger.debug(f"Sending request: {request}")
629
656
 
630
657
  timeout = timeout or self.timeout
631
658
  try:
659
+ self.logger.debug(f"Sending request: {request}")
632
660
  await self.req_socket.send_multipart([msg_type.value, json.dumps(request).encode()])
633
661
 
634
662
  try:
@@ -686,9 +714,9 @@ class AsyncRegistryClient:
686
714
  except asyncio.TimeoutError:
687
715
  self.logger.error(f"Heartbeat request timed out after {HEART_BEAT_TIMEOUT:.2f}s")
688
716
  # Reset the socket to avoid invalid state
689
- self.hb_socket.close()
690
- self.hb_socket = self.context.socket(zmq.REQ)
691
- self.hb_socket.connect(self.registry_req_endpoint)
717
+ self._disconnect_hb_socket()
718
+ await asyncio.sleep(HEART_BEAT_RECONNECT)
719
+ self._connect_hb_socket()
692
720
  return {"success": False, "error": "Heartbeat request timed out"}
693
721
  except zmq.ZMQError as exc:
694
722
  self.logger.error(f"ZMQ error: {exc}", exc_info=True)
@@ -788,6 +816,25 @@ class AsyncRegistryClient:
788
816
  self.logger.error(f"Failed to deregister service: {response.get('error')}")
789
817
  return False
790
818
 
819
+ async def reregister(self) -> str | None:
820
+ if not self._service_id:
821
+ self.logger.warning("Cannot reregister: no service is registered")
822
+ return None
823
+
824
+ if not self._service_info:
825
+ self.logger.warning(
826
+ "Cannot reregister: no service info was saved by this registry client or service already deregistered."
827
+ )
828
+ return None
829
+
830
+ return await self.register(
831
+ name=self._service_info["name"],
832
+ host=self._service_info["host"],
833
+ port=self._service_info["port"],
834
+ service_type=self._service_info["type"],
835
+ metadata=self._service_info["metadata"],
836
+ )
837
+
791
838
  async def start_heartbeat(self, interval: int | None = None) -> asyncio.Task | None:
792
839
  """
793
840
  Start sending heartbeats to the registry.
@@ -812,6 +859,8 @@ class AsyncRegistryClient:
812
859
  self._running = True
813
860
 
814
861
  async def heartbeat_loop():
862
+ self._connect_hb_socket()
863
+
815
864
  try:
816
865
  while self._running and self._service_id:
817
866
  try:
@@ -821,8 +870,17 @@ class AsyncRegistryClient:
821
870
 
822
871
  if not response.get("success"):
823
872
  self.logger.warning(f"Heartbeat failed: {response.get('error')}")
873
+
874
+ # Do a health check
875
+ if not await self.health_check():
876
+ self.logger.warning("ServiceRegistry not responding.")
877
+ continue
878
+ else:
879
+ self.logger.info("Health check succeeded, reregistering...")
880
+ await self.reregister()
881
+
824
882
  else:
825
- self.logger.info(response.get("message"))
883
+ self.logger.debug(response.get("message"))
826
884
  except Exception as exc:
827
885
  self.logger.error(f"Error in heartbeat loop: {exc}", exc_info=True)
828
886
 
@@ -830,6 +888,8 @@ class AsyncRegistryClient:
830
888
  await asyncio.sleep(interval)
831
889
  except asyncio.CancelledError:
832
890
  self.logger.info("Heartbeat task cancelled")
891
+ finally:
892
+ self._disconnect_hb_socket()
833
893
 
834
894
  # Start the heartbeat task
835
895
  self._heartbeat_task = task = asyncio.create_task(heartbeat_loop())
@@ -22,6 +22,7 @@ import typer
22
22
  import zmq
23
23
  import zmq.asyncio
24
24
 
25
+ from egse.env import bool_env
25
26
  from egse.logger import remote_logging
26
27
  from egse.registry import DEFAULT_RS_DB_PATH
27
28
  from egse.registry import DEFAULT_RS_HB_PORT
@@ -39,6 +40,8 @@ from egse.system import get_logging_level
39
40
 
40
41
  settings = Settings.load("Service Registry")
41
42
 
43
+ VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
44
+
42
45
  app = typer.Typer(name="rs_cs")
43
46
 
44
47
 
@@ -234,7 +237,9 @@ class AsyncRegistryServer:
234
237
  message_type = MessageType(message_parts[1])
235
238
  message_data = message_parts[2]
236
239
 
237
- self.logger.info(f"{client_id = }, {message_type = }, {message_data = }")
240
+ if VERBOSE_DEBUG:
241
+ self.logger.debug(f"{client_id = }, {message_type = }, {message_data = }")
242
+
238
243
  response = await self._process_request(message_data)
239
244
 
240
245
  await self._send_response(client_id, message_type, response)
@@ -274,7 +279,7 @@ class AsyncRegistryServer:
274
279
  """
275
280
  try:
276
281
  request = json.loads(msg_data.decode())
277
- self.logger.info(f"Received request: {request}")
282
+ self.logger.debug(f"Received request: {request}")
278
283
 
279
284
  except json.JSONDecodeError as exc:
280
285
  self.logger.error(f"Invalid JSON received: {exc}")
@@ -377,7 +382,7 @@ class AsyncRegistryServer:
377
382
  """Handle a service heartbeat request."""
378
383
  service_id = request.get("service_id")
379
384
 
380
- self.logger.info(f"Handle renew request: {request}")
385
+ self.logger.debug(f"Handle renew request: {request}")
381
386
 
382
387
  if not service_id:
383
388
  return {"success": False, "error": "Missing required field: service_id"}
@@ -428,7 +433,7 @@ class AsyncRegistryServer:
428
433
 
429
434
  service_id = request.get("service_id")
430
435
 
431
- self.logger.info(f"Handle get request: {request}")
436
+ self.logger.debug(f"Handle get request: {request}")
432
437
 
433
438
  if not service_id:
434
439
  return {"success": False, "error": "Missing required field: service_id"}
@@ -445,7 +450,7 @@ class AsyncRegistryServer:
445
450
  """Handle a request to list services."""
446
451
  service_type = request.get("service_type")
447
452
 
448
- self.logger.info(f"Handle list request: {request}")
453
+ self.logger.debug(f"Handle list request: {request}")
449
454
 
450
455
  # List the services
451
456
  services = await self.backend.list_services(service_type)
@@ -459,7 +464,7 @@ class AsyncRegistryServer:
459
464
  """Handle a service discovery request."""
460
465
  service_type = request.get("service_type")
461
466
 
462
- self.logger.info(f"Handle discover request for service type: {service_type}")
467
+ self.logger.debug(f"Handle discover request for service type: {service_type}")
463
468
 
464
469
  if not service_type:
465
470
  return {"success": False, "error": "Missing required field: service_type"}
@@ -475,7 +480,7 @@ class AsyncRegistryServer:
475
480
  async def _handle_info(self, request: dict[str, Any]) -> dict[str, Any]:
476
481
  """Handle the info request and send information about the registry server."""
477
482
 
478
- self.logger.info(f"Handle info request: {request}")
483
+ self.logger.debug(f"Handle info request: {request}")
479
484
 
480
485
  # List the services
481
486
  services = await self.backend.list_services()
@@ -485,20 +490,21 @@ class AsyncRegistryServer:
485
490
  "status": "ok",
486
491
  "req_port": self.req_port,
487
492
  "pub_port": self.pub_port,
493
+ "hb_port": self.hb_port,
488
494
  "services": services,
489
495
  }
490
496
 
491
497
  async def _handle_health(self, request: dict[str, Any]) -> dict[str, Any]:
492
498
  """Handle a health check request."""
493
499
 
494
- self.logger.info(f"Handle health request: {request}")
500
+ self.logger.debug(f"Handle health request: {request}")
495
501
 
496
502
  return {"success": True, "status": "ok", "timestamp": int(time.time())}
497
503
 
498
504
  async def _handle_terminate(self, request: dict[str, Any]) -> dict[str, Any]:
499
505
  """Handle a termination request."""
500
506
 
501
- self.logger.info(f"Handle termination request: {request}")
507
+ self.logger.debug(f"Handle termination request: {request}")
502
508
 
503
509
  self.stop()
504
510
 
@@ -572,6 +578,7 @@ async def status(
572
578
  Status: {response["status"]}
573
579
  Requests port: {response["req_port"]}
574
580
  Notifications port: {response["pub_port"]}
581
+ Heartbeat port: {response["hb_port"]}
575
582
  Registrations: {", ".join([f"({x['name']}, {x['health']})" for x in response["services"]])}\
576
583
  """
577
584
  )