cgse 0.14.1__tar.gz → 0.15.0__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 (528) hide show
  1. {cgse-0.14.1 → cgse-0.15.0}/PKG-INFO +1 -1
  2. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/pyproject.toml +1 -1
  3. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/pyproject.toml +1 -1
  4. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/pyproject.toml +1 -1
  5. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/logger/__init__.py +1 -1
  6. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/logger/log_cs.py +1 -1
  7. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/server.py +6 -5
  8. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/registry/__init__.py +3 -3
  9. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/registry/client.py +51 -34
  10. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/registry/server.py +0 -2
  11. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/pyproject.toml +1 -1
  12. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/pyproject.toml +1 -1
  13. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  14. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  15. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  16. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-fits/pyproject.toml +1 -1
  17. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  18. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-spw/pyproject.toml +1 -1
  19. {cgse-0.14.1 → cgse-0.15.0}/pyproject.toml +1 -1
  20. {cgse-0.14.1 → cgse-0.15.0}/service_registry.db +0 -0
  21. {cgse-0.14.1 → cgse-0.15.0}/.github/workflows/ruff-format-check.yaml +0 -0
  22. {cgse-0.14.1 → cgse-0.15.0}/.gitignore +0 -0
  23. {cgse-0.14.1 → cgse-0.15.0}/README.md +0 -0
  24. {cgse-0.14.1 → cgse-0.15.0}/bump.py +0 -0
  25. {cgse-0.14.1 → cgse-0.15.0}/conftest.py +0 -0
  26. {cgse-0.14.1 → cgse-0.15.0}/docs/api/bits.md +0 -0
  27. {cgse-0.14.1 → cgse-0.15.0}/docs/api/calibration.md +0 -0
  28. {cgse-0.14.1 → cgse-0.15.0}/docs/api/command.md +0 -0
  29. {cgse-0.14.1 → cgse-0.15.0}/docs/api/config.md +0 -0
  30. {cgse-0.14.1 → cgse-0.15.0}/docs/api/control.md +0 -0
  31. {cgse-0.14.1 → cgse-0.15.0}/docs/api/counter.md +0 -0
  32. {cgse-0.14.1 → cgse-0.15.0}/docs/api/decorators.md +0 -0
  33. {cgse-0.14.1 → cgse-0.15.0}/docs/api/device.md +0 -0
  34. {cgse-0.14.1 → cgse-0.15.0}/docs/api/dicts.md +0 -0
  35. {cgse-0.14.1 → cgse-0.15.0}/docs/api/dummy.md +0 -0
  36. {cgse-0.14.1 → cgse-0.15.0}/docs/api/env.md +0 -0
  37. {cgse-0.14.1 → cgse-0.15.0}/docs/api/exceptions.md +0 -0
  38. {cgse-0.14.1 → cgse-0.15.0}/docs/api/heartbeat.md +0 -0
  39. {cgse-0.14.1 → cgse-0.15.0}/docs/api/hk.md +0 -0
  40. {cgse-0.14.1 → cgse-0.15.0}/docs/api/index.md +0 -0
  41. {cgse-0.14.1 → cgse-0.15.0}/docs/api/listener.md +0 -0
  42. {cgse-0.14.1 → cgse-0.15.0}/docs/api/metrics.md +0 -0
  43. {cgse-0.14.1 → cgse-0.15.0}/docs/api/mixin.md +0 -0
  44. {cgse-0.14.1 → cgse-0.15.0}/docs/api/monitoring.md +0 -0
  45. {cgse-0.14.1 → cgse-0.15.0}/docs/api/observer.md +0 -0
  46. {cgse-0.14.1 → cgse-0.15.0}/docs/api/obsid.md +0 -0
  47. {cgse-0.14.1 → cgse-0.15.0}/docs/api/persistence.md +0 -0
  48. {cgse-0.14.1 → cgse-0.15.0}/docs/api/plugin.md +0 -0
  49. {cgse-0.14.1 → cgse-0.15.0}/docs/api/process.md +0 -0
  50. {cgse-0.14.1 → cgse-0.15.0}/docs/api/reload.md +0 -0
  51. {cgse-0.14.1 → cgse-0.15.0}/docs/api/settings.md +0 -0
  52. {cgse-0.14.1 → cgse-0.15.0}/docs/api/setup.md +0 -0
  53. {cgse-0.14.1 → cgse-0.15.0}/docs/api/system.md +0 -0
  54. {cgse-0.14.1 → cgse-0.15.0}/docs/custom_theme/main.html +0 -0
  55. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/coding_style.md +0 -0
  56. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/docs.md +0 -0
  57. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/index.md +0 -0
  58. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/installation.md +0 -0
  59. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/monitoring.md +0 -0
  60. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/monorepo.md +0 -0
  61. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/nox.md +0 -0
  62. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/plugins.md +0 -0
  63. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/project-configuration.md +0 -0
  64. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/unit_testing.md +0 -0
  65. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/uv.md +0 -0
  66. {cgse-0.14.1 → cgse-0.15.0}/docs/dev_guide/versioning.md +0 -0
  67. {cgse-0.14.1 → cgse-0.15.0}/docs/getting_started.md +0 -0
  68. {cgse-0.14.1 → cgse-0.15.0}/docs/help.md +0 -0
  69. {cgse-0.14.1 → cgse-0.15.0}/docs/images/github-fork-clone-dark.png +0 -0
  70. {cgse-0.14.1 → cgse-0.15.0}/docs/images/github-fork-clone.png +0 -0
  71. {cgse-0.14.1 → cgse-0.15.0}/docs/images/grafana-queries.png +0 -0
  72. {cgse-0.14.1 → cgse-0.15.0}/docs/images/icons/cgse-logo-blue.svg +0 -0
  73. {cgse-0.14.1 → cgse-0.15.0}/docs/images/icons/cgse-logo.svg +0 -0
  74. {cgse-0.14.1 → cgse-0.15.0}/docs/index.md +0 -0
  75. {cgse-0.14.1 → cgse-0.15.0}/docs/initialize.md +0 -0
  76. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-common/images/load_methods.png +0 -0
  77. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-common/index.md +0 -0
  78. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-common/settings.md +0 -0
  79. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-common/setup.md +0 -0
  80. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-coordinates/index.md +0 -0
  81. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-core/index.md +0 -0
  82. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-core/notifyhub.md +0 -0
  83. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-core/registry.md +0 -0
  84. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/cgse-gui/index.md +0 -0
  85. {cgse-0.14.1 → cgse-0.15.0}/docs/libs/index.md +0 -0
  86. {cgse-0.14.1 → cgse-0.15.0}/docs/package_list.md +0 -0
  87. {cgse-0.14.1 → cgse-0.15.0}/docs/projects/cgse-tools.md +0 -0
  88. {cgse-0.14.1 → cgse-0.15.0}/docs/projects/index.md +0 -0
  89. {cgse-0.14.1 → cgse-0.15.0}/docs/projects/symetrie-hexapod.md +0 -0
  90. {cgse-0.14.1 → cgse-0.15.0}/docs/roadmap.md +0 -0
  91. {cgse-0.14.1 → cgse-0.15.0}/docs/stylesheets/custom.css +0 -0
  92. {cgse-0.14.1 → cgse-0.15.0}/docs/stylesheets/extra.css +0 -0
  93. {cgse-0.14.1 → cgse-0.15.0}/docs/tutorial.md +0 -0
  94. {cgse-0.14.1 → cgse-0.15.0}/docs/user_guide/index.md +0 -0
  95. {cgse-0.14.1 → cgse-0.15.0}/duckdb_metrics.db +0 -0
  96. {cgse-0.14.1 → cgse-0.15.0}/duckdb_metrics.db.wal +0 -0
  97. {cgse-0.14.1 → cgse-0.15.0}/identifier.sqlite +0 -0
  98. {cgse-0.14.1 → cgse-0.15.0}/justfile +0 -0
  99. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/README.md +0 -0
  100. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/justfile +0 -0
  101. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/noxfile.py +0 -0
  102. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/service_registry.db +0 -0
  103. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  104. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  105. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  106. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/bits.py +0 -0
  107. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/calibration.py +0 -0
  108. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/config.py +0 -0
  109. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/counter.py +0 -0
  110. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/decorators.py +0 -0
  111. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/device.py +0 -0
  112. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/dicts.py +0 -0
  113. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/env.py +0 -0
  114. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/exceptions.py +0 -0
  115. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  116. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/hk.py +0 -0
  117. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/log.py +0 -0
  118. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/metrics.py +0 -0
  119. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/observer.py +0 -0
  120. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/obsid.py +0 -0
  121. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/persistence.py +0 -0
  122. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/plugin.py +0 -0
  123. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
  124. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  125. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
  126. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/process.py +0 -0
  127. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/py.typed +0 -0
  128. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  129. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/ratelimit.py +0 -0
  130. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/reload.py +0 -0
  131. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/resource.py +0 -0
  132. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/response.py +0 -0
  133. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/scpi.py +0 -0
  134. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/settings.py +0 -0
  135. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/settings.yaml +0 -0
  136. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/setup.py +0 -0
  137. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/signal.py +0 -0
  138. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/socketdevice.py +0 -0
  139. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/state.py +0 -0
  140. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/system.py +0 -0
  141. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/task.py +0 -0
  142. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/version.py +0 -0
  143. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  144. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/conftest.py +0 -0
  145. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/COPYING +0 -0
  146. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  147. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  148. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  149. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  150. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  151. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  152. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  153. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  154. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  155. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  156. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  157. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  158. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  159. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  160. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  161. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  162. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  163. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  164. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  165. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  166. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  167. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  168. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  169. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  170. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  171. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  172. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  173. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  174. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  175. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  176. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  177. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  178. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  179. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  180. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  181. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  182. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  183. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  184. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  185. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  186. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  187. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  188. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  189. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_bits.py +0 -0
  190. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_config.py +0 -0
  191. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_decorators.py +0 -0
  192. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_device.py +0 -0
  193. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_env.py +0 -0
  194. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_fixtures.py +0 -0
  195. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_hk.py +0 -0
  196. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  197. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_log.py +0 -0
  198. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_metrics.py +0 -0
  199. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_plugin.py +0 -0
  200. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_process.py +0 -0
  201. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_ratelimit.py +0 -0
  202. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_resource.py +0 -0
  203. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_response.py +0 -0
  204. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_settings.py +0 -0
  205. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_setup.py +0 -0
  206. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_signal.py +0 -0
  207. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_state.py +0 -0
  208. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_system.py +0 -0
  209. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_task.py +0 -0
  210. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  211. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/README.md +0 -0
  212. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  213. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  214. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  215. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  216. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  217. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  218. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  219. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  220. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  221. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  222. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  223. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  224. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  225. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  226. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  227. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_point.py +0 -0
  228. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  229. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  230. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  231. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/.envrc.disabled +0 -0
  232. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/README.md +0 -0
  233. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/service_registry.db +0 -0
  234. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  235. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  236. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  237. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  238. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  239. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/services.py +0 -0
  240. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  241. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  242. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/async_control.py +0 -0
  243. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
  244. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/command.py +0 -0
  245. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  246. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  247. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  248. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  249. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/control.py +0 -0
  250. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/dummy.py +0 -0
  251. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  252. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  253. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  254. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  255. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  256. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  257. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  258. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/listener.py +0 -0
  259. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  260. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
  261. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
  262. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/mixin.py +0 -0
  263. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/monitoring.py +0 -0
  264. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  265. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  266. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  267. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  268. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
  269. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  270. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  271. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  272. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  273. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  274. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/protocol.py +0 -0
  275. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/proxy.py +0 -0
  276. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  277. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/registry/service.py +0 -0
  278. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/services.py +0 -0
  279. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/services.yaml +0 -0
  280. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  281. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  282. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  283. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  284. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  285. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/conftest.py +0 -0
  286. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  287. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  288. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  289. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/fixtures/services.py +0 -0
  290. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  291. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  292. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  293. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  294. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  295. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/services.py +0 -0
  296. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  297. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_async_control.py +0 -0
  298. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  299. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  300. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_command.py +0 -0
  301. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  302. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_control.py +0 -0
  303. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_dummy.py +0 -0
  304. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_event_notification.py +0 -0
  305. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_extensions.py +0 -0
  306. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_listener.py +0 -0
  307. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_logger.py +0 -0
  308. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_mixin.py +0 -0
  309. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  310. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_protocol.py +0 -0
  311. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  312. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_registry_service.py +0 -0
  313. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_server_running.py +0 -0
  314. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  315. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_settings_core.py +0 -0
  316. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  317. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/README.md +0 -0
  318. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  319. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  320. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  321. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  322. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  323. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  324. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  325. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  326. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  327. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  328. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  329. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  330. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  331. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  332. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  333. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  334. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  335. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  336. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  337. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  338. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  339. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  340. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  341. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  342. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  343. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  344. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  345. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  346. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  347. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  348. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  349. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  350. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  351. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  352. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  353. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  354. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  355. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  356. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  357. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  358. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  359. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  360. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  361. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  362. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  363. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  364. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  365. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  366. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  367. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  368. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  369. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  370. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  371. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  372. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  373. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  374. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  375. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  376. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  377. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  378. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  379. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  380. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  381. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  382. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  383. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  384. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  385. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  386. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  387. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  388. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  389. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  390. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  391. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  392. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  393. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  394. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  395. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  396. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  397. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  398. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  399. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  400. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  401. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  402. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  403. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  404. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  405. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  406. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  407. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  408. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  409. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  410. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  411. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  412. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  413. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  414. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  415. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  416. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  417. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  418. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  419. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  420. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  421. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  422. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  423. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  424. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  425. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  426. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  427. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  428. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  429. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  430. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  431. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  432. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  433. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  434. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  435. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  436. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  437. {cgse-0.14.1 → cgse-0.15.0}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  438. {cgse-0.14.1 → cgse-0.15.0}/mkdocs.yml +0 -0
  439. {cgse-0.14.1 → cgse-0.15.0}/noxfile.py +0 -0
  440. {cgse-0.14.1 → cgse-0.15.0}/overrides/.icons/custom/dbend-dark.svg +0 -0
  441. {cgse-0.14.1 → cgse-0.15.0}/overrides/.icons/custom/dbend-light.svg +0 -0
  442. {cgse-0.14.1 → cgse-0.15.0}/overrides/.icons/custom/gear.svg +0 -0
  443. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/README.md +0 -0
  444. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  445. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  446. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  447. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  448. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  449. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/README.md +0 -0
  450. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/justfile +0 -0
  451. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  452. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  453. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  454. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
  455. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  456. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
  457. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  458. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  459. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  460. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  461. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  462. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
  463. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  464. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
  465. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  466. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
  467. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  468. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  469. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  470. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  471. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  472. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  473. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  474. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  475. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  476. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  477. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  478. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  479. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  480. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  481. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/README.md +0 -0
  482. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  483. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  484. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  485. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  486. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  487. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  488. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  489. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  490. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  491. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  492. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  493. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  494. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  495. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  496. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  497. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  498. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  499. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
  500. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  501. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  502. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  503. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  504. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  505. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  506. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  507. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  508. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  509. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  510. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  511. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  512. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  513. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
  514. {cgse-0.14.1 → cgse-0.15.0}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  515. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-fits/README.md +0 -0
  516. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  517. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-hdf5/README.md +0 -0
  518. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  519. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-spw/README.md +0 -0
  520. {cgse-0.14.1 → cgse-0.15.0}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  521. {cgse-0.14.1 → cgse-0.15.0}/ruff.toml +0 -0
  522. {cgse-0.14.1 → cgse-0.15.0}/scratch/advanced-process-monitoring.py +0 -0
  523. {cgse-0.14.1 → cgse-0.15.0}/scratch/live-process-monitoring.py +0 -0
  524. {cgse-0.14.1 → cgse-0.15.0}/scratch/match-case.py +0 -0
  525. {cgse-0.14.1 → cgse-0.15.0}/scratch/processes.json +0 -0
  526. {cgse-0.14.1 → cgse-0.15.0}/scratch/simple-process-monitoring.py +0 -0
  527. {cgse-0.14.1 → cgse-0.15.0}/temperature_readings.log +0 -0
  528. {cgse-0.14.1 → cgse-0.15.0}/test_service_registry.db +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.14.1
3
+ Version: 0.15.0
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.14.1"
3
+ version = "0.15.0"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.14.1"
3
+ version = "0.15.0"
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.14.1"
3
+ version = "0.15.0"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -67,7 +67,7 @@ def get_endpoint_from_registry(port: str = "commander"):
67
67
  from egse.registry.client import RegistryClient
68
68
 
69
69
  try:
70
- with RegistryClient(request_timeout=500) as reg:
70
+ with RegistryClient() as reg:
71
71
  if port == "commander":
72
72
  endpoint = reg.get_endpoint(SERVICE_TYPE)
73
73
  elif port == "receiver":
@@ -317,7 +317,7 @@ def handle_command(command) -> dict:
317
317
 
318
318
  elif command.lower() == "status":
319
319
  with RegistryClient() as client:
320
- service = client.discover_service("LOGGER")
320
+ service = client.discover_service(SERVICE_TYPE)
321
321
  if service:
322
322
  response.update(
323
323
  dict(
@@ -19,12 +19,13 @@ from egse.notifyhub import DEFAULT_REQUESTS_PORT
19
19
  from egse.notifyhub import STATS_INTERVAL
20
20
  from egse.notifyhub.client import AsyncNotificationHubClient
21
21
  from egse.registry import MessageType
22
- from egse.registry.client import AsyncRegistryClient
22
+ from egse.registry.client import AsyncRegistryClient, REQUEST_TIMEOUT
23
23
  from egse.system import TyperAsyncCommand
24
24
  from egse.system import get_host_ip
25
25
  from .event import NotificationEvent
26
26
 
27
- RECV_REQUEST_TIMEOUT = 1.0
27
+ REQUEST_POLL_TIMEOUT = 1.0
28
+ """time to wait for while listening for requests [seconds]."""
28
29
 
29
30
  app = typer.Typer(name="notify_hub")
30
31
 
@@ -45,7 +46,7 @@ class AsyncNotificationHub:
45
46
  self.requests_socket: zmq.asyncio.Socket = self.context.socket(zmq.ROUTER)
46
47
 
47
48
  # Register notification hub to the service registry
48
- self.registry_client = AsyncRegistryClient(request_timeout=200) # FIXME: ms -> s and CONSTANT
49
+ self.registry_client = AsyncRegistryClient(timeout=REQUEST_TIMEOUT)
49
50
  self.service_id = None
50
51
  self.service_name = "Notification Hub"
51
52
  self.service_type = "notification-hub"
@@ -206,14 +207,14 @@ class AsyncNotificationHub:
206
207
  self.running = False
207
208
 
208
209
  async def _handle_requests(self):
209
- """Simple health check endpoint simulation"""
210
+ """Handle basic requests like e.g. health check."""
210
211
  self.logger.info("Started request handler task")
211
212
 
212
213
  while self.running:
213
214
  try:
214
215
  try:
215
216
  message_parts = await asyncio.wait_for(
216
- self.requests_socket.recv_multipart(), timeout=RECV_REQUEST_TIMEOUT
217
+ self.requests_socket.recv_multipart(), timeout=REQUEST_POLL_TIMEOUT
217
218
  )
218
219
  except asyncio.TimeoutError:
219
220
  # self.logger.debug("waiting for command request...")
@@ -13,8 +13,8 @@ class MessageType(Enum):
13
13
  """Message types using the envelope frame in the ROUTER-DEALER protocol."""
14
14
 
15
15
  REQUEST_WITH_REPLY = b"REQ" # Client expects a reply
16
- REQUEST_NO_REPLY = b"NO-REQ" # No reply expected by the client
17
- RESPONSE = b"REP" # Response to a request
16
+ REQUEST_NO_REPLY = b"REQ_NO_REPLY" # No reply expected by the client
17
+ RESPONSE = b"RESPONSE" # Response to a request
18
18
  NOTIFICATION = b"NOTIF" # Server-initiated notification
19
19
  HEARTBEAT = b"HB" # Heartbeat/health check
20
20
 
@@ -34,7 +34,7 @@ def is_service_registry_active(timeout: float = 0.5):
34
34
 
35
35
  from egse.registry.client import RegistryClient # prevent circular import
36
36
 
37
- with RegistryClient(request_timeout=int(timeout * 1000)) as client:
37
+ with RegistryClient(timeout=timeout) as client:
38
38
  if not client.health_check():
39
39
  return False
40
40
  else:
@@ -22,8 +22,22 @@ from egse.registry import DEFAULT_RS_REQ_PORT
22
22
  from egse.registry import MessageType
23
23
  from egse.system import do_every
24
24
 
25
- REQUEST_TIMEOUT = 5000 # milliseconds
26
-
25
+ REQUEST_TIMEOUT = 0.5
26
+ """time to wait for a request-reply [seconds]. For responsive message handling."""
27
+ EVENT_POLL_TIMEOUT = 0.5
28
+ """time to wait for while listening for events [seconds]."""
29
+ TASK_COMPLETION_TIMEOUT = 5.0
30
+ """time to wait for Tasks to complete [seconds]."""
31
+ HEALTH_CHECK_TIMEOUT = 2.0
32
+ """Health checks shouldn't take too long. Recommended: 1-5s."""
33
+ HEART_BEAT_TIMEOUT = 1.0
34
+ """Heart beat should fail fast to detect network issues. Recommended: 0.5-2s."""
35
+ HEART_BEAT_RECONNECT = 1.0
36
+ """Time to wait between a disconnect an a connect to the heartbeat socket."""
37
+ THREAD_JOIN_TIMEOUT = 10.0
38
+ """Joining threads should be longer, but the key is balancing graceful cleanup with reasonable shutdown times."""
39
+ PROCESS_SHUTDOWN_TIMEOUT = 10.0
40
+ """Waiting for a process shutdown confirmation message."""
27
41
 
28
42
  class RegistryClient:
29
43
  """
@@ -35,7 +49,7 @@ class RegistryClient:
35
49
  registry_req_endpoint: str = None,
36
50
  registry_sub_endpoint: str = None,
37
51
  registry_hb_endpoint: str = None,
38
- request_timeout: int = REQUEST_TIMEOUT,
52
+ timeout: float = REQUEST_TIMEOUT,
39
53
  client_id: str = "registry-client",
40
54
  ):
41
55
  """
@@ -45,14 +59,15 @@ class RegistryClient:
45
59
  registry_req_endpoint: ZeroMQ endpoint for REQ-REP socket, defaults to DEFAULT_RS_REQ_PORT on localhost.
46
60
  registry_sub_endpoint: ZeroMQ endpoint for SUB socket, defaults to DEFAULT_RS_PUB_PORT on localhost.
47
61
  registry_hb_endpoint: ZeroMQ endpoint for Heartbeat socket, defaults to DEFAULT_RS_HB_PORT on localhost.
48
- request_timeout: Timeout for requests in milliseconds, defaults to 5000.
62
+ timeout: Timeout for requests in seconds, defaults to 0.5s.
49
63
  client_id: client identification, default='registry-client'
50
64
  """
51
65
  self.registry_req_endpoint = registry_req_endpoint or f"tcp://localhost:{DEFAULT_RS_REQ_PORT}"
52
66
  self.registry_sub_endpoint = registry_sub_endpoint or f"tcp://localhost:{DEFAULT_RS_PUB_PORT}"
53
67
  self.registry_hb_endpoint = registry_hb_endpoint or f"tcp://localhost:{DEFAULT_RS_HB_PORT}"
54
68
 
55
- self.request_timeout = request_timeout
69
+ self.timeout = timeout
70
+ self.timeout_ms = int(timeout * 1000)
56
71
  self.logger = logger
57
72
 
58
73
  # Service state
@@ -122,17 +137,20 @@ class RegistryClient:
122
137
  self.hb_socket.close()
123
138
  self.hb_socket = None
124
139
 
125
- def _send_request(self, msg_type: MessageType, request: dict[str, Any]) -> dict[str, Any]:
140
+ def _send_request(self, msg_type: MessageType, request: dict[str, Any], timeout: float = None) -> dict[str, Any]:
126
141
  """
127
142
  Send a request to the registry and get the response.
128
143
 
129
144
  Args:
130
145
  msg_type: the type of message and reply
131
146
  request: The request to send
147
+ timeout: The number of seconds to wait, if None, instance variable is used.
132
148
 
133
149
  Returns:
134
150
  The response from the registry.
135
151
  """
152
+ timeout_ms = int(timeout * 1000) if timeout else self.timeout_ms
153
+
136
154
  try:
137
155
  self.logger.debug(f"Sending request: {request}")
138
156
  self.req_socket.send_multipart([msg_type.value, json.dumps(request).encode()])
@@ -140,7 +158,7 @@ class RegistryClient:
140
158
  if msg_type == MessageType.REQUEST_NO_REPLY:
141
159
  return {"success": True}
142
160
 
143
- if self.poller.poll(timeout=self.request_timeout):
161
+ if self.poller.poll(timeout=timeout_ms):
144
162
  message_parts = self.req_socket.recv_multipart()
145
163
 
146
164
  if len(message_parts) >= 2:
@@ -163,7 +181,7 @@ class RegistryClient:
163
181
  "data": message_parts,
164
182
  }
165
183
  else:
166
- self.logger.error(f"Request timed out after {self.request_timeout / 1000:.2f}s")
184
+ self.logger.error(f"Request timed out after {self.timeout:.2f}s")
167
185
  return {"success": False, "error": "Request timed out"}
168
186
  except zmq.ZMQError as exc:
169
187
  self.logger.error(f"ZMQ error: {exc}", exc_info=True)
@@ -187,7 +205,7 @@ class RegistryClient:
187
205
  self.logger.debug(f"Sending heartbeat request: {request}")
188
206
  self.hb_socket.send_string(json.dumps(request))
189
207
 
190
- ready_sockets, _, _ = zmq.select([self.hb_socket], [], [], timeout=self.request_timeout)
208
+ ready_sockets, _, _ = zmq.select([self.hb_socket], [], [], timeout=HEART_BEAT_TIMEOUT)
191
209
 
192
210
  if ready_sockets:
193
211
  response_json = self.hb_socket.recv_string()
@@ -195,9 +213,9 @@ class RegistryClient:
195
213
  self.logger.debug(f"Received response: {response}")
196
214
  return response
197
215
  else:
198
- self.logger.error(f"Request timed out after {self.request_timeout / 1000:.2f}s")
216
+ self.logger.error(f"Request timed out after {HEART_BEAT_TIMEOUT:.2f}s")
199
217
  self._disconnect_hb_socket()
200
- time.sleep(1.0)
218
+ time.sleep(HEART_BEAT_RECONNECT)
201
219
  self._connect_hb_socket()
202
220
  return {"success": False, "error": "Request timed out"}
203
221
 
@@ -392,7 +410,7 @@ class RegistryClient:
392
410
  """
393
411
  request = {"action": "health"}
394
412
 
395
- response = self._send_request(MessageType.REQUEST_WITH_REPLY, request)
413
+ response = self._send_request(MessageType.REQUEST_WITH_REPLY, request, timeout=HEALTH_CHECK_TIMEOUT)
396
414
  return response.get("success", False)
397
415
 
398
416
  def terminate_registry_server(self) -> bool:
@@ -400,7 +418,7 @@ class RegistryClient:
400
418
  Send a terminate request to the service registry server. Returns True when successful.
401
419
  """
402
420
  request = {"action": "terminate"}
403
- response = self._send_request(MessageType.REQUEST_WITH_REPLY, request)
421
+ response = self._send_request(MessageType.REQUEST_WITH_REPLY, request, timeout=PROCESS_SHUTDOWN_TIMEOUT)
404
422
  return response.get("success", False)
405
423
 
406
424
  def server_status(self) -> dict[str, Any]:
@@ -459,7 +477,7 @@ class RegistryClient:
459
477
  def stop_heartbeat(self) -> None:
460
478
  self._hb_stop_event.set()
461
479
  if self._hb_thread.is_alive():
462
- self._hb_thread.join(timeout=1)
480
+ self._hb_thread.join(timeout=THREAD_JOIN_TIMEOUT)
463
481
 
464
482
  def close(self) -> None:
465
483
  """Clean up resources."""
@@ -488,7 +506,7 @@ class AsyncRegistryClient:
488
506
  registry_req_endpoint: str = None,
489
507
  registry_sub_endpoint: str = None,
490
508
  registry_hb_endpoint: str = None,
491
- request_timeout: int = REQUEST_TIMEOUT,
509
+ timeout: float = REQUEST_TIMEOUT,
492
510
  client_id: str = "registry-client",
493
511
  ):
494
512
  """
@@ -498,14 +516,15 @@ class AsyncRegistryClient:
498
516
  registry_req_endpoint: ZeroMQ endpoint for REQ-REP socket, defaults to DEFAULT_RS_REQ_PORT on localhost.
499
517
  registry_sub_endpoint: ZeroMQ endpoint for SUB socket, defaults to DEFAULT_RS_PUB_PORT on localhost.
500
518
  registry_hb_endpoint: ZeroMQ endpoint for heartbeat socket, defaults to DEFAULT_RS_HB_PORT on localhost.
501
- request_timeout: Timeout for requests in milliseconds, defaults to 5000.
519
+ timeout: Timeout for requests in seconds, defaults to 5000.
502
520
  client_id: client identification, default='registry-client'
503
521
  """
504
522
  self.registry_req_endpoint = registry_req_endpoint or f"tcp://localhost:{DEFAULT_RS_REQ_PORT}"
505
523
  self.registry_sub_endpoint = registry_sub_endpoint or f"tcp://localhost:{DEFAULT_RS_PUB_PORT}"
506
524
  self.registry_hb_endpoint = registry_hb_endpoint or f"tcp://localhost:{DEFAULT_RS_HB_PORT}"
507
525
 
508
- self.request_timeout = request_timeout
526
+ self.timeout = timeout
527
+ self.timeout_ms = int(timeout * 1000)
509
528
  self.logger = logging.getLogger("egse.registry.client")
510
529
 
511
530
  # Service state
@@ -585,7 +604,7 @@ class AsyncRegistryClient:
585
604
  return self._service_cache_lock
586
605
 
587
606
  async def _send_request(
588
- self, msg_type: MessageType, request: dict[str, Any], timeout: int = None
607
+ self, msg_type: MessageType, request: dict[str, Any], timeout: float = None
589
608
  ) -> dict[str, Any]:
590
609
  """
591
610
  Send a request to the registry and get the response.
@@ -593,14 +612,14 @@ class AsyncRegistryClient:
593
612
  Args:
594
613
  msg_type: the type of message and reply
595
614
  request: The request to send to the service registry server.
596
- timeout: The number of milliseconds to wait
615
+ timeout: The number of seconds to wait, if None, instance variable is used.
597
616
 
598
617
  Returns:
599
618
  The response from the registry as a dictionary.
600
619
  """
601
620
  self.logger.debug(f"Sending request: {request}")
602
621
 
603
- timeout = (timeout or self.request_timeout) / 1000
622
+ timeout = timeout or self.timeout
604
623
  try:
605
624
  await self.req_socket.send_multipart([msg_type.value, json.dumps(request).encode()])
606
625
 
@@ -636,32 +655,28 @@ class AsyncRegistryClient:
636
655
  self.logger.error(f"Error sending request: {exc}", exc_info=True)
637
656
  return {"success": False, "error": str(exc)}
638
657
 
639
- async def _send_heartbeat(self, request: dict[str, Any], timeout: int = None) -> dict[str, Any]:
658
+ async def _send_heartbeat(self, request: dict[str, Any]) -> dict[str, Any]:
640
659
  """
641
660
  Send a heartbreak request to the registry and get the response.
642
661
 
643
662
  Args:
644
663
  request: The request to send to the service registry server.
645
- timeout: The number of milliseconds to wait
646
664
 
647
665
  Returns:
648
666
  The response from the registry as a dictionary.
649
667
  """
650
668
 
651
- timeout = (timeout or self.request_timeout) / 1000
652
669
  try:
653
- # Send the request
654
670
  self.logger.debug(f"Sending heartbeat request: {request}")
655
671
  await self.hb_socket.send_string(json.dumps(request))
656
672
 
657
- # Wait for the response with timeout
658
673
  try:
659
- response_json = await asyncio.wait_for(self.hb_socket.recv_string(), timeout=timeout)
674
+ response_json = await asyncio.wait_for(self.hb_socket.recv_string(), timeout=HEART_BEAT_TIMEOUT)
660
675
  response = json.loads(response_json)
661
676
  self.logger.debug(f"Received heartbeat response: {response = }")
662
677
  return response
663
678
  except asyncio.TimeoutError:
664
- self.logger.error(f"Heartbeat request timed out after {timeout:.2f}s")
679
+ self.logger.error(f"Heartbeat request timed out after {HEART_BEAT_TIMEOUT:.2f}s")
665
680
  # Reset the socket to avoid invalid state
666
681
  self.hb_socket.close()
667
682
  self.hb_socket = self.context.socket(zmq.REQ)
@@ -698,7 +713,7 @@ class AsyncRegistryClient:
698
713
  The service ID if successful, None otherwise
699
714
  """
700
715
  # Prepare service info
701
- service_info = {"name": name, "host": host, "port": port}
716
+ service_info: dict[str, Any] = {"name": name, "host": host, "port": port}
702
717
 
703
718
  # Add optional fields
704
719
  if service_type:
@@ -854,7 +869,7 @@ class AsyncRegistryClient:
854
869
  # Wait for tasks to complete (with timeout)
855
870
  if self._tasks:
856
871
  try:
857
- await asyncio.wait(self._tasks, timeout=2.0)
872
+ await asyncio.wait(self._tasks, timeout=TASK_COMPLETION_TIMEOUT)
858
873
  except asyncio.CancelledError:
859
874
  pass
860
875
 
@@ -896,7 +911,9 @@ class AsyncRegistryClient:
896
911
  try:
897
912
  # Use a timeout to allow for clean shutdown
898
913
  try:
899
- message = await asyncio.wait_for(self.sub_socket.recv_multipart(), timeout=1.0)
914
+ message = await asyncio.wait_for(
915
+ self.sub_socket.recv_multipart(), timeout=EVENT_POLL_TIMEOUT
916
+ )
900
917
  except asyncio.TimeoutError:
901
918
  continue
902
919
 
@@ -942,7 +959,7 @@ class AsyncRegistryClient:
942
959
  Update the service cache based on registry events.
943
960
 
944
961
  Args:
945
- event_type: Type of event
962
+ event_type: Type of the event.
946
963
  event: Event data
947
964
  """
948
965
  async with self._get_service_cache_lock():
@@ -1097,7 +1114,7 @@ class AsyncRegistryClient:
1097
1114
  """
1098
1115
  request = {"action": "health"}
1099
1116
 
1100
- response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request)
1117
+ response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request, timeout=HEALTH_CHECK_TIMEOUT)
1101
1118
  return response.get("success", False)
1102
1119
 
1103
1120
  async def terminate_registry_server(self) -> bool:
@@ -1105,7 +1122,7 @@ class AsyncRegistryClient:
1105
1122
  Send a terminate request to the service registry server. Returns True when successful.
1106
1123
  """
1107
1124
  request = {"action": "terminate"}
1108
- response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request)
1125
+ response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request, timeout=PROCESS_SHUTDOWN_TIMEOUT)
1109
1126
  return response.get("success", False)
1110
1127
 
1111
1128
  async def server_status(self) -> dict[str, Any]:
@@ -1115,7 +1132,7 @@ class AsyncRegistryClient:
1115
1132
  request = {
1116
1133
  "action": "info",
1117
1134
  }
1118
- response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request, timeout=500)
1135
+ response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request)
1119
1136
  return response
1120
1137
 
1121
1138
  async def close(self) -> None:
@@ -554,7 +554,6 @@ async def status(
554
554
  registry_req_endpoint=f"tcp://{host}:{req_port}",
555
555
  registry_sub_endpoint=f"tcp://{host}:{pub_port}",
556
556
  registry_hb_endpoint=f"tcp://{host}:{hb_port}",
557
- request_timeout=5000, # 5 second timeout
558
557
  ) as client:
559
558
  response = await client.server_status()
560
559
 
@@ -585,7 +584,6 @@ async def stop(
585
584
  registry_req_endpoint=f"tcp://{host}:{req_port}",
586
585
  registry_sub_endpoint=f"tcp://{host}:{pub_port}",
587
586
  registry_hb_endpoint=f"tcp://{host}:{hb_port}",
588
- request_timeout=5000, # 5 second timeout
589
587
  ) as client:
590
588
  response = await client.terminate_registry_server()
591
589
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-gui"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "GUI components for CGSE"
5
5
  authors = [
6
6
  {name = "Rik Huygen", email = "rik.huygen@kuleuven.be"},
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-tools"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "Tools for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "keithley-tempcontrol"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "Keithley Temperature Control for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lakeshore-tempcontrol"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "Lakeshore Temperature Control for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "symetrie-hexapod"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "Symetrie Hexapod implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-fits"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "FITS Persistence implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-hdf5"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "HDF5 Persistence sub-class for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-spw"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "SpaceWire implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse"
3
- version = "0.14.1"
3
+ version = "0.15.0"
4
4
  description = "Generic Common-EGSE: Commanding and monitoring lab equipment"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
index f41b610..ac88403 100644
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes