cgse 0.16.5__tar.gz → 0.16.7__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 (538) hide show
  1. {cgse-0.16.5 → cgse-0.16.7}/PKG-INFO +1 -1
  2. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/pyproject.toml +1 -1
  3. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/signal.py +1 -1
  4. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_influxdb_plugin.py +3 -1
  5. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_metrics.py +5 -1
  6. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/pyproject.toml +1 -1
  7. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/pyproject.toml +1 -1
  8. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/__init__.py +4 -1
  9. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/confman_cs.py +12 -11
  10. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/control.py +18 -21
  11. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/dummy.py +3 -8
  12. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/log_cs.py +1 -1
  13. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/services.py +2 -2
  14. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/__init__.py +12 -2
  15. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_cs.py +13 -16
  16. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/proxy.py +14 -11
  17. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/client.py +31 -3
  18. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/server.py +14 -9
  19. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/services.py +2 -2
  20. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/__init__.py +13 -3
  21. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/storage_cs.py +13 -15
  22. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_registry_client_server.py +2 -2
  23. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_service_registry_server.py +1 -1
  24. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/pyproject.toml +1 -1
  25. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/pyproject.toml +1 -1
  26. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  27. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +2 -2
  28. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  29. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  30. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/pyproject.toml +1 -1
  31. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  32. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/pyproject.toml +1 -1
  33. {cgse-0.16.5 → cgse-0.16.7}/pyproject.toml +1 -1
  34. {cgse-0.16.5 → cgse-0.16.7}/service_registry.db +0 -0
  35. {cgse-0.16.5 → cgse-0.16.7}/.github/workflows/ruff-format-check.yaml +0 -0
  36. {cgse-0.16.5 → cgse-0.16.7}/.gitignore +0 -0
  37. {cgse-0.16.5 → cgse-0.16.7}/README.md +0 -0
  38. {cgse-0.16.5 → cgse-0.16.7}/buffer_vat.log +0 -0
  39. {cgse-0.16.5 → cgse-0.16.7}/buffer_vat.png +0 -0
  40. {cgse-0.16.5 → cgse-0.16.7}/bump.py +0 -0
  41. {cgse-0.16.5 → cgse-0.16.7}/conftest.py +0 -0
  42. {cgse-0.16.5 → cgse-0.16.7}/docs/api/bits.md +0 -0
  43. {cgse-0.16.5 → cgse-0.16.7}/docs/api/calibration.md +0 -0
  44. {cgse-0.16.5 → cgse-0.16.7}/docs/api/command.md +0 -0
  45. {cgse-0.16.5 → cgse-0.16.7}/docs/api/config.md +0 -0
  46. {cgse-0.16.5 → cgse-0.16.7}/docs/api/control.md +0 -0
  47. {cgse-0.16.5 → cgse-0.16.7}/docs/api/counter.md +0 -0
  48. {cgse-0.16.5 → cgse-0.16.7}/docs/api/decorators.md +0 -0
  49. {cgse-0.16.5 → cgse-0.16.7}/docs/api/device.md +0 -0
  50. {cgse-0.16.5 → cgse-0.16.7}/docs/api/dicts.md +0 -0
  51. {cgse-0.16.5 → cgse-0.16.7}/docs/api/dummy.md +0 -0
  52. {cgse-0.16.5 → cgse-0.16.7}/docs/api/env.md +0 -0
  53. {cgse-0.16.5 → cgse-0.16.7}/docs/api/exceptions.md +0 -0
  54. {cgse-0.16.5 → cgse-0.16.7}/docs/api/heartbeat.md +0 -0
  55. {cgse-0.16.5 → cgse-0.16.7}/docs/api/hk.md +0 -0
  56. {cgse-0.16.5 → cgse-0.16.7}/docs/api/index.md +0 -0
  57. {cgse-0.16.5 → cgse-0.16.7}/docs/api/listener.md +0 -0
  58. {cgse-0.16.5 → cgse-0.16.7}/docs/api/metrics.md +0 -0
  59. {cgse-0.16.5 → cgse-0.16.7}/docs/api/mixin.md +0 -0
  60. {cgse-0.16.5 → cgse-0.16.7}/docs/api/monitoring.md +0 -0
  61. {cgse-0.16.5 → cgse-0.16.7}/docs/api/observer.md +0 -0
  62. {cgse-0.16.5 → cgse-0.16.7}/docs/api/obsid.md +0 -0
  63. {cgse-0.16.5 → cgse-0.16.7}/docs/api/persistence.md +0 -0
  64. {cgse-0.16.5 → cgse-0.16.7}/docs/api/plugin.md +0 -0
  65. {cgse-0.16.5 → cgse-0.16.7}/docs/api/process.md +0 -0
  66. {cgse-0.16.5 → cgse-0.16.7}/docs/api/reload.md +0 -0
  67. {cgse-0.16.5 → cgse-0.16.7}/docs/api/settings.md +0 -0
  68. {cgse-0.16.5 → cgse-0.16.7}/docs/api/setup.md +0 -0
  69. {cgse-0.16.5 → cgse-0.16.7}/docs/api/system.md +0 -0
  70. {cgse-0.16.5 → cgse-0.16.7}/docs/custom_theme/main.html +0 -0
  71. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/coding_style.md +0 -0
  72. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/docs.md +0 -0
  73. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/index.md +0 -0
  74. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/installation.md +0 -0
  75. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/monitoring.md +0 -0
  76. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/monorepo.md +0 -0
  77. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/nox.md +0 -0
  78. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/plugins.md +0 -0
  79. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/project-configuration.md +0 -0
  80. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/unit_testing.md +0 -0
  81. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/uv.md +0 -0
  82. {cgse-0.16.5 → cgse-0.16.7}/docs/dev_guide/versioning.md +0 -0
  83. {cgse-0.16.5 → cgse-0.16.7}/docs/getting_started.md +0 -0
  84. {cgse-0.16.5 → cgse-0.16.7}/docs/help.md +0 -0
  85. {cgse-0.16.5 → cgse-0.16.7}/docs/images/cli-cgse.png +0 -0
  86. {cgse-0.16.5 → cgse-0.16.7}/docs/images/github-fork-clone-dark.png +0 -0
  87. {cgse-0.16.5 → cgse-0.16.7}/docs/images/github-fork-clone.png +0 -0
  88. {cgse-0.16.5 → cgse-0.16.7}/docs/images/grafana-queries.png +0 -0
  89. {cgse-0.16.5 → cgse-0.16.7}/docs/images/icons/cgse-logo-blue.svg +0 -0
  90. {cgse-0.16.5 → cgse-0.16.7}/docs/images/icons/cgse-logo.svg +0 -0
  91. {cgse-0.16.5 → cgse-0.16.7}/docs/index.md +0 -0
  92. {cgse-0.16.5 → cgse-0.16.7}/docs/initialize.md +0 -0
  93. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/images/load_methods.png +0 -0
  94. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/index.md +0 -0
  95. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/settings.md +0 -0
  96. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-common/setup.md +0 -0
  97. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-coordinates/index.md +0 -0
  98. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/index.md +0 -0
  99. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/notifyhub.md +0 -0
  100. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-core/registry.md +0 -0
  101. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/cgse-gui/index.md +0 -0
  102. {cgse-0.16.5 → cgse-0.16.7}/docs/libs/index.md +0 -0
  103. {cgse-0.16.5 → cgse-0.16.7}/docs/package_list.md +0 -0
  104. {cgse-0.16.5 → cgse-0.16.7}/docs/projects/cgse-tools.md +0 -0
  105. {cgse-0.16.5 → cgse-0.16.7}/docs/projects/index.md +0 -0
  106. {cgse-0.16.5 → cgse-0.16.7}/docs/projects/symetrie-hexapod.md +0 -0
  107. {cgse-0.16.5 → cgse-0.16.7}/docs/roadmap.md +0 -0
  108. {cgse-0.16.5 → cgse-0.16.7}/docs/stylesheets/custom.css +0 -0
  109. {cgse-0.16.5 → cgse-0.16.7}/docs/stylesheets/extra.css +0 -0
  110. {cgse-0.16.5 → cgse-0.16.7}/docs/tutorial.md +0 -0
  111. {cgse-0.16.5 → cgse-0.16.7}/docs/user_guide/cli.md +0 -0
  112. {cgse-0.16.5 → cgse-0.16.7}/docs/user_guide/index.md +0 -0
  113. {cgse-0.16.5 → cgse-0.16.7}/duckdb_metrics.db +0 -0
  114. {cgse-0.16.5 → cgse-0.16.7}/duckdb_metrics.db.wal +0 -0
  115. {cgse-0.16.5 → cgse-0.16.7}/identifier.sqlite +0 -0
  116. {cgse-0.16.5 → cgse-0.16.7}/justfile +0 -0
  117. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/README.md +0 -0
  118. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/justfile +0 -0
  119. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/noxfile.py +0 -0
  120. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/service_registry.db +0 -0
  121. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  122. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  123. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  124. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/bits.py +0 -0
  125. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/calibration.py +0 -0
  126. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/config.py +0 -0
  127. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/counter.py +0 -0
  128. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/decorators.py +0 -0
  129. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/device.py +0 -0
  130. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/dicts.py +0 -0
  131. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/env.py +0 -0
  132. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/exceptions.py +0 -0
  133. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  134. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/hk.py +0 -0
  135. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/log.py +0 -0
  136. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/metrics.py +0 -0
  137. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/observer.py +0 -0
  138. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/obsid.py +0 -0
  139. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/persistence.py +0 -0
  140. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugin.py +0 -0
  141. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
  142. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  143. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
  144. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/process.py +0 -0
  145. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/py.typed +0 -0
  146. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  147. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/ratelimit.py +0 -0
  148. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/reload.py +0 -0
  149. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/resource.py +0 -0
  150. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/response.py +0 -0
  151. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/scpi.py +0 -0
  152. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/settings.py +0 -0
  153. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/settings.yaml +0 -0
  154. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/setup.py +0 -0
  155. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/socketdevice.py +0 -0
  156. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/state.py +0 -0
  157. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/system.py +0 -0
  158. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/task.py +0 -0
  159. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/version.py +0 -0
  160. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  161. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/conftest.py +0 -0
  162. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/COPYING +0 -0
  163. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  164. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  165. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  166. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  167. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  168. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  169. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  170. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  171. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  172. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  173. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  174. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  175. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  176. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  177. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  178. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  179. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  180. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  181. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  182. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  183. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  184. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  185. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  186. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  187. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  188. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  189. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  190. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  191. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  192. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  193. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  194. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  195. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  196. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  197. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  198. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  199. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  200. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  201. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  202. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  203. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  204. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  205. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  206. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_bits.py +0 -0
  207. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_config.py +0 -0
  208. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_decorators.py +0 -0
  209. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_device.py +0 -0
  210. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_env.py +0 -0
  211. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_fixtures.py +0 -0
  212. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_hk.py +0 -0
  213. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_log.py +0 -0
  214. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_plugin.py +0 -0
  215. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_process.py +0 -0
  216. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_ratelimit.py +0 -0
  217. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_resource.py +0 -0
  218. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_response.py +0 -0
  219. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_settings.py +0 -0
  220. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_setup.py +0 -0
  221. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_signal.py +0 -0
  222. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_state.py +0 -0
  223. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_system.py +0 -0
  224. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_task.py +0 -0
  225. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  226. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/README.md +0 -0
  227. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  228. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  229. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  230. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  231. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  232. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  233. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  234. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  235. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  236. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  237. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  238. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  239. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  240. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  241. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  242. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_point.py +0 -0
  243. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  244. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  245. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  246. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/.envrc.disabled +0 -0
  247. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/README.md +0 -0
  248. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/service_registry.db +0 -0
  249. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  250. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  251. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  252. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  253. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  254. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/services.py +0 -0
  255. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  256. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  257. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/async_control.py +0 -0
  258. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
  259. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/command.py +0 -0
  260. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  261. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  262. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/connect-todo.py +0 -0
  263. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/connect.py +0 -0
  264. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  265. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  266. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  267. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  268. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  269. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  270. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  271. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/listener.py +0 -0
  272. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  273. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  274. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
  275. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
  276. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/mixin.py +0 -0
  277. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/monitoring.py +0 -0
  278. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  279. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  280. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  281. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
  282. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
  283. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  284. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  285. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  286. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/protocol.py +0 -0
  287. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  288. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  289. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/registry/service.py +0 -0
  290. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/services.yaml +0 -0
  291. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  292. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  293. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  294. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/conftest.py +0 -0
  295. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  296. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  297. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  298. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/fixtures/services.py +0 -0
  299. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  300. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  301. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  302. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/services.py +0 -0
  303. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  304. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_async_control.py +0 -0
  305. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  306. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  307. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_command.py +0 -0
  308. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  309. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_connect.py +0 -0
  310. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_control.py +0 -0
  311. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_dummy.py +0 -0
  312. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_event_notification.py +0 -0
  313. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_extensions.py +0 -0
  314. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_listener.py +0 -0
  315. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_logger.py +0 -0
  316. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_mixin.py +0 -0
  317. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  318. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_protocol.py +0 -0
  319. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  320. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_registry_service.py +0 -0
  321. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_server_running.py +0 -0
  322. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  323. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_settings_core.py +0 -0
  324. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  325. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/README.md +0 -0
  326. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  327. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  328. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  329. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  330. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  331. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  332. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  333. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  334. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  335. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  336. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  337. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  338. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  339. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  340. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  341. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  342. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  343. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  344. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  345. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  346. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  347. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  348. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  349. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  350. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  351. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  352. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  353. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  354. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  355. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  356. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  357. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  358. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  359. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  360. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  361. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  362. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  363. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  364. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  365. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  366. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  367. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  368. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  369. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  370. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  371. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  372. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  373. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  374. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  375. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  376. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  377. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  378. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  379. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  380. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  381. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  382. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  383. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  384. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  385. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  386. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  387. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  388. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  389. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  390. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  391. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  392. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  393. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  394. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  395. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  396. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  397. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  398. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  399. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  400. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  401. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  402. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  403. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  404. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  405. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  406. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  407. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  408. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  409. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  410. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  411. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  412. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  413. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  414. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  415. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  416. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  417. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  418. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  419. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  420. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  421. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  422. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  423. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  424. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  425. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  426. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  427. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  428. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  429. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  430. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  431. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  432. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  433. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  434. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  435. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  436. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  437. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  438. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  439. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  440. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  441. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  442. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  443. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  444. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  445. {cgse-0.16.5 → cgse-0.16.7}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  446. {cgse-0.16.5 → cgse-0.16.7}/mkdocs.yml +0 -0
  447. {cgse-0.16.5 → cgse-0.16.7}/noxfile.py +0 -0
  448. {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/dbend-dark.svg +0 -0
  449. {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/dbend-light.svg +0 -0
  450. {cgse-0.16.5 → cgse-0.16.7}/overrides/.icons/custom/gear.svg +0 -0
  451. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/README.md +0 -0
  452. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  453. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  454. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  455. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  456. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  457. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/README.md +0 -0
  458. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/justfile +0 -0
  459. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  460. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  461. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  462. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  463. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
  464. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
  465. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  466. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  467. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  468. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  469. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  470. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
  471. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  472. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
  473. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  474. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
  475. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
  476. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  477. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
  478. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  479. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  480. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  481. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  482. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  483. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  484. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  485. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  486. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  487. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  488. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  489. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  490. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  491. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/README.md +0 -0
  492. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  493. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  494. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  495. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  496. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  497. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  498. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  499. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  500. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  501. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  502. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  503. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  504. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  505. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  506. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  507. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  508. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  509. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
  510. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  511. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  512. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  513. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  514. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  515. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  516. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  517. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  518. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  519. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  520. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  521. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  522. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  523. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
  524. {cgse-0.16.5 → cgse-0.16.7}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  525. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/README.md +0 -0
  526. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  527. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/README.md +0 -0
  528. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  529. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/README.md +0 -0
  530. {cgse-0.16.5 → cgse-0.16.7}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  531. {cgse-0.16.5 → cgse-0.16.7}/ruff.toml +0 -0
  532. {cgse-0.16.5 → cgse-0.16.7}/scratch/advanced-process-monitoring.py +0 -0
  533. {cgse-0.16.5 → cgse-0.16.7}/scratch/live-process-monitoring.py +0 -0
  534. {cgse-0.16.5 → cgse-0.16.7}/scratch/match-case.py +0 -0
  535. {cgse-0.16.5 → cgse-0.16.7}/scratch/processes.json +0 -0
  536. {cgse-0.16.5 → cgse-0.16.7}/scratch/simple-process-monitoring.py +0 -0
  537. {cgse-0.16.5 → cgse-0.16.7}/temperature_readings.log +0 -0
  538. {cgse-0.16.5 → cgse-0.16.7}/test_service_registry.db +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.16.5
3
+ Version: 0.16.7
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.5"
3
+ version = "0.16.7"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -158,7 +158,7 @@ class FileBasedSignaling:
158
158
  """Terminate the monitoring loop thread."""
159
159
  self.running = False
160
160
  if self.thread.is_alive():
161
- self.thread.join(timeout=1)
161
+ self.thread.join(timeout=1.0)
162
162
 
163
163
 
164
164
  def create_signal_command_file(signal_dir: Path, service_id: str, command: dict) -> None:
@@ -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 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
 
@@ -9,7 +9,11 @@ def test_get_metrics_repo():
9
9
  influxdb = get_metrics_repo("influxdb", {"host": "http://localhost:8181", "database": "ARIEL", "token": token})
10
10
  influxdb.connect()
11
11
 
12
- result = influxdb.query("SELECT * FROM cm ORDER BY TIME DESC LIMIT 20", mode="pandas")
12
+ # Don't use a too large time interval here, or you will get an error like:
13
+ # 'External error: Query would exceed file limit of 432 parquet files'
14
+ result = influxdb.query(
15
+ "SELECT * FROM cm WHERE time >= now() - INTERVAL '2 days' ORDER BY TIME DESC LIMIT 20", mode="pandas"
16
+ )
13
17
  print(result)
14
18
 
15
19
  # result = influxdb.query("SHOW TABLES;")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.16.5"
3
+ version = "0.16.7"
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.5"
3
+ version = "0.16.7"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -177,11 +177,13 @@ 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')
183
185
 
184
- PROXY_TIMEOUT = 10_000 # don't wait longer than 10s by default
186
+ PROXY_TIMEOUT = 10.0 # don't wait longer than 10s by default
185
187
 
186
188
 
187
189
  def _push_setup_to_repo(filename: str, commit_msg: str) -> Failure | Success:
@@ -982,6 +984,7 @@ class ConfigurationManagerProxy(Proxy, ConfigurationManagerInterface):
982
984
  from settings file]
983
985
  port: TCP port on which the control server is listening for commands
984
986
  [default is taken from settings file]
987
+ timeout: number of fractional seconds before a timeout is triggered
985
988
  """
986
989
 
987
990
  def __init__(
@@ -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.
@@ -35,15 +35,11 @@ and stopped with:
35
35
 
36
36
  from __future__ import annotations
37
37
 
38
- import contextlib
39
38
  import multiprocessing
40
39
  import random
41
40
  import select
42
41
  import socket
43
42
  import sys
44
- import threading
45
- import time
46
- from functools import partial
47
43
 
48
44
  import typer
49
45
  import zmq
@@ -62,7 +58,6 @@ from egse.proxy import Proxy
62
58
  from egse.system import SignalCatcher
63
59
  from egse.system import attrdict
64
60
  from egse.system import format_datetime
65
- from egse.system import type_name
66
61
  from egse.zmq_ser import bind_address
67
62
  from egse.zmq_ser import connect_address
68
63
 
@@ -96,7 +91,7 @@ ctrl_settings = attrdict(
96
91
  "SERVICE_PORT": 4444,
97
92
  "MONITORING_PORT": 4445,
98
93
  "PROTOCOL": "tcp",
99
- "TIMEOUT": 10_000, # milliseconds
94
+ "TIMEOUT": 10.0,
100
95
  "HK_DELAY": 1.0,
101
96
  }
102
97
  )
@@ -172,7 +167,7 @@ class DummyProxy(Proxy, DummyInterface):
172
167
  protocol: the transport protocol [default is taken from settings file]
173
168
  hostname: location of the control server (IP address) [default is taken from settings file]
174
169
  port: TCP port on which the control server is listening for commands [default is taken from settings file]
175
- timeout: a socket timeout in milliseconds
170
+ timeout: a socket timeout in seconds
176
171
  """
177
172
 
178
173
  def __init__(
@@ -180,7 +175,7 @@ class DummyProxy(Proxy, DummyInterface):
180
175
  protocol: str = ctrl_settings.PROTOCOL,
181
176
  hostname: str = ctrl_settings.HOSTNAME,
182
177
  port: int = ctrl_settings.COMMANDING_PORT,
183
- timeout: int = ctrl_settings.TIMEOUT,
178
+ timeout: float = ctrl_settings.TIMEOUT,
184
179
  ):
185
180
  super().__init__(connect_address(protocol, hostname, port), timeout=timeout)
186
181
 
@@ -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
 
@@ -111,7 +111,7 @@ class AsyncEventSubscriber:
111
111
 
112
112
  while self.running:
113
113
  try:
114
- if await self.subscriber.poll(timeout=1000):
114
+ if await self.subscriber.poll(timeout=1000): # timeout in milliseconds
115
115
  topic, message_bytes = await self.subscriber.recv_multipart()
116
116
 
117
117
  event_type = topic.decode()
@@ -269,7 +269,7 @@ class EventSubscriber:
269
269
  return self.subscriber
270
270
 
271
271
  def poll(self, timeout=1000):
272
- return self.subscriber.poll(timeout=timeout)
272
+ return self.subscriber.poll(timeout=timeout) # timeout in milliseconds
273
273
 
274
274
  def handle_event(self, return_event_data: bool = False) -> dict:
275
275
  topic, message_bytes = self.subscriber.recv_multipart()
@@ -22,12 +22,17 @@ LOGGER = logging.getLogger("egse.procman")
22
22
 
23
23
  settings = Settings.load("Process Manager Control Server")
24
24
  COMMAND_SETTINGS = Settings.load(location=HERE, filename="procman.yaml")
25
- PROXY_TIMEOUT = 10_000
26
25
 
26
+ PROXY_TIMEOUT = 10.0 # don't wait longer than 10s
27
+
28
+ PROCESS_NAME = settings.get("PROCESS_NAME", "pm_cs")
27
29
  SERVICE_TYPE = settings.get("SERVICE_TYPE", "pm_cs")
28
30
  PROTOCOL = settings.get("PROTOCOL", "tcp")
29
31
  HOSTNAME = settings.get("HOSTNAME", "localhost")
30
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")
31
36
 
32
37
 
33
38
  def is_process_manager_active(timeout: float = 0.5) -> bool:
@@ -394,7 +399,11 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
394
399
  """Proxy for process management, used to connect to the Process Manager Control Server and send commands remotely."""
395
400
 
396
401
  def __init__(
397
- self, protocol: str = PROTOCOL, hostname: str = HOSTNAME, port: int = COMMANDING_PORT, timeout=PROXY_TIMEOUT
402
+ self,
403
+ protocol: str = PROTOCOL,
404
+ hostname: str = HOSTNAME,
405
+ port: int = COMMANDING_PORT,
406
+ timeout: float = PROXY_TIMEOUT,
398
407
  ):
399
408
  """
400
409
  Initialisation of a new Proxy for Process Management.
@@ -406,6 +415,7 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
406
415
  protocol (str): Transport protocol
407
416
  hostname (str): Location of the control server (IP address)
408
417
  port (int): TCP port on which the Control Server is listening for commands
418
+ timeout (float): number of fractional seconds before a timeout occurs
409
419
  """
410
420
 
411
421
  endpoint = get_endpoint(settings.SERVICE_TYPE, protocol, hostname, port)
@@ -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
@@ -31,7 +31,7 @@ def set_docstring(func, cmd):
31
31
  return wrap_func
32
32
 
33
33
 
34
- REQUEST_TIMEOUT = 30 * 1000 # timeout in millisecond
34
+ REQUEST_TIMEOUT = 30.0 # timeout in seconds
35
35
  REQUEST_RETRIES = 0
36
36
 
37
37
 
@@ -93,10 +93,13 @@ class ControlServerConnectionInterface:
93
93
 
94
94
 
95
95
  class BaseProxy(ControlServerConnectionInterface):
96
- def __init__(self, endpoint: str, timeout: int = REQUEST_TIMEOUT):
96
+ def __init__(self, endpoint: str, timeout: float = REQUEST_TIMEOUT):
97
97
  """
98
- The `timeout` argument specifies the number of milliseconds to wait for a reply from the
99
- control server.
98
+ The endpoint is a string that is constructed from the protocol, hostname
99
+ and port number and has the format: `protocol://hostname:port`.
100
+
101
+ The `timeout` argument specifies the number of fractional seconds to wait
102
+ for a reply from the control server.
100
103
  """
101
104
 
102
105
  self._logger = logging.getLogger(self.__class__.__name__)
@@ -150,7 +153,7 @@ class BaseProxy(ControlServerConnectionInterface):
150
153
  def is_cs_connected(self) -> bool:
151
154
  return self.ping()
152
155
 
153
- def send(self, data, retries: int = REQUEST_RETRIES, timeout: int = None):
156
+ def send(self, data, retries: int = REQUEST_RETRIES, timeout: float | None = None):
154
157
  """
155
158
  Sends a command to the control server and waits for a response.
156
159
 
@@ -166,14 +169,14 @@ class BaseProxy(ControlServerConnectionInterface):
166
169
  Args:
167
170
  data (str): the command that is sent to the control server, usually a
168
171
  string, but that is not enforced.
169
- timeout (int): the time to wait for a reply [in milliseconds]
172
+ timeout (int): the time to wait for a reply [in seconds]
170
173
  retries (int): the number of time we should retry to send the message
171
174
 
172
175
  Returns:
173
176
  response: the response from the control server or ``None`` when there was
174
177
  a problem or a timeout.
175
178
  """
176
- timeout = timeout or self._timeout
179
+ timeout_ms = int((timeout or self._timeout) * 1000)
177
180
 
178
181
  pickle_string = pickle.dumps(data)
179
182
 
@@ -192,7 +195,7 @@ class BaseProxy(ControlServerConnectionInterface):
192
195
  self._socket.send(pickle_string)
193
196
 
194
197
  while True:
195
- socks = dict(self._poller.poll(timeout))
198
+ socks = dict(self._poller.poll(timeout_ms))
196
199
 
197
200
  if self._socket in socks and socks[self._socket] == zmq.POLLIN:
198
201
  pickle_string = self._socket.recv()
@@ -223,7 +226,7 @@ class BaseProxy(ControlServerConnectionInterface):
223
226
  self._socket.send(pickle_string)
224
227
 
225
228
  def ping(self):
226
- return_code = self.send("Ping", retries=0, timeout=1000)
229
+ return_code = self.send("Ping", retries=0, timeout=1.0)
227
230
  self._logger.log(0, f"Check if control server is available: Ping - {return_code}")
228
231
  return return_code == "Pong"
229
232
 
@@ -278,7 +281,7 @@ class Proxy(BaseProxy, ControlServerConnectionInterface):
278
281
  during initialization, a ConnectionError will be raised.
279
282
  """
280
283
 
281
- def __init__(self, endpoint, timeout: int = REQUEST_TIMEOUT):
284
+ def __init__(self, endpoint, timeout: float = REQUEST_TIMEOUT):
282
285
  """
283
286
  During initialization, the Proxy will connect to the control server and send a
284
287
  handshaking `Ping` command. When that succeeds the Proxy will request and load the
@@ -287,7 +290,7 @@ class Proxy(BaseProxy, ControlServerConnectionInterface):
287
290
  can fix the problem with the control server and call `connect_cs()`, followed by a call to
288
291
  `load_commands()`.
289
292
 
290
- The `timeout` argument specifies the number of milliseconds
293
+ The `timeout` argument specifies the number of seconds
291
294
  """
292
295
 
293
296
  super().__init__(endpoint, timeout)
@@ -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
 
@@ -453,6 +478,9 @@ class RegistryClient:
453
478
  if not self.health_check():
454
479
  self.logger.warning("ServiceRegistry not responding.")
455
480
  return
481
+ else:
482
+ self.logger.info("Health check succeeded, reregistering ?")
483
+ self.reregister()
456
484
 
457
485
  else:
458
486
  self.logger.debug(response.get("message"))
@@ -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()
@@ -491,14 +496,14 @@ class AsyncRegistryServer:
491
496
  async def _handle_health(self, request: dict[str, Any]) -> dict[str, Any]:
492
497
  """Handle a health check request."""
493
498
 
494
- self.logger.info(f"Handle health request: {request}")
499
+ self.logger.debug(f"Handle health request: {request}")
495
500
 
496
501
  return {"success": True, "status": "ok", "timestamp": int(time.time())}
497
502
 
498
503
  async def _handle_terminate(self, request: dict[str, Any]) -> dict[str, Any]:
499
504
  """Handle a termination request."""
500
505
 
501
- self.logger.info(f"Handle termination request: {request}")
506
+ self.logger.debug(f"Handle termination request: {request}")
502
507
 
503
508
  self.stop()
504
509
 
@@ -227,7 +227,7 @@ class ServiceProxy(Proxy, ServiceInterface):
227
227
  protocol: str = "tcp",
228
228
  hostname: str = None,
229
229
  port: int = None,
230
- timeout: int = REQUEST_TIMEOUT,
230
+ timeout: float = REQUEST_TIMEOUT,
231
231
  ):
232
232
  """
233
233
  The Service Proxy class is used to send service commands to the control server.
@@ -237,7 +237,7 @@ class ServiceProxy(Proxy, ServiceInterface):
237
237
  protocol: the transport protocol [default: tcp]
238
238
  hostname: the IP address of the control server
239
239
  port: the port on which the control server is listening for service commands
240
- timeout: number of milliseconds before a timeout is triggered
240
+ timeout: number of fractional seconds before a timeout is triggered
241
241
  """
242
242
 
243
243
  if hostname is None or port is None: