cgse 2025.0.7__tar.gz → 2025.0.8.dev1__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 (334) hide show
  1. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/PKG-INFO +1 -1
  2. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/getting_started.md +25 -0
  3. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/pyproject.toml +1 -1
  4. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/services.py +1 -1
  5. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/setup.py +2 -1
  6. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/pyproject.toml +1 -1
  7. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/pyproject.toml +3 -2
  8. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/confman_cs.py +1 -1
  9. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/storage_cs.py +1 -4
  10. cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_start.py +41 -0
  11. cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_status.py +81 -0
  12. cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/_stop.py +41 -0
  13. cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/cgse.py +98 -0
  14. cgse-2025.0.8.dev1/libs/cgse-core/src/scripts/services.py +49 -0
  15. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/pyproject.toml +1 -1
  16. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/pyproject.toml +8 -8
  17. cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +106 -0
  18. cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +28 -0
  19. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  20. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/pyproject.toml +1 -1
  21. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  22. cgse-2025.0.8.dev1/projects/plato/plato-spw/README.md +0 -0
  23. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-spw/pyproject.toml +1 -1
  24. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/pyproject.toml +1 -1
  25. cgse-2025.0.7/libs/cgse-core/src/scripts/cgse.py +0 -179
  26. cgse-2025.0.7/projects/generic/cgse-tools/src/scripts/cgse_plugins.py +0 -9
  27. cgse-2025.0.7/projects/generic/cgse-tools/src/scripts/cgse_service_plugins.py +0 -10
  28. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/.gitignore +0 -0
  29. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/NOTES.md +0 -0
  30. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/README.md +0 -0
  31. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/TODO.md +0 -0
  32. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/bump.py +0 -0
  33. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/conftest.py +0 -0
  34. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/custom_theme/main.html +0 -0
  35. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/dev_guide/coding_style.md +0 -0
  36. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/dev_guide/docs.md +0 -0
  37. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/dev_guide/index.md +0 -0
  38. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/dev_guide/installation.md +0 -0
  39. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/dev_guide/uv.md +0 -0
  40. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/help.md +0 -0
  41. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/images/icons/cgse-logo-blue.svg +0 -0
  42. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/images/icons/cgse-logo.svg +0 -0
  43. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/index.md +0 -0
  44. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/images/load_methods.png +0 -0
  45. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/index.md +0 -0
  46. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/settings.md +0 -0
  47. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-common/setup.md +0 -0
  48. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-coordinates/index.md +0 -0
  49. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-core/index.md +0 -0
  50. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/cgse-gui/index.md +0 -0
  51. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/libs/index.md +0 -0
  52. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/package_list.md +0 -0
  53. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/projects/cgse-tools.md +0 -0
  54. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/projects/index.md +0 -0
  55. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/projects/symetrie-hexapod.md +0 -0
  56. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/stylesheets/custom.css +0 -0
  57. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/tutorial.md +0 -0
  58. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/docs/user_guide/index.md +0 -0
  59. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/README.md +0 -0
  60. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  61. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  62. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/bits.py +0 -0
  63. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/calibration.py +0 -0
  64. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/command.py +0 -0
  65. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/config.py +0 -0
  66. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/control.py +0 -0
  67. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/decorators.py +0 -0
  68. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/device.py +0 -0
  69. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/env.py +0 -0
  70. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/exceptions.py +0 -0
  71. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/hk.py +0 -0
  72. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/metrics.py +0 -0
  73. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/mixin.py +0 -0
  74. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/monitoring.py +0 -0
  75. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/observer.py +0 -0
  76. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/obsid.py +0 -0
  77. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/persistence.py +0 -0
  78. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/plugin.py +0 -0
  79. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/process.py +0 -0
  80. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/protocol.py +0 -0
  81. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/proxy.py +0 -0
  82. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/reload.py +0 -0
  83. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/resource.py +0 -0
  84. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/response.py +0 -0
  85. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/services.yaml +0 -0
  86. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/settings.py +0 -0
  87. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/settings.yaml +0 -0
  88. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/state.py +0 -0
  89. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/system.py +0 -0
  90. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/version.py +0 -0
  91. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  92. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/conftest.py +0 -0
  93. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  94. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  95. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  96. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  97. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  98. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  99. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  100. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  101. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  102. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  103. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  104. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  105. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  106. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  107. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  108. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  109. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  110. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  111. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  112. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  113. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  114. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  115. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  116. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  117. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  118. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  119. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  120. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  121. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  122. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  123. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  124. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  125. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/dummy.py +0 -0
  126. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  127. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  128. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_bits.py +0 -0
  129. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_command.py +0 -0
  130. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_config.py +0 -0
  131. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_control.py +0 -0
  132. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_decorators.py +0 -0
  133. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_device.py +0 -0
  134. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_env.py +0 -0
  135. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_fixtures.py +0 -0
  136. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_hk.py +0 -0
  137. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_resource.py +0 -0
  138. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_response.py +0 -0
  139. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_settings.py +0 -0
  140. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_setup.py +0 -0
  141. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-common/tests/test_system.py +0 -0
  142. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/README.md +0 -0
  143. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  144. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  145. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  146. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  147. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  148. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  149. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  150. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  151. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  152. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  153. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/.envrc.disabled +0 -0
  154. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/README.md +0 -0
  155. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  156. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  157. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  158. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  159. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  160. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  161. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  162. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  163. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  164. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  165. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  166. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  167. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  168. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  169. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  170. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/conftest.py +0 -0
  171. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  172. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  173. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  174. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/fixtures/services.py +0 -0
  175. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  176. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_logger.py +0 -0
  177. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-core/tests/test_settings_core.py +0 -0
  178. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/README.md +0 -0
  179. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  180. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  181. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  182. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  183. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  184. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  185. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  186. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  187. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  188. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  189. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  190. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  191. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  192. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  193. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  194. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  195. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  196. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  197. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  198. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  199. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  200. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  201. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  202. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  203. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  204. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  205. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  206. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  207. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  208. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  209. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  210. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  211. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  212. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  213. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  214. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  215. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  216. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  217. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  218. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  219. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  220. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  221. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  222. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  223. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  224. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  225. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  226. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  227. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  228. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  229. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  230. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  231. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  232. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  233. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  234. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  235. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  236. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  237. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  238. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  239. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  240. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  241. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  242. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  243. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  244. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  245. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  246. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  247. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  248. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  249. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  250. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  251. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  252. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  253. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  254. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  255. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  256. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  257. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  258. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  259. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  260. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  261. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  262. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  263. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  264. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  265. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  266. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  267. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  268. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  269. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  270. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  271. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  272. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  273. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  274. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  275. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  276. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  277. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  278. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  279. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  280. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  281. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  282. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  283. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  284. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  285. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  286. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  287. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  288. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  289. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  290. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  291. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  292. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  293. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  294. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  295. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  296. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  297. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  298. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  299. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/mkdocs.yml +0 -0
  300. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/README.md +0 -0
  301. /cgse-2025.0.7/projects/plato/plato-hdf5/README.md → /cgse-2025.0.8.dev1/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  302. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  303. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/README.md +0 -0
  304. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  305. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  306. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  307. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  308. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  309. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  310. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  311. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  312. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  313. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  314. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  315. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  316. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  317. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  318. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  319. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  320. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  321. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  322. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  323. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  324. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  325. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  326. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  327. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  328. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/generic/symetrie-hexapod/src/scripts/cgse_service_plugins.py +0 -0
  329. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/README.md +0 -0
  330. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  331. {cgse-2025.0.7/projects/plato/plato-spw → cgse-2025.0.8.dev1/projects/plato/plato-hdf5}/README.md +0 -0
  332. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  333. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  334. {cgse-2025.0.7 → cgse-2025.0.8.dev1}/ruff.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 2025.0.7
3
+ Version: 2025.0.8.dev1
4
4
  Summary: Generic Common-EGSE: Commanding and monitoring lab equipment
5
5
  Author-email: Rik Huygen <rik.huygen@kuleuven.be>, Sara Regibo <sara.regibo@kuleuven.be>
6
6
  License: MIT
@@ -89,3 +89,28 @@ use the '--full' flag to get a more detailed report, '--doc' for help on the var
89
89
 
90
90
  The folders that do not exist (and are not None) can be created by adding the option `--mkdir` to the above
91
91
  command.
92
+
93
+ ## Check your Settings
94
+
95
+ Settings contains the static configuration of your system, test setup, equipment, including the System Under Test
96
+ (SUT). You can test your settings with the command below. Let's first also set the `ARIEL_LOCALSETTINGS` environment
97
+ variables:
98
+
99
+ ```
100
+ $ export ARIEL_LOCAL_SETTINGS=~/cgse/local_settings_ariel_vacuum_lab.yaml
101
+ $ py -m egse.settings
102
+ Settings
103
+ ├── PACKAGES
104
+ │ └── CGSE_COMMON: Common classes, functions, decorators, etc. for the CGSE
105
+ ├── SITE
106
+ │ ├── ID: VACUUM_LAB
107
+ │ ├── SSH_SERVER: localhost
108
+ │ └── SSH_PORT: 22
109
+ └── PROCESS
110
+ └── METRICS_INTERVAL: 10
111
+ Memoized locations:
112
+ ['/Users/rik/tmp/gettings-started/venv/lib/python3.9/site-packages/cgse_common/settings.yaml',
113
+ '/Users/rik/cgse/local_settings_ariel_vacuum_lab.yaml']
114
+ ```
115
+ These Settings will grow when you add more packages to your installation or when you define settings yourself in the
116
+ local settings file.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -25,7 +25,7 @@ LOGGER = logging.getLogger(__name__)
25
25
 
26
26
  HERE = Path(__file__).parent
27
27
 
28
- SERVICE_SETTINGS = Settings.load(filename=str(HERE / "services.yaml"))
28
+ SERVICE_SETTINGS = Settings.load(location=HERE, filename="services.yaml")
29
29
 
30
30
 
31
31
  class ServiceCommand(ClientServerCommand):
@@ -266,7 +266,8 @@ def _get_attribute(self, name, default):
266
266
  def _parse_filename_for_setup_id(filename: str):
267
267
  """Returns the setup_id from the filename, or None when no match was found."""
268
268
 
269
- match = re.search(r"SETUP_([^_]+)_(\d+)", filename)
269
+ # match = re.search(r"SETUP_([^_]+)_(\d+)", filename)
270
+ match = re.search(r"SETUP_(\w+)_([\d]{5})_([\d]{6})_([\d]{6})\.yaml", filename)
270
271
 
271
272
  # TypeError when match is None
272
273
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "Reference Frames and Coordinate Transofrmations for CGSE"
5
5
  authors = [
6
6
  {name = "Rik Huygen", email = "rik.huygen@kuleuven.be"},
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-core"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -26,6 +26,7 @@ dependencies = [
26
26
  "prometheus-client>=0.21.1",
27
27
  "pyzmq == 23.2.1",
28
28
  "rich>=13.9.4",
29
+ "typer>=0.15.1",
29
30
  ]
30
31
 
31
32
  [project.scripts]
@@ -34,7 +35,7 @@ sm_cs = 'egse.storage.storage_cs:cli'
34
35
  cm_cs = 'egse.confman.confman_cs:cli'
35
36
  pm_cs = 'egse.procman.procman_cs:cli'
36
37
 
37
- cgse = 'scripts.cgse:cli'
38
+ cgse = 'scripts.cgse:app'
38
39
 
39
40
  [project.entry-points."cgse.version"]
40
41
  cgse-core = 'egse'
@@ -153,7 +153,7 @@ def status():
153
153
  import rich
154
154
  from egse.confman import get_status
155
155
 
156
- rich.print(get_status())
156
+ rich.print(get_status(), end='')
157
157
 
158
158
 
159
159
  @cli.command()
@@ -17,7 +17,6 @@ from apscheduler.schedulers.background import BackgroundScheduler
17
17
  from prometheus_client import start_http_server
18
18
  from pytz import utc
19
19
 
20
- from egse.bits import humanize_bytes
21
20
  from egse.control import ControlServer
22
21
  from egse.env import get_data_storage_location
23
22
  from egse.env import get_site_id
@@ -26,8 +25,6 @@ from egse.settings import Settings
26
25
  from egse.storage import StorageProtocol
27
26
  from egse.storage import StorageProxy
28
27
  from egse.storage import cycle_daily_files
29
- from egse.storage import is_storage_manager_active
30
- from egse.system import replace_environment_variable
31
28
 
32
29
  # Use explicit name here otherwise the logger will probably be called __main__
33
30
 
@@ -145,7 +142,7 @@ def status(full):
145
142
  import rich
146
143
  from egse.storage import get_status
147
144
 
148
- rich.print(get_status(full=full))
145
+ rich.print(get_status(full=full), end='')
149
146
 
150
147
 
151
148
  def check_prerequisites():
@@ -0,0 +1,41 @@
1
+ import subprocess
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ import rich
6
+
7
+
8
+ def start_log_cs():
9
+ rich.print("Starting the logging core service...")
10
+
11
+ out = open(Path('~/.log_cs.start.out').expanduser(), 'w')
12
+
13
+ subprocess.Popen(
14
+ [sys.executable, '-m', 'egse.logger.log_cs', 'start'],
15
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
16
+ close_fds=True
17
+ )
18
+
19
+
20
+ def start_sm_cs():
21
+ rich.print("Starting the storage manager core service...")
22
+
23
+ out = open(Path('~/.sm_cs.start.out').expanduser(), 'w')
24
+
25
+ subprocess.Popen(
26
+ [sys.executable, '-m', 'egse.storage.storage_cs', 'start'],
27
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
28
+ close_fds=True
29
+ )
30
+
31
+
32
+ def start_cm_cs():
33
+ rich.print("Starting the configuration manager core service...")
34
+
35
+ out = open(Path('~/.cm_cs.start.out').expanduser(), 'w')
36
+
37
+ subprocess.Popen(
38
+ [sys.executable, '-m', 'egse.confman.confman_cs', 'start'],
39
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
40
+ close_fds=True
41
+ )
@@ -0,0 +1,81 @@
1
+ import asyncio
2
+ # import subprocess
3
+ import sys
4
+
5
+ import rich
6
+
7
+
8
+ async def run_all_status():
9
+ tasks = [
10
+ status_log_cs(),
11
+ status_sm_cs(),
12
+ status_cm_cs(),
13
+ ]
14
+
15
+ await asyncio.gather(*tasks)
16
+
17
+
18
+ async def status_log_cs():
19
+
20
+ proc = await asyncio.create_subprocess_exec(
21
+ sys.executable, '-m', 'egse.logger.log_cs', 'status',
22
+ stdout=asyncio.subprocess.PIPE,
23
+ stderr=asyncio.subprocess.PIPE
24
+ )
25
+
26
+ stdout, stderr = await proc.communicate()
27
+
28
+ # proc = subprocess.Popen(
29
+ # [sys.executable, '-m', 'egse.logger.log_cs', 'status'],
30
+ # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
31
+ # )
32
+ #
33
+ # stdout, stderr = proc.communicate()
34
+
35
+ rich.print(stdout.decode(), end='')
36
+ if stderr:
37
+ rich.print(f"[red]{stderr.decode()}[/]")
38
+
39
+
40
+ async def status_sm_cs():
41
+
42
+ proc = await asyncio.create_subprocess_exec(
43
+ sys.executable, '-m', 'egse.storage.storage_cs', 'status',
44
+ stdout=asyncio.subprocess.PIPE,
45
+ stderr=asyncio.subprocess.PIPE
46
+ )
47
+
48
+ stdout, stderr = await proc.communicate()
49
+
50
+ # proc = subprocess.Popen(
51
+ # [sys.executable, '-m', 'egse.storage.storage_cs', 'status'],
52
+ # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
53
+ # )
54
+ #
55
+ # stdout, stderr = proc.communicate()
56
+
57
+ rich.print(stdout.decode(), end='')
58
+ if stderr:
59
+ rich.print(f"[red]{stderr.decode()}[/]")
60
+
61
+
62
+ async def status_cm_cs():
63
+
64
+ proc = await asyncio.create_subprocess_exec(
65
+ sys.executable, '-m', 'egse.confman.confman_cs', 'status',
66
+ stdout=asyncio.subprocess.PIPE,
67
+ stderr=asyncio.subprocess.PIPE
68
+ )
69
+
70
+ stdout, stderr = await proc.communicate()
71
+
72
+ # proc = subprocess.Popen(
73
+ # [sys.executable, '-m', 'egse.confman.confman_cs', 'status'],
74
+ # stdout=subprocess.PIPE, stderr=subprocess.PIPE,
75
+ # )
76
+ #
77
+ # stdout, stderr = proc.communicate()
78
+
79
+ rich.print(stdout.decode(), end='')
80
+ if stderr:
81
+ rich.print(f"[red]{stderr.decode()}[/]")
@@ -0,0 +1,41 @@
1
+ import subprocess
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ import rich
6
+
7
+
8
+ def stop_log_cs():
9
+ rich.print("Terminating the logging core service...")
10
+
11
+ out = open(Path('~/.log_cs.stop.out').expanduser(), 'w')
12
+
13
+ subprocess.Popen(
14
+ [sys.executable, '-m', 'egse.logger.log_cs', 'stop'],
15
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
16
+ close_fds=True
17
+ )
18
+
19
+
20
+ def stop_sm_cs():
21
+ rich.print("Terminating the storage manager core service...")
22
+
23
+ out = open(Path('~/.sm_cs.stop.out').expanduser(), 'w')
24
+
25
+ subprocess.Popen(
26
+ [sys.executable, '-m', 'egse.storage.storage_cs', 'stop'],
27
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
28
+ close_fds=True
29
+ )
30
+
31
+
32
+ def stop_cm_cs():
33
+ rich.print("Terminating the configuration manager core service...")
34
+
35
+ out = open(Path('~/.cm_cs.stop.out').expanduser(), 'w')
36
+
37
+ subprocess.Popen(
38
+ [sys.executable, '-m', 'egse.confman.confman_cs', 'stop'],
39
+ stdout=out, stderr=out, stdin=subprocess.DEVNULL,
40
+ close_fds=True
41
+ )
@@ -0,0 +1,98 @@
1
+ """
2
+ This script is as an administration script for the CGSE. The script provides commands to start, stop, and
3
+ get the status of the core services and any other service that is registered as a plugin.
4
+
5
+ The following main commands have been implemented:
6
+
7
+ $ cgse version
8
+
9
+ Prints the installed version of the cgse-core and any other package that is registered under
10
+ the entry points group 'cgse.version'.
11
+
12
+ $ cgse core {start,stop,status}
13
+
14
+ Starts, stops, or prints the status of the core services.
15
+
16
+ Other main commands can be added from external packages when they are provided as entry points with
17
+ the group name 'cgse.command.plugins'.
18
+
19
+ Commands can be added as single commands or as a group containing further sub-commands. To add a group,
20
+ the entry point shall contain 'group' in its extras.
21
+ """
22
+
23
+ import rich
24
+ import typer
25
+ from rich.console import Console
26
+ from rich.traceback import Traceback
27
+
28
+ from egse.plugin import entry_points
29
+ from scripts import services
30
+
31
+ app = typer.Typer(add_completion=True)
32
+ app.add_typer(services.app, name="core")
33
+
34
+
35
+ @app.command()
36
+ def version():
37
+ """Prints the version of the cgse-core and other registered packages."""
38
+ from egse.version import get_version_installed
39
+
40
+ # if installed_version := get_version_installed("cgse-core"):
41
+ # rich.print(f"CGSE-CORE installed version = [bold default]{installed_version}[/]")
42
+
43
+ for ep in sorted(entry_points("cgse.version"), key=lambda x: x.name):
44
+ if installed_version := get_version_installed(ep.name):
45
+ rich.print(f"{ep.name.upper()} installed version = [bold default]{installed_version}[/]")
46
+
47
+
48
+ def broken_command(name: str, module: str, exc: Exception):
49
+ """
50
+ Rather than completely crash the CLI when a broken plugin is loaded, this
51
+ function provides a modified help message informing the user that the plugin is
52
+ broken and could not be loaded. If the user executes the plugin and specifies
53
+ the `--traceback` option a traceback is reported showing the exception the
54
+ plugin loader encountered.
55
+ """
56
+ def broken_plugin(traceback: bool = False):
57
+ rich.print(f"[red]ERROR: Couldn't load this plugin command: {name} ⟶ reason: {exc}[/]")
58
+ if traceback:
59
+ console = Console(width=100)
60
+ tb = Traceback.from_exception(type(exc), exc, exc.__traceback__)
61
+ console.print(tb)
62
+
63
+ broken_plugin.__doc__ = f"ERROR: Couldn't load plugin '{name}' from {module}"
64
+ broken_plugin.__name__ = name
65
+ return broken_plugin
66
+
67
+
68
+ # Load the known plugins for the `cgse` command. Plugins are added as commands to the `cgse`.
69
+
70
+ for ep in entry_points("cgse.command.plugins"):
71
+ try:
72
+ if not ep.extras or 'command' in ep.extras:
73
+ app.command()(ep.load())
74
+ elif 'group' in ep.extras:
75
+ app.add_typer(ep.load(), name=ep.name)
76
+ else:
77
+ rich.print(f"\n[red]ERROR: don't know what to do with {ep.extras} for {ep.name}, command not added.[/]\n")
78
+ except Exception as exc:
79
+ app.command()(broken_command(ep.name, ep.module, exc))
80
+
81
+
82
+ for ep in entry_points("cgse.service.plugins"):
83
+ try:
84
+ app.add_typer(ep.load(), name=ep.name)
85
+ except Exception as exc:
86
+ app.command()(broken_command(ep.name, ep.module, exc))
87
+
88
+
89
+ @app.callback(no_args_is_help=True, invoke_without_command=True)
90
+ def main():
91
+ """
92
+ The main cgse command to inspect, configure, monitor the core services
93
+ and device control servers.
94
+ """
95
+
96
+
97
+ if __name__ == "__main__":
98
+ app()
@@ -0,0 +1,49 @@
1
+ import asyncio
2
+
3
+ import rich
4
+ import typer
5
+
6
+ app = typer.Typer(
7
+ name="core",
8
+ help="handle core services: start, stop, status",
9
+ no_args_is_help=True
10
+ )
11
+
12
+
13
+ @app.command(name="start")
14
+ def start_core_services():
15
+ """Start the core services in the background."""
16
+ from scripts._start import start_log_cs, start_sm_cs, start_cm_cs
17
+
18
+ rich.print("[green]Starting the core services...[/]")
19
+
20
+ start_log_cs()
21
+ start_sm_cs()
22
+ start_cm_cs()
23
+
24
+
25
+ @app.command(name="stop")
26
+ def stop_core_services():
27
+ """Stop the core services."""
28
+ from scripts._stop import stop_log_cs, stop_sm_cs, stop_cm_cs
29
+
30
+ rich.print("[green]Terminating the core services...[/]")
31
+
32
+ stop_cm_cs()
33
+ stop_sm_cs()
34
+ stop_log_cs()
35
+
36
+
37
+ @app.command(name="status")
38
+ def status_core_services():
39
+ """Print the status of the core services."""
40
+ # from scripts._status import status_log_cs, status_sm_cs, status_cm_cs
41
+
42
+ rich.print("[green]Status of the core services...[/]")
43
+
44
+ from scripts._status import run_all_status
45
+ asyncio.run(run_all_status())
46
+
47
+ # status_log_cs()
48
+ # status_sm_cs()
49
+ # status_cm_cs()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-gui"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "GUI components for CGSE"
5
5
  authors = [
6
6
  {name = "Rik Huygen", email = "rik.huygen@kuleuven.be"},
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-tools"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "Tools for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -33,13 +33,13 @@ cgse-status = "egse.tools.status:main"
33
33
  [project.entry-points."cgse.version"]
34
34
  cgse-tools = 'egse.tools'
35
35
 
36
- # Examples of how to provide plugins for the `cgse` command
36
+ # plugins for the `cgse` command, add [group] when the command has sub-commands
37
37
 
38
- [project.entry-points."cgse.plugins"]
39
- foo = 'scripts.cgse_plugins:foo'
40
-
41
- [project.entry-points."cgse.service.plugins"]
42
- xxx = 'scripts.cgse_service_plugins:xxx'
38
+ [project.entry-points."cgse.command.plugins"]
39
+ top = 'cgse_tools.cgse_commands:top'
40
+ show = 'cgse_tools.cgse_commands:show[group]'
41
+ check = 'cgse_tools.cgse_commands:check[group]'
42
+ dev-x = 'cgse_tools.cgse_services:dev_x[group]'
43
43
 
44
44
  [tool.hatch.build.targets.sdist]
45
45
  exclude = [
@@ -49,7 +49,7 @@ exclude = [
49
49
  ]
50
50
 
51
51
  [tool.hatch.build.targets.wheel]
52
- packages = ["src/egse"]
52
+ packages = ["src/egse", "src/scripts"]
53
53
 
54
54
  [tool.ruff]
55
55
  line-length = 120
@@ -0,0 +1,106 @@
1
+ import re
2
+ import subprocess
3
+ import sys
4
+ from pathlib import Path
5
+ from typing import Annotated
6
+
7
+ import rich
8
+ import typer
9
+
10
+ app = typer.Typer()
11
+
12
+
13
+ @app.command()
14
+ def top():
15
+ """
16
+ A top-like interface for core services and device control servers.
17
+
18
+ Not yet implemented.
19
+ """
20
+ print("This fancy top is not yet implemented.")
21
+
22
+
23
+ show = typer.Typer(help="Show information about settings, environment, setup, ...", no_args_is_help=True)
24
+
25
+
26
+ @show.command(name="settings")
27
+ def show_settings():
28
+ proc = subprocess.Popen(
29
+ [sys.executable, "-m", "egse.settings"],
30
+ stdout=subprocess.PIPE,
31
+ stderr=subprocess.PIPE
32
+ )
33
+ stdout, stderr = proc.communicate()
34
+ rich.print(stdout.decode(), end='')
35
+ if stderr:
36
+ rich.print(f"[red]{stderr.decode()}[/]")
37
+
38
+
39
+ @show.command(name="env")
40
+ def show_env(
41
+ mkdir: Annotated[bool, typer.Option(help="Create the missing folder")] = None,
42
+ full: Annotated[bool, typer.Option(help="Provide additional info")] = None,
43
+ doc: Annotated[bool, typer.Option(help="Provide documentation on environment variables")] = None,
44
+ ):
45
+ options = [opt for opt, flag in [("--mkdir", mkdir), ("--full", full), ("--doc", doc)] if flag]
46
+
47
+ cmd = [sys.executable, "-m", "egse.env"]
48
+ cmd += options if options else []
49
+
50
+ proc = subprocess.Popen(
51
+ cmd,
52
+ stdout=subprocess.PIPE,
53
+ stderr=subprocess.PIPE
54
+ )
55
+ stdout, stderr = proc.communicate()
56
+ rich.print(stdout.decode(), end='')
57
+ if stderr:
58
+ rich.print(f"[red]{stderr.decode()}[/]")
59
+
60
+
61
+ check = typer.Typer(help="Check installation, settings, required files, etc.", no_args_is_help=True)
62
+
63
+
64
+ @check.command(name="setups")
65
+ def check_setups():
66
+ """Perform a number of checks on the SETUP files."""
67
+
68
+ # What can we check with respect to the setups?
69
+ #
70
+ # - CONF_DATA_LOCATION
71
+
72
+ from egse.env import get_conf_data_location
73
+ from egse.env import get_site_id
74
+ from egse.config import find_files
75
+
76
+ any_errors = 0
77
+
78
+ conf_data_location = get_conf_data_location()
79
+ site_id = get_site_id()
80
+
81
+ # ---------- check if the <PROJECT>_CONF_DATA_LOCATION is set
82
+
83
+ if not conf_data_location:
84
+ any_errors += 1
85
+ rich.print("[red]The location of the configuration data can not be determined, check your environment.[/]")
86
+
87
+ if not Path(conf_data_location).exists():
88
+ any_errors += 1
89
+ rich.print(f"[red]The location of the configuration data doesn't exist: {conf_data_location!s}[/]")
90
+
91
+ # ---------- check if there is at least one SETUP in the configuration data folder
92
+
93
+ files = list(find_files("SETUP*.yaml", root=conf_data_location))
94
+
95
+ if not files:
96
+ any_errors += 1
97
+ rich.print(f"[red]No SETUP files were found at {conf_data_location}[/]")
98
+
99
+ regex = re.compile(f"SETUP_{site_id}_00000_.*.yaml")
100
+
101
+ if not any(True for file in files if regex.search(str(file))):
102
+ any_errors += 1
103
+ rich.print(f"[red]The is no Zero SETUP for {site_id} in {conf_data_location}[/]")
104
+
105
+ if not any_errors:
106
+ rich.print("[green]everything seems to be ok.[/]")
@@ -0,0 +1,28 @@
1
+ # An example plugin for the `cgse {start,stop,status} service` command from `cgse-core`.
2
+ #
3
+ import rich
4
+ import typer
5
+
6
+ dev_x = typer.Typer(
7
+ name="dev-x",
8
+ help="device-x is an imaginary device that serves as an example",
9
+ no_args_is_help=True
10
+ )
11
+
12
+
13
+ @dev_x.command(name="start")
14
+ def start_dev_x():
15
+ """Start the dev-x service."""
16
+ rich.print("Starting service dev_x")
17
+
18
+
19
+ @dev_x.command(name="stop")
20
+ def stop_dev_x():
21
+ """Stop the dev-x service."""
22
+ rich.print("Terminating service dev_x")
23
+
24
+
25
+ @dev_x.command(name="status")
26
+ def status_dev_x():
27
+ """Print status information on the dev-x service."""
28
+ rich.print("Printing the status of dev_x")
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "symetrie-hexapod"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "Symetrie Hexapod implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-fits"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "FITS Persistence implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-hdf5"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "HDF5 Persistence sub-class for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
File without changes
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-spw"
3
- version = "2025.0.7"
3
+ version = "2025.0.8-dev.1"
4
4
  description = "SpaceWire implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}