cgse 0.16.0__tar.gz → 0.16.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. {cgse-0.16.0 → cgse-0.16.2}/PKG-INFO +1 -1
  2. cgse-0.16.2/docs/images/cli-cgse.png +0 -0
  3. {cgse-0.16.0 → cgse-0.16.2}/docs/user_guide/cli.md +1 -1
  4. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/pyproject.toml +1 -1
  5. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/env.py +9 -1
  6. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/system.py +24 -0
  7. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/pyproject.toml +1 -1
  8. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/pyproject.toml +1 -1
  9. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/_start.py +8 -7
  10. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/_stop.py +8 -6
  11. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/settings.yaml +25 -15
  12. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/confman/__init__.py +12 -16
  13. {cgse-0.16.0/libs/cgse-common → cgse-0.16.2/libs/cgse-core}/src/egse/connect.py +45 -0
  14. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/dummy.py +7 -0
  15. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/logger/__init__.py +9 -9
  16. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/__init__.py +4 -0
  17. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/server.py +8 -5
  18. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/procman/__init__.py +17 -17
  19. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/registry/__init__.py +4 -4
  20. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/storage/__init__.py +16 -18
  21. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/pyproject.toml +1 -1
  22. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/pyproject.toml +1 -1
  23. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  24. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +6 -4
  25. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  26. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +1 -1
  27. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  28. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +5 -20
  29. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-fits/pyproject.toml +1 -1
  30. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  31. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-spw/pyproject.toml +1 -1
  32. {cgse-0.16.0 → cgse-0.16.2}/pyproject.toml +1 -1
  33. {cgse-0.16.0 → cgse-0.16.2}/service_registry.db +0 -0
  34. {cgse-0.16.0 → cgse-0.16.2}/service_registry.db-shm +0 -0
  35. {cgse-0.16.0 → cgse-0.16.2}/service_registry.db-wal +0 -0
  36. cgse-0.16.0/docs/images/cli-cgse.png +0 -0
  37. {cgse-0.16.0 → cgse-0.16.2}/.github/workflows/ruff-format-check.yaml +0 -0
  38. {cgse-0.16.0 → cgse-0.16.2}/.gitignore +0 -0
  39. {cgse-0.16.0 → cgse-0.16.2}/README.md +0 -0
  40. {cgse-0.16.0 → cgse-0.16.2}/buffer_vat.log +0 -0
  41. {cgse-0.16.0 → cgse-0.16.2}/buffer_vat.png +0 -0
  42. {cgse-0.16.0 → cgse-0.16.2}/bump.py +0 -0
  43. {cgse-0.16.0 → cgse-0.16.2}/conftest.py +0 -0
  44. {cgse-0.16.0 → cgse-0.16.2}/docs/api/bits.md +0 -0
  45. {cgse-0.16.0 → cgse-0.16.2}/docs/api/calibration.md +0 -0
  46. {cgse-0.16.0 → cgse-0.16.2}/docs/api/command.md +0 -0
  47. {cgse-0.16.0 → cgse-0.16.2}/docs/api/config.md +0 -0
  48. {cgse-0.16.0 → cgse-0.16.2}/docs/api/control.md +0 -0
  49. {cgse-0.16.0 → cgse-0.16.2}/docs/api/counter.md +0 -0
  50. {cgse-0.16.0 → cgse-0.16.2}/docs/api/decorators.md +0 -0
  51. {cgse-0.16.0 → cgse-0.16.2}/docs/api/device.md +0 -0
  52. {cgse-0.16.0 → cgse-0.16.2}/docs/api/dicts.md +0 -0
  53. {cgse-0.16.0 → cgse-0.16.2}/docs/api/dummy.md +0 -0
  54. {cgse-0.16.0 → cgse-0.16.2}/docs/api/env.md +0 -0
  55. {cgse-0.16.0 → cgse-0.16.2}/docs/api/exceptions.md +0 -0
  56. {cgse-0.16.0 → cgse-0.16.2}/docs/api/heartbeat.md +0 -0
  57. {cgse-0.16.0 → cgse-0.16.2}/docs/api/hk.md +0 -0
  58. {cgse-0.16.0 → cgse-0.16.2}/docs/api/index.md +0 -0
  59. {cgse-0.16.0 → cgse-0.16.2}/docs/api/listener.md +0 -0
  60. {cgse-0.16.0 → cgse-0.16.2}/docs/api/metrics.md +0 -0
  61. {cgse-0.16.0 → cgse-0.16.2}/docs/api/mixin.md +0 -0
  62. {cgse-0.16.0 → cgse-0.16.2}/docs/api/monitoring.md +0 -0
  63. {cgse-0.16.0 → cgse-0.16.2}/docs/api/observer.md +0 -0
  64. {cgse-0.16.0 → cgse-0.16.2}/docs/api/obsid.md +0 -0
  65. {cgse-0.16.0 → cgse-0.16.2}/docs/api/persistence.md +0 -0
  66. {cgse-0.16.0 → cgse-0.16.2}/docs/api/plugin.md +0 -0
  67. {cgse-0.16.0 → cgse-0.16.2}/docs/api/process.md +0 -0
  68. {cgse-0.16.0 → cgse-0.16.2}/docs/api/reload.md +0 -0
  69. {cgse-0.16.0 → cgse-0.16.2}/docs/api/settings.md +0 -0
  70. {cgse-0.16.0 → cgse-0.16.2}/docs/api/setup.md +0 -0
  71. {cgse-0.16.0 → cgse-0.16.2}/docs/api/system.md +0 -0
  72. {cgse-0.16.0 → cgse-0.16.2}/docs/custom_theme/main.html +0 -0
  73. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/coding_style.md +0 -0
  74. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/docs.md +0 -0
  75. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/index.md +0 -0
  76. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/installation.md +0 -0
  77. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/monitoring.md +0 -0
  78. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/monorepo.md +0 -0
  79. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/nox.md +0 -0
  80. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/plugins.md +0 -0
  81. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/project-configuration.md +0 -0
  82. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/unit_testing.md +0 -0
  83. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/uv.md +0 -0
  84. {cgse-0.16.0 → cgse-0.16.2}/docs/dev_guide/versioning.md +0 -0
  85. {cgse-0.16.0 → cgse-0.16.2}/docs/getting_started.md +0 -0
  86. {cgse-0.16.0 → cgse-0.16.2}/docs/help.md +0 -0
  87. {cgse-0.16.0 → cgse-0.16.2}/docs/images/github-fork-clone-dark.png +0 -0
  88. {cgse-0.16.0 → cgse-0.16.2}/docs/images/github-fork-clone.png +0 -0
  89. {cgse-0.16.0 → cgse-0.16.2}/docs/images/grafana-queries.png +0 -0
  90. {cgse-0.16.0 → cgse-0.16.2}/docs/images/icons/cgse-logo-blue.svg +0 -0
  91. {cgse-0.16.0 → cgse-0.16.2}/docs/images/icons/cgse-logo.svg +0 -0
  92. {cgse-0.16.0 → cgse-0.16.2}/docs/index.md +0 -0
  93. {cgse-0.16.0 → cgse-0.16.2}/docs/initialize.md +0 -0
  94. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-common/images/load_methods.png +0 -0
  95. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-common/index.md +0 -0
  96. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-common/settings.md +0 -0
  97. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-common/setup.md +0 -0
  98. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-coordinates/index.md +0 -0
  99. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-core/index.md +0 -0
  100. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-core/notifyhub.md +0 -0
  101. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-core/registry.md +0 -0
  102. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/cgse-gui/index.md +0 -0
  103. {cgse-0.16.0 → cgse-0.16.2}/docs/libs/index.md +0 -0
  104. {cgse-0.16.0 → cgse-0.16.2}/docs/package_list.md +0 -0
  105. {cgse-0.16.0 → cgse-0.16.2}/docs/projects/cgse-tools.md +0 -0
  106. {cgse-0.16.0 → cgse-0.16.2}/docs/projects/index.md +0 -0
  107. {cgse-0.16.0 → cgse-0.16.2}/docs/projects/symetrie-hexapod.md +0 -0
  108. {cgse-0.16.0 → cgse-0.16.2}/docs/roadmap.md +0 -0
  109. {cgse-0.16.0 → cgse-0.16.2}/docs/stylesheets/custom.css +0 -0
  110. {cgse-0.16.0 → cgse-0.16.2}/docs/stylesheets/extra.css +0 -0
  111. {cgse-0.16.0 → cgse-0.16.2}/docs/tutorial.md +0 -0
  112. {cgse-0.16.0 → cgse-0.16.2}/docs/user_guide/index.md +0 -0
  113. {cgse-0.16.0 → cgse-0.16.2}/duckdb_metrics.db +0 -0
  114. {cgse-0.16.0 → cgse-0.16.2}/duckdb_metrics.db.wal +0 -0
  115. {cgse-0.16.0 → cgse-0.16.2}/identifier.sqlite +0 -0
  116. {cgse-0.16.0 → cgse-0.16.2}/justfile +0 -0
  117. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/README.md +0 -0
  118. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/justfile +0 -0
  119. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/noxfile.py +0 -0
  120. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/service_registry.db +0 -0
  121. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  122. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  123. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  124. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/bits.py +0 -0
  125. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/calibration.py +0 -0
  126. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/config.py +0 -0
  127. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/counter.py +0 -0
  128. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/decorators.py +0 -0
  129. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/device.py +0 -0
  130. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/dicts.py +0 -0
  131. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/exceptions.py +0 -0
  132. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  133. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/hk.py +0 -0
  134. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/log.py +0 -0
  135. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/metrics.py +0 -0
  136. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/observer.py +0 -0
  137. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/obsid.py +0 -0
  138. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/persistence.py +0 -0
  139. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/plugin.py +0 -0
  140. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
  141. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  142. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
  143. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/process.py +0 -0
  144. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/py.typed +0 -0
  145. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  146. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/ratelimit.py +0 -0
  147. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/reload.py +0 -0
  148. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/resource.py +0 -0
  149. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/response.py +0 -0
  150. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/scpi.py +0 -0
  151. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/settings.py +0 -0
  152. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/settings.yaml +0 -0
  153. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/setup.py +0 -0
  154. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/signal.py +0 -0
  155. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/socketdevice.py +0 -0
  156. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/state.py +0 -0
  157. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/task.py +0 -0
  158. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/version.py +0 -0
  159. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  160. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/conftest.py +0 -0
  161. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/COPYING +0 -0
  162. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  163. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  164. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  165. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  166. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  167. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  168. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  169. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  170. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  171. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  172. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  173. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  174. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  175. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  176. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  177. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  178. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  179. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  180. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  181. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  182. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  183. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  184. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  185. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  186. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  187. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  188. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  189. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  190. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  191. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  192. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  193. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  194. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  195. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  196. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  197. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  198. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  199. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  200. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  201. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  202. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  203. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  204. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  205. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_bits.py +0 -0
  206. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_config.py +0 -0
  207. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_decorators.py +0 -0
  208. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_device.py +0 -0
  209. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_env.py +0 -0
  210. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_fixtures.py +0 -0
  211. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_hk.py +0 -0
  212. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  213. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_log.py +0 -0
  214. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_metrics.py +0 -0
  215. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_plugin.py +0 -0
  216. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_process.py +0 -0
  217. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_ratelimit.py +0 -0
  218. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_resource.py +0 -0
  219. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_response.py +0 -0
  220. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_settings.py +0 -0
  221. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_setup.py +0 -0
  222. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_signal.py +0 -0
  223. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_state.py +0 -0
  224. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_system.py +0 -0
  225. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_task.py +0 -0
  226. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  227. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/README.md +0 -0
  228. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  229. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  230. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  231. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  232. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  233. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  234. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  235. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  236. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  237. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  238. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  239. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  240. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  241. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  242. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  243. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_point.py +0 -0
  244. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  245. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  246. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  247. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/.envrc.disabled +0 -0
  248. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/README.md +0 -0
  249. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/service_registry.db +0 -0
  250. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  251. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  252. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  253. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/cgse_core/services.py +0 -0
  254. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  255. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/async_control.py +0 -0
  256. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
  257. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/command.py +0 -0
  258. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  259. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  260. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  261. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/control.py +0 -0
  262. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  263. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  264. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  265. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  266. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  267. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  268. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  269. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/listener.py +0 -0
  270. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  271. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  272. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
  273. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
  274. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/mixin.py +0 -0
  275. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/monitoring.py +0 -0
  276. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  277. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  278. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  279. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
  280. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  281. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  282. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  283. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  284. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/protocol.py +0 -0
  285. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/proxy.py +0 -0
  286. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  287. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/registry/client.py +0 -0
  288. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/registry/server.py +0 -0
  289. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/registry/service.py +0 -0
  290. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/services.py +0 -0
  291. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/services.yaml +0 -0
  292. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  293. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  294. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  295. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  296. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/conftest.py +0 -0
  297. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  298. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  299. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  300. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/fixtures/services.py +0 -0
  301. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  302. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  303. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  304. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  305. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  306. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/services.py +0 -0
  307. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  308. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_async_control.py +0 -0
  309. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  310. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  311. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_command.py +0 -0
  312. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  313. {cgse-0.16.0/libs/cgse-common → cgse-0.16.2/libs/cgse-core}/tests/test_connect.py +0 -0
  314. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_control.py +0 -0
  315. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_dummy.py +0 -0
  316. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_event_notification.py +0 -0
  317. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_extensions.py +0 -0
  318. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_listener.py +0 -0
  319. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_logger.py +0 -0
  320. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_mixin.py +0 -0
  321. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  322. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_protocol.py +0 -0
  323. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  324. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_registry_service.py +0 -0
  325. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_server_running.py +0 -0
  326. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  327. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_settings_core.py +0 -0
  328. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  329. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/README.md +0 -0
  330. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  331. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  332. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  333. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  334. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  335. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  336. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  337. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  338. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  339. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  340. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  341. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  342. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  343. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  344. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  345. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  346. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  347. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  348. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  349. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  350. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  351. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  352. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  353. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  354. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  355. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  356. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  357. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  358. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  359. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  360. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  361. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  362. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  363. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  364. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  365. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  366. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  367. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  368. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  369. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  370. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  371. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  372. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  373. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  374. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  375. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  376. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  377. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  378. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  379. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  380. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  381. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  382. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  383. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  384. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  385. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  386. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  387. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  388. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  389. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  390. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  391. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  392. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  393. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  394. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  395. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  396. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  397. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  398. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  399. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  400. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  401. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  402. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  403. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  404. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  405. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  406. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  407. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  408. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  409. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  410. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  411. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  412. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  413. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  414. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  415. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  416. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  417. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  418. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  419. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  420. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  421. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  422. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  423. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  424. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  425. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  426. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  427. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  428. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  429. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  430. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  431. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  432. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  433. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  434. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  435. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  436. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  437. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  438. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  439. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  440. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  441. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  442. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  443. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  444. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  445. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  446. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  447. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  448. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  449. {cgse-0.16.0 → cgse-0.16.2}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  450. {cgse-0.16.0 → cgse-0.16.2}/mkdocs.yml +0 -0
  451. {cgse-0.16.0 → cgse-0.16.2}/noxfile.py +0 -0
  452. {cgse-0.16.0 → cgse-0.16.2}/overrides/.icons/custom/dbend-dark.svg +0 -0
  453. {cgse-0.16.0 → cgse-0.16.2}/overrides/.icons/custom/dbend-light.svg +0 -0
  454. {cgse-0.16.0 → cgse-0.16.2}/overrides/.icons/custom/gear.svg +0 -0
  455. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/README.md +0 -0
  456. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  457. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  458. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  459. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  460. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  461. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/README.md +0 -0
  462. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/justfile +0 -0
  463. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  464. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  465. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  466. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
  467. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  468. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
  469. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
  470. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  471. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  472. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  473. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  474. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  475. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
  476. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  477. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  478. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
  479. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
  480. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  481. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
  482. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  483. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  484. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  485. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  486. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  487. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  488. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  489. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  490. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  491. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  492. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  493. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  494. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/README.md +0 -0
  495. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  496. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  497. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  498. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  499. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  500. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  501. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  502. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  503. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  504. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  505. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  506. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  507. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  508. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  509. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  510. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  511. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  512. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
  513. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  514. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  515. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  516. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  517. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  518. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  519. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  520. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  521. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  522. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  523. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  524. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  525. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
  526. {cgse-0.16.0 → cgse-0.16.2}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  527. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-fits/README.md +0 -0
  528. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  529. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-hdf5/README.md +0 -0
  530. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  531. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-spw/README.md +0 -0
  532. {cgse-0.16.0 → cgse-0.16.2}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  533. {cgse-0.16.0 → cgse-0.16.2}/ruff.toml +0 -0
  534. {cgse-0.16.0 → cgse-0.16.2}/scratch/advanced-process-monitoring.py +0 -0
  535. {cgse-0.16.0 → cgse-0.16.2}/scratch/live-process-monitoring.py +0 -0
  536. {cgse-0.16.0 → cgse-0.16.2}/scratch/match-case.py +0 -0
  537. {cgse-0.16.0 → cgse-0.16.2}/scratch/processes.json +0 -0
  538. {cgse-0.16.0 → cgse-0.16.2}/scratch/simple-process-monitoring.py +0 -0
  539. {cgse-0.16.0 → cgse-0.16.2}/temperature_readings.log +0 -0
  540. {cgse-0.16.0 → cgse-0.16.2}/test_service_registry.db +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.16.0
3
+ Version: 0.16.2
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>
Binary file
@@ -2,7 +2,7 @@
2
2
  # CLI Commands CGSE
3
3
 
4
4
  The CGSE comes with a suite of CLI commands to start and stop services, get
5
- status reports and check the installation.It's actually a suite of `cgse`
5
+ status reports and check the installation. It's actually a suite of `cgse`
6
6
  sub-commands that is extendable by external packages. This section will
7
7
  describe the commands that are available from the `cgse` packages.
8
8
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "0.16.0"
3
+ version = "0.16.2"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -384,7 +384,7 @@ def set_log_file_location(location: str | Path | None):
384
384
  _env.set("LOG_FILE_LOCATION", location)
385
385
 
386
386
 
387
- def get_log_file_location(site_id: str = None) -> str:
387
+ def get_log_file_location(site_id: str = None, check_exists: bool = False) -> str:
388
388
  """
389
389
  Returns the full path of the location of the log files. The log file location is read from the environment
390
390
  variable `${PROJECT}_LOG_FILE_LOCATION`. The location shall be independent of any setting that is subject to change.
@@ -392,8 +392,12 @@ def get_log_file_location(site_id: str = None) -> str:
392
392
  If the environment variable is not set, a default log file location is created from the data storage location as
393
393
  follows: `<PROJECT>_DATA_STORAGE_LOCATION/<SITE_ID>/log`.
394
394
 
395
+ There is no check for the existence of the returned location. The caller function shall check if the
396
+ returned value is a directory and if it exists.
397
+
395
398
  Args:
396
399
  site_id: the site identifier
400
+ check_exists: check if the location that will be returned is a directory and exists
397
401
 
398
402
  Returns:
399
403
  The full path of location of the log files as a string.
@@ -417,6 +421,10 @@ def get_log_file_location(site_id: str = None) -> str:
417
421
  data_root = data_root.rstrip("/")
418
422
  log_data_root = f"{data_root}/log"
419
423
 
424
+ if check_exists:
425
+ if not Path(log_data_root).is_dir():
426
+ raise ValueError(f"The location that was constructed doesn't exist: {log_data_root}")
427
+
420
428
  return log_data_root
421
429
 
422
430
 
@@ -48,6 +48,7 @@ from typing import Callable
48
48
  from typing import Iterable
49
49
  from typing import List
50
50
  from typing import Optional
51
+ from typing import TextIO
51
52
  from typing import Tuple
52
53
  from typing import Type
53
54
  from typing import Union
@@ -60,6 +61,7 @@ from rich.tree import Tree
60
61
  from typer.core import TyperCommand
61
62
 
62
63
  import signal
64
+ from egse.env import get_log_file_location
63
65
  from egse.log import logger
64
66
 
65
67
  EPOCH_1958_1970 = 378691200
@@ -2307,6 +2309,28 @@ def caffeinate(pid: int = None):
2307
2309
  subprocess.Popen([shutil.which("caffeinate"), "-i", "-w", str(pid)])
2308
2310
 
2309
2311
 
2312
+ def redirect_output_to_log(output_fn: str, append: bool = False) -> TextIO:
2313
+ """
2314
+ Open file in the log folder where process output will be redirected.
2315
+
2316
+ When no location can be determined, the user's home directory will be used.
2317
+
2318
+ The file is opened in text mode at the given location and the stream (file descriptor) will be returned.
2319
+ """
2320
+
2321
+ try:
2322
+ location = get_log_file_location()
2323
+ output_path = Path(location, output_fn).expanduser()
2324
+ except ValueError:
2325
+ output_path = Path.home() / output_fn
2326
+
2327
+ out = open(output_path, "a" if append else "w")
2328
+
2329
+ logger.info(f"Output will be redirected to {output_path!s}")
2330
+
2331
+ return out
2332
+
2333
+
2310
2334
  ignore_m_warning("egse.system")
2311
2335
 
2312
2336
  if __name__ == "__main__":
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.16.0"
3
+ version = "0.16.2"
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.0"
3
+ version = "0.16.2"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,14 +1,15 @@
1
1
  import subprocess
2
2
  import sys
3
- from pathlib import Path
4
3
 
5
4
  import rich
6
5
 
6
+ from egse.system import redirect_output_to_log
7
+
7
8
 
8
9
  def start_rm_cs(log_level: str):
9
10
  rich.print("Starting the service registry manager core service...")
10
11
 
11
- out = open(Path("~/.rm_cs.start.out").expanduser(), "w")
12
+ out = redirect_output_to_log(".rm_cs.start.log")
12
13
 
13
14
  subprocess.Popen(
14
15
  [sys.executable, "-m", "egse.registry.server", "start", "--log-level", log_level],
@@ -22,7 +23,7 @@ def start_rm_cs(log_level: str):
22
23
  def start_log_cs():
23
24
  rich.print("Starting the logging core service...")
24
25
 
25
- out = open(Path("~/.log_cs.start.out").expanduser(), "w")
26
+ out = redirect_output_to_log(".log_cs.start.log")
26
27
 
27
28
  subprocess.Popen(
28
29
  [sys.executable, "-m", "egse.logger.log_cs", "start"],
@@ -36,7 +37,7 @@ def start_log_cs():
36
37
  def start_sm_cs():
37
38
  rich.print("Starting the storage manager core service...")
38
39
 
39
- out = open(Path("~/.sm_cs.start.out").expanduser(), "w")
40
+ out = redirect_output_to_log(".sm_cs.start.log")
40
41
 
41
42
  subprocess.Popen(
42
43
  [sys.executable, "-m", "egse.storage.storage_cs", "start"],
@@ -50,7 +51,7 @@ def start_sm_cs():
50
51
  def start_cm_cs():
51
52
  rich.print("Starting the configuration manager core service...")
52
53
 
53
- out = open(Path("~/.cm_cs.start.out").expanduser(), "w")
54
+ out = redirect_output_to_log(".cm_cs.start.log")
54
55
 
55
56
  subprocess.Popen(
56
57
  [sys.executable, "-m", "egse.confman.confman_cs", "start"],
@@ -64,7 +65,7 @@ def start_cm_cs():
64
65
  def start_pm_cs():
65
66
  rich.print("Starting the process manager core service...")
66
67
 
67
- out = open(Path("~/.pm_cs.start.out").expanduser(), "w")
68
+ out = redirect_output_to_log(".pm_cs.start.log")
68
69
 
69
70
  subprocess.Popen(
70
71
  [sys.executable, "-m", "egse.procman.procman_cs", "start"],
@@ -78,7 +79,7 @@ def start_pm_cs():
78
79
  def start_notifyhub():
79
80
  rich.print("Starting the notification hub core service...")
80
81
 
81
- out = open(Path("~/.notifyhub.start.out").expanduser(), "w")
82
+ out = redirect_output_to_log(".nh_cs.start.log")
82
83
 
83
84
  subprocess.Popen(
84
85
  [sys.executable, "-m", "egse.notifyhub.server", "start"],
@@ -8,13 +8,14 @@ import rich
8
8
  from egse.log import logger
9
9
  from egse.process import is_process_running
10
10
  from egse.system import Timer
11
+ from egse.system import redirect_output_to_log
11
12
  from egse.system import waiting_for
12
13
 
13
14
 
14
15
  def stop_rm_cs():
15
16
  rich.print("Terminating the service registry manager core service...")
16
17
 
17
- out = open(Path("~/.rm_cs.stop.out").expanduser(), "w")
18
+ out = redirect_output_to_log(".rm_cs.stop.log")
18
19
 
19
20
  subprocess.Popen(
20
21
  [sys.executable, "-m", "egse.registry.server", "stop"],
@@ -34,7 +35,7 @@ def stop_rm_cs():
34
35
  def stop_log_cs():
35
36
  rich.print("Terminating the logging core service...")
36
37
 
37
- out = open(Path("~/.log_cs.stop.out").expanduser(), "w")
38
+ out = redirect_output_to_log(".log_cs.stop.log")
38
39
 
39
40
  subprocess.Popen(
40
41
  [sys.executable, "-m", "egse.logger.log_cs", "stop"],
@@ -48,7 +49,7 @@ def stop_log_cs():
48
49
  def stop_sm_cs():
49
50
  rich.print("Terminating the storage manager core service...")
50
51
 
51
- out = open(Path("~/.sm_cs.stop.out").expanduser(), "w")
52
+ out = redirect_output_to_log(".sm_cs.stop.log")
52
53
 
53
54
  subprocess.Popen(
54
55
  [sys.executable, "-m", "egse.storage.storage_cs", "stop"],
@@ -68,7 +69,7 @@ def stop_sm_cs():
68
69
  def stop_cm_cs():
69
70
  rich.print("Terminating the configuration manager core service...")
70
71
 
71
- out = open(Path("~/.cm_cs.stop.out").expanduser(), "w")
72
+ out = redirect_output_to_log(".cm_cs.stop.log")
72
73
 
73
74
  subprocess.Popen(
74
75
  [sys.executable, "-m", "egse.confman.confman_cs", "stop"],
@@ -88,7 +89,8 @@ def stop_cm_cs():
88
89
  def stop_pm_cs():
89
90
  rich.print("Terminating the process manager core service...")
90
91
 
91
- out = open(Path("~/.pm_cs.stop.out").expanduser(), "w")
92
+ out = redirect_output_to_log(".pm_cs.stop.log")
93
+
92
94
 
93
95
  subprocess.Popen(
94
96
  [sys.executable, "-m", "egse.procman.procman_cs", "stop"],
@@ -108,7 +110,7 @@ def stop_pm_cs():
108
110
  def stop_notifyhub():
109
111
  rich.print("Terminating the notification hub core service...")
110
112
 
111
- out = open(Path("~/.notifyhub.stop.out").expanduser(), "w")
113
+ out = redirect_output_to_log(".nh_cs.stop.log")
112
114
 
113
115
  subprocess.Popen(
114
116
  [sys.executable, "-m", "egse.notifyhub.server", "stop"],
@@ -3,7 +3,12 @@ PACKAGES:
3
3
 
4
4
  Service Registry:
5
5
 
6
- CLEANUP_INTERVAL: 30
6
+ CLEANUP_INTERVAL: 30
7
+ REQUESTER_PORT: 6100
8
+ PUBLISHER_PORT: 6101
9
+ HEARTBEAT_PORT: 6102
10
+ DATABASE_PATH: service_registry.db
11
+
7
12
 
8
13
  Logging Control Server: # LOG_CS
9
14
 
@@ -11,8 +16,8 @@ Logging Control Server: # LOG_CS
11
16
  PROCESS_NAME: log_cs
12
17
  MAX_NR_LOG_FILES: 20 # The maximum number of log files that will be maintained in a roll-over
13
18
  MAX_SIZE_LOG_FILES: 20 # The maximum size one log file can become
14
- RECEIVER_PORT: 4248
15
- COMMANDER_PORT: 4249
19
+ RECEIVER_PORT: 6105
20
+ COMMANDER_PORT: 6106
16
21
  TEXTUALOG_IP_ADDRESS: 127.0.0.1 # The IP address of the textualog listening server
17
22
  TEXTUALOG_LISTENING_PORT: 19996 # The port number on which the textualog server is listening
18
23
 
@@ -20,9 +25,9 @@ Configuration Manager Control Server: # CM_CS
20
25
 
21
26
  SERVICE_TYPE: CM_CS
22
27
  PROCESS_NAME: cm_cs
23
- COMMANDING_PORT: 6000 # The port on which the controller listens to commands - REQ-REP
24
- MONITORING_PORT: 6001 # The port on which the controller sends periodic status information of the device - PUB-SUB
25
- SERVICE_PORT: 6002 # The port on which the controller listens for configuration and administration - REQ-REP
28
+ COMMANDING_PORT: 6110 # The port on which the controller listens to commands - REQ-REP
29
+ MONITORING_PORT: 6111 # The port on which the controller sends periodic status information of the device - PUB-SUB
30
+ SERVICE_PORT: 6112 # The port on which the controller listens for configuration and administration - REQ-REP
26
31
  DELAY: 1 # The delay time between publishing status information [seconds]
27
32
  STORAGE_MNEMONIC: CM # The mnemonic to be used in the filename storing the housekeeping data
28
33
 
@@ -30,30 +35,35 @@ Storage Manager Control Server: # SM_CS
30
35
 
31
36
  SERVICE_TYPE: SM_CS
32
37
  PROCESS_NAME: sm_cs
33
- COMMANDING_PORT: 6010 # The port on which the controller listens to commands - REQ-REP
34
- MONITORING_PORT: 6011 # The port on which the controller sends periodic status information of the device - PUB-SUB
35
- SERVICE_PORT: 6012 # The port on which the controller listens for configuration and administration - REQ-REP
38
+ COMMANDING_PORT: 6115 # The port on which the controller listens to commands - REQ-REP
39
+ MONITORING_PORT: 6116 # The port on which the controller sends periodic status information of the device - PUB-SUB
40
+ SERVICE_PORT: 6117 # The port on which the controller listens for configuration and administration - REQ-REP
36
41
  DELAY: 1 # The delay time between publishing status information [seconds]
37
42
 
38
43
  Process Manager Control Server: # PM_CS
39
44
 
40
45
  SERVICE_TYPE: PM_CS
41
46
  PROCESS_NAME: pm_cs
42
- COMMANDING_PORT: 6020 # The port on which the controller listens to commands - REQ-REP
43
- MONITORING_PORT: 6021 # The port on which the controller sends periodic status information of the devide - PUB-SUB
44
- SERVICE_PORT: 6022 # The port number on which the controller listens for configuration and administration - REQ-REP
47
+ COMMANDING_PORT: 6120 # The port on which the controller listens to commands - REQ-REP
48
+ MONITORING_PORT: 6121 # The port on which the controller sends periodic status information of the devide - PUB-SUB
49
+ SERVICE_PORT: 6122 # The port number on which the controller listens for configuration and administration - REQ-REP
45
50
  DELAY: 1 # The delay time between publishing status information [seconds]
46
51
  STORAGE_MNEMONIC: PM # The mnemonic to be used in the filename storing the housekeeping data
47
52
 
48
53
  Notify Hub:
49
54
 
50
55
  SERVICE_TYPE: NOTIFY_HUB
56
+ SERVICE_ID: nh_cs_1
51
57
  PROCESS_NAME: nh_cs
52
- COLLECTOR_PORT: 4245
53
- PUBLISHER_PORT: 4246
54
- REQUESTS_PORT: 4247
58
+ COLLECTOR_PORT: 6125
59
+ PUBLISHER_PORT: 6126
60
+ REQUESTS_PORT: 6167
55
61
 
56
62
  Metrics Hub:
57
63
 
58
64
  SERVICE_TYPE: METRICS_HUB
65
+ SERVICE_ID: mh_cs_1
59
66
  PROCESS_NAME: mh_cs
67
+ COLLECTOR_PORT: 6130
68
+ PUBLISHER_PORT: 6131
69
+ REQUESTS_PORT: 6132
@@ -128,6 +128,7 @@ from egse.command import ClientServerCommand
128
128
  from egse.command import stringify_function_call
129
129
  from egse.config import find_file
130
130
  from egse.config import find_files
131
+ from egse.connect import get_endpoint
131
132
  from egse.control import ControlServer
132
133
  from egse.control import is_control_server_active
133
134
  from egse.decorators import dynamic_interface
@@ -992,27 +993,22 @@ class ConfigurationManagerProxy(Proxy, ConfigurationManagerInterface):
992
993
  """
993
994
  The Configuration Manager Proxy class is used to connect to the Configuration Manager
994
995
  Control Server and send commands and requests for the configuration manager.
996
+
997
+ When the port number passed is 0 (zero), the endpoint is requested from the
998
+ service registry.
999
+
1000
+ Args:
1001
+ protocol: the transport protocol [default is taken from settings file]
1002
+ hostname: location of the control server (IP address) [default is taken
1003
+ from settings file]
1004
+ port: TCP port on which the control server is listening for commands
1005
+ [default is taken from settings file]
995
1006
  """
996
1007
 
997
1008
  def __init__(
998
1009
  self, protocol: str = PROTOCOL, hostname: str = HOSTNAME, port: int = COMMANDING_PORT, timeout=PROXY_TIMEOUT
999
1010
  ):
1000
- """
1001
- Args:
1002
- protocol: the transport protocol [default is taken from settings file]
1003
- hostname: location of the control server (IP address) [default is taken
1004
- from settings file]
1005
- port: TCP port on which the control server is listening for commands
1006
- [default is taken from settings file]
1007
- """
1008
- if port == 0:
1009
- with RegistryClient() as reg:
1010
- endpoint = reg.get_endpoint(settings.SERVICE_TYPE)
1011
-
1012
- if not endpoint:
1013
- raise RuntimeError(f"No service registered as {settings.SERVICE_TYPE}")
1014
- else:
1015
- endpoint = connect_address(protocol, hostname, port)
1011
+ endpoint = get_endpoint(settings.SERVICE_TYPE, protocol, hostname, port)
1016
1012
 
1017
1013
  super().__init__(endpoint, timeout=timeout)
1018
1014
 
@@ -4,12 +4,57 @@ import time
4
4
  from enum import Enum
5
5
 
6
6
  from egse.log import logging
7
+ from egse.registry.client import RegistryClient
8
+ from egse.zmq_ser import connect_address
7
9
 
8
10
  logger = logging.getLogger("egse.connect")
9
11
 
10
12
  # random.seed(time.monotonic()) # uncomment for testing only, main application should set a seed.
11
13
 
12
14
 
15
+ def get_endpoint(
16
+ service_type: str,
17
+ protocol: str = None,
18
+ hostname: str = None,
19
+ port: int = 0,
20
+ ):
21
+ """
22
+ Returns the endpoint for a service, either from the registry or by constructing
23
+ it from protocol, hostname and port.
24
+
25
+ If port is 0 (the default), attempt to retrieve the endpoint from the service registry.
26
+
27
+ Args:
28
+ service_type: The service type to look up in the registry.
29
+ protocol: Protocol to use if constructing the endpoint.
30
+ hostname: Hostname to use if constructing the endpoint.
31
+ port: Port to use if constructing the endpoint.
32
+
33
+ Returns:
34
+ The endpoint string.
35
+
36
+ Raises:
37
+ RuntimeError: If no endpoint can be determined.
38
+ """
39
+ endpoint = None
40
+
41
+ if port == 0:
42
+ with RegistryClient() as reg:
43
+ endpoint = reg.get_endpoint(service_type)
44
+ if endpoint:
45
+ logger.info(f"Endpoint for {service_type} found in registry: {endpoint}")
46
+ else:
47
+ logger.warning(f"No endpoint for {service_type} found in registry.")
48
+
49
+ if not endpoint:
50
+ if port == 0:
51
+ raise RuntimeError(f"No service registered as {service_type} and no port provided.")
52
+ endpoint = connect_address(protocol, hostname, port)
53
+ logger.info(f"Endpoint constructed from protocol/hostname/port: {endpoint}")
54
+
55
+ return endpoint
56
+
57
+
13
58
  class ConnectionState(Enum):
14
59
  DISCONNECTED = "disconnected"
15
60
  CONNECTING = "connecting"
@@ -1,6 +1,13 @@
1
1
  """
2
2
  This module provides a dummy implementation for classes of the commanding chain.
3
3
 
4
+ This is only a simplified implementation that is used for testing purposes.
5
+
6
+ If you need a more elaborate example of a device and commanding chain implementation,
7
+ check out the `cgse-dummy` project in PyPI. That project is a full implementation of
8
+ all aspects in device access, commanding, and services. It also handles both
9
+ synchronous and asynchronous implementations.
10
+
4
11
  Start the control server with:
5
12
 
6
13
  py -m egse.dummy start-cs
@@ -37,6 +37,7 @@ from egse.log import PackageFilter
37
37
  from egse.log import egse_logger
38
38
  from egse.log import logger
39
39
  from egse.log import root_logger
40
+ from egse.registry.client import RegistryClient
40
41
  from egse.settings import Settings
41
42
  from egse.system import is_in_ipython
42
43
  from egse.system import type_name
@@ -62,26 +63,25 @@ def get_log_file_name():
62
63
  return settings.get("FILENAME", "general.log")
63
64
 
64
65
 
65
- def get_endpoint_from_registry(port: str = "commander"):
66
+ def get_endpoint_from_registry(service_type: str, port_type: str = "commander"):
66
67
  """Returns the endpoint that was constructed from information from the service registry."""
67
- from egse.registry.client import RegistryClient
68
68
 
69
69
  # logger.debug(f"Calling get_endpoint_from_registry(\"{port}\")")
70
70
 
71
71
  try:
72
72
  with RegistryClient() as reg:
73
- if port == "commander":
74
- endpoint = reg.get_endpoint(SERVICE_TYPE)
75
- elif port == "receiver":
76
- service = reg.discover_service(SERVICE_TYPE)
73
+ if port_type == "commander":
74
+ endpoint = reg.get_endpoint(service_type)
75
+ elif port_type == "receiver":
76
+ service = reg.discover_service(service_type)
77
77
  endpoint = (
78
78
  f"{service.get('protocol', 'tcp')}://{service['host']}:{service['metadata']['receiver_port']}"
79
79
  )
80
80
  else:
81
- logger.error(f"Incorrect argument {port=}, no endpoint returned.")
81
+ logger.error(f"Incorrect argument {port_type=}, no endpoint returned.")
82
82
  endpoint = None
83
83
  except Exception: # noqa
84
- logger.warning(f"Couldn't retrieve endpoint for {SERVICE_TYPE}. Is the log_cs process running?")
84
+ logger.warning(f"Couldn't retrieve endpoint for {service_type}. Is the service registry process running?")
85
85
  endpoint = None
86
86
 
87
87
  return endpoint
@@ -92,7 +92,7 @@ class ZeroMQHandler(logging.Handler):
92
92
  super().__init__()
93
93
 
94
94
  if RECEIVER_PORT == 0:
95
- endpoint = get_endpoint_from_registry(port="receiver")
95
+ endpoint = get_endpoint_from_registry(service_type=SERVICE_TYPE, port_type="receiver")
96
96
  else:
97
97
  endpoint = f"{PROTOCOL}://{HOSTNAME}:{RECEIVER_PORT}"
98
98
 
@@ -11,6 +11,10 @@ from egse.settings import Settings
11
11
 
12
12
  settings = Settings.load("Notify Hub")
13
13
 
14
+ PROCESS_NAME = settings.get("PROCESS_NAME", "nh_cs")
15
+ SERVICE_ID = settings.get("SERVICE_ID", "nh_cs_1")
16
+ SERVICE_TYPE = settings.get("SERVICE_TYPE", "NOTIFY_HUB")
17
+
14
18
  # Default ports that are assigned to PUSH-PULL, PUB-SUB, ROUTER-DEALER protocols of the notification hub.
15
19
  # The actual ports are defined in the Settings.yaml, use local settings to change them.
16
20
  DEFAULT_COLLECTOR_PORT = settings.get("COLLECTOR_PORT", 0)
@@ -18,6 +18,8 @@ from egse.logger import remote_logging
18
18
  from egse.notifyhub import DEFAULT_COLLECTOR_PORT
19
19
  from egse.notifyhub import DEFAULT_PUBLISHER_PORT
20
20
  from egse.notifyhub import DEFAULT_REQUESTS_PORT
21
+ from egse.notifyhub import PROCESS_NAME
22
+ from egse.notifyhub import SERVICE_TYPE
21
23
  from egse.notifyhub import STATS_INTERVAL
22
24
  from egse.notifyhub.client import AsyncNotificationHubClient
23
25
  from egse.registry import MessageType
@@ -30,12 +32,13 @@ from .event import NotificationEvent
30
32
  REQUEST_POLL_TIMEOUT = 1.0
31
33
  """time to wait for while listening for requests [seconds]."""
32
34
 
33
- app = typer.Typer(name="notify_hub")
35
+
36
+ app = typer.Typer(name=PROCESS_NAME)
34
37
 
35
38
 
36
39
  class AsyncNotificationHub:
37
40
  def __init__(self):
38
- self.server_id = "notification-hub-1"
41
+ self.server_id = PROCESS_NAME
39
42
 
40
43
  self.context: zmq.asyncio.Context = zmq.asyncio.Context()
41
44
 
@@ -51,8 +54,8 @@ class AsyncNotificationHub:
51
54
  # Register notification hub to the service registry
52
55
  self.registry_client = AsyncRegistryClient(timeout=REQUEST_TIMEOUT)
53
56
  self.service_id = None
54
- self.service_name = "Notification Hub"
55
- self.service_type = "notification-hub"
57
+ self.service_name = PROCESS_NAME
58
+ self.service_type = SERVICE_TYPE
56
59
  self.is_service_registered: bool = False
57
60
  """True if the service is registered to the service registry."""
58
61
 
@@ -123,7 +126,7 @@ class AsyncNotificationHub:
123
126
 
124
127
  self.service_id = await self.registry_client.register(
125
128
  name=self.service_name,
126
- host=get_host_ip(),
129
+ host=get_host_ip() or "127.0.0.1",
127
130
  port=DEFAULT_REQUESTS_PORT,
128
131
  service_type=self.service_type,
129
132
  metadata={"pub_port": DEFAULT_PUBLISHER_PORT, "collector_port": DEFAULT_COLLECTOR_PORT},
@@ -5,6 +5,7 @@ from pathlib import Path
5
5
  from typing import Union
6
6
 
7
7
  from egse.command import ClientServerCommand
8
+ from egse.connect import get_endpoint
8
9
  from egse.control import is_control_server_active
9
10
  from egse.decorators import dynamic_interface
10
11
  from egse.listener import EventInterface, Event
@@ -20,10 +21,15 @@ from egse.zmq_ser import connect_address
20
21
  HERE = Path(__file__).parent
21
22
  LOGGER = logging.getLogger("egse.procman")
22
23
 
23
- CTRL_SETTINGS = Settings.load("Process Manager Control Server")
24
+ settings = Settings.load("Process Manager Control Server")
24
25
  COMMAND_SETTINGS = Settings.load(location=HERE, filename="procman.yaml")
25
26
  PROXY_TIMEOUT = 10_000
26
27
 
28
+ SERVICE_TYPE = settings.get("SERVICE_TYPE", "pm_cs")
29
+ PROTOCOL = settings.get("PROTOCOL", "tcp")
30
+ HOSTNAME = settings.get("HOSTNAME", "localhost")
31
+ COMMANDING_PORT = settings.get("COMMANDING_PORT", 0) # dynamically assigned by the system if 0
32
+
27
33
 
28
34
  def is_process_manager_active(timeout: float = 0.5) -> bool:
29
35
  """Checks if the Process Manager Control Server is active.
@@ -39,7 +45,7 @@ def is_process_manager_active(timeout: float = 0.5) -> bool:
39
45
  """
40
46
 
41
47
  with RegistryClient() as client:
42
- endpoint = client.get_endpoint(CTRL_SETTINGS.SERVICE_TYPE)
48
+ endpoint = client.get_endpoint(settings.SERVICE_TYPE)
43
49
 
44
50
  if endpoint is None:
45
51
  return False
@@ -394,11 +400,14 @@ class ProcessManagerController(ProcessManagerInterface):
394
400
  class ProcessManagerProxy(Proxy, ProcessManagerInterface):
395
401
  """Proxy for process management, used to connect to the Process Manager Control Server and send commands remotely."""
396
402
 
397
- def __init__(self, protocol: str = None, hostname: str = None, port: int = -1, timeout=PROXY_TIMEOUT):
398
- """Initialisation of a new Proxy for Process Management.
403
+ def __init__(
404
+ self, protocol: str = PROTOCOL, hostname: str = HOSTNAME, port: int = COMMANDING_PORT, timeout=PROXY_TIMEOUT
405
+ ):
406
+ """
407
+ Initialisation of a new Proxy for Process Management.
399
408
 
400
- If no connection details (transport protocol, hostname, and port) are not provided, these are taken from the
401
- settings file.
409
+ The connection details (transport protocol, hostname, and port) are by default taken from the
410
+ settings file. When the `port` is 0 (zero) the endpoint is retrieved from the service registry.
402
411
 
403
412
  Args:
404
413
  protocol (str): Transport protocol
@@ -406,15 +415,6 @@ class ProcessManagerProxy(Proxy, ProcessManagerInterface):
406
415
  port (int): TCP port on which the Control Server is listening for commands
407
416
  """
408
417
 
409
- if hostname is None:
410
- with RegistryClient() as reg:
411
- service = reg.discover_service(CTRL_SETTINGS.SERVICE_TYPE)
412
-
413
- if service:
414
- protocol = service.get("protocol", "tcp")
415
- hostname = service["host"]
416
- port = service["port"]
417
- else:
418
- raise RuntimeError(f"No service registered as {CTRL_SETTINGS.SERVICE_TYPE}")
418
+ endpoint = get_endpoint(settings.SERVICE_TYPE, protocol, hostname, port)
419
419
 
420
- super().__init__(connect_address(protocol, hostname, port), timeout=timeout)
420
+ super().__init__(endpoint, timeout=timeout)
@@ -1,6 +1,9 @@
1
- import logging
2
1
  from enum import Enum
3
2
 
3
+ from egse.log import logging
4
+
5
+ logger = logging.getLogger("egse.registry")
6
+
4
7
  # Default ports that are assigned to REQ-REP and PUB-SUB protocols of the registry services
5
8
  DEFAULT_RS_REQ_PORT = 4242 # Handle requests
6
9
  DEFAULT_RS_PUB_PORT = 4243 # Publish events
@@ -19,9 +22,6 @@ class MessageType(Enum):
19
22
  HEARTBEAT = b"HB" # Heartbeat/health check
20
23
 
21
24
 
22
- logger = logging.getLogger("egse.registry")
23
-
24
-
25
25
  def is_service_registry_active(timeout: float = 0.5):
26
26
  """Check if the service registry is running and active.
27
27