cgse 0.17.2__tar.gz → 0.17.4__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 (600) hide show
  1. {cgse-0.17.2 → cgse-0.17.4}/CHANGELOG.md +20 -3
  2. {cgse-0.17.2 → cgse-0.17.4}/PKG-INFO +1 -1
  3. {cgse-0.17.2 → cgse-0.17.4/docs/admin_guide}/make-a-release.md +43 -4
  4. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/pyproject.toml +1 -1
  5. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/hk.py +2 -2
  6. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/log.py +8 -0
  7. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/socketdevice.py +5 -4
  8. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/system.py +5 -0
  9. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/pyproject.toml +3 -3
  10. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/__init__.py +229 -0
  11. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +91 -0
  12. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +118 -0
  13. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +16 -25
  14. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/point.py +833 -0
  15. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +203 -0
  16. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/reference_frame.py +1417 -0
  17. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +828 -0
  18. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/rotation_matrix.py +95 -0
  19. cgse-0.17.4/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +501 -0
  20. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_avoidance.py +2 -2
  21. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_coordinates_plot.py +5 -5
  22. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +13 -9
  23. cgse-0.17.4/libs/cgse-coordinates/tests/test_point.py +90 -0
  24. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_reference_frames.py +134 -128
  25. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_refmodel.py +39 -27
  26. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/pyproject.toml +1 -1
  27. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/_stop.py +1 -2
  28. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/control.py +2 -1
  29. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/dummy.py +17 -8
  30. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/procman/procman_cs.py +1 -1
  31. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/procman/procman_ui.py +5 -2
  32. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/registry/client.py +8 -4
  33. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/registry/server.py +2 -2
  34. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/fixtures/services.py +9 -3
  35. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_connect.py +5 -4
  36. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_logger.py +5 -0
  37. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/pyproject.toml +1 -1
  38. {cgse-0.17.2 → cgse-0.17.4}/mkdocs.yml +2 -0
  39. {cgse-0.17.2 → cgse-0.17.4}/overrides/.icons/custom/gear.svg +92 -92
  40. cgse-0.17.4/projects/ariel/ariel-facility/README.MD +89 -0
  41. cgse-0.17.4/projects/ariel/ariel-facility/pyproject.toml +63 -0
  42. cgse-0.17.4/projects/ariel/ariel-facility/src/ariel_facility/cgse_explore.py +19 -0
  43. cgse-0.17.4/projects/ariel/ariel-facility/src/ariel_facility/cgse_services.py +46 -0
  44. cgse-0.17.4/projects/ariel/ariel-facility/src/ariel_facility/settings.yaml +20 -0
  45. cgse-0.17.4/projects/ariel/ariel-facility/src/egse/ariel/facility/database.py +214 -0
  46. cgse-0.17.4/projects/ariel/ariel-facility/src/egse/ariel/facility/hk.py +341 -0
  47. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/README.md +1 -1
  48. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/pyproject.toml +3 -3
  49. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/ariel_tcu/settings.yaml +4 -0
  50. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/__init__.py +12 -7
  51. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.py +108 -16
  52. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cmd_utils.py +65 -8
  53. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cs.py +56 -32
  54. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_devif.py +27 -0
  55. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_protocol.py +2 -2
  56. cgse-0.17.4/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_ui.py +693 -0
  57. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/pyproject.toml +1 -1
  58. cgse-0.17.4/projects/generic/digilent/README.md +6 -0
  59. cgse-0.17.4/projects/generic/digilent/pyproject.toml +81 -0
  60. cgse-0.17.4/projects/generic/digilent/src/digilent/cgse_explore.py +19 -0
  61. cgse-0.17.4/projects/generic/digilent/src/digilent/cgse_services.py +59 -0
  62. cgse-0.17.4/projects/generic/digilent/src/digilent/settings.yaml +23 -0
  63. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/digilent.py +2809 -0
  64. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/digilent_devif.py +278 -0
  65. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/__init__.py +21 -0
  66. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.py +71 -0
  67. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.yaml +43 -0
  68. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_cs.py +335 -0
  69. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_devif.py +14 -0
  70. cgse-0.17.4/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_protocol.py +148 -0
  71. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  72. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +2 -2
  73. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  74. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  75. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +1 -1
  76. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +47 -45
  77. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +2 -2
  78. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +1 -1
  79. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +1 -1
  80. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +1 -1
  81. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +1 -1
  82. cgse-0.17.4/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +60 -0
  83. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-fits/pyproject.toml +1 -1
  84. cgse-0.17.4/projects/plato/plato-hdf5/README.md +0 -0
  85. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  86. cgse-0.17.4/projects/plato/plato-spw/README.md +0 -0
  87. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-spw/pyproject.toml +1 -1
  88. {cgse-0.17.2 → cgse-0.17.4}/pyproject.toml +1 -1
  89. cgse-0.17.2/.pylintrc +0 -5
  90. cgse-0.17.2/duckdb_metrics.db +0 -0
  91. cgse-0.17.2/duckdb_metrics.db.wal +0 -0
  92. cgse-0.17.2/justfile +0 -69
  93. cgse-0.17.2/libs/cgse-common/justfile +0 -20
  94. cgse-0.17.2/libs/cgse-common/service_registry.db +0 -0
  95. cgse-0.17.2/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -442
  96. cgse-0.17.2/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -596
  97. cgse-0.17.2/libs/cgse-common/src/egse/ratelimit.py +0 -275
  98. cgse-0.17.2/libs/cgse-common/tests/test_ratelimit.py +0 -365
  99. cgse-0.17.2/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -16
  100. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -536
  101. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -99
  102. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -127
  103. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -707
  104. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -191
  105. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -1251
  106. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -720
  107. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -82
  108. cgse-0.17.2/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -437
  109. cgse-0.17.2/libs/cgse-coordinates/tests/test_point.py +0 -90
  110. cgse-0.17.2/libs/cgse-core/service_registry.db +0 -0
  111. cgse-0.17.2/libs/cgse-core/service_registry.db-shm +0 -0
  112. cgse-0.17.2/libs/cgse-core/service_registry.db-wal +0 -0
  113. cgse-0.17.2/libs/cgse-core/src/egse/async_control.py +0 -1085
  114. cgse-0.17.2/libs/cgse-core/src/egse/async_control_claude.py +0 -807
  115. cgse-0.17.2/libs/cgse-core/src/egse/confman/confman_acs.py +0 -35
  116. cgse-0.17.2/libs/cgse-core/src/egse/metricshub/server.py +0 -271
  117. cgse-0.17.2/libs/cgse-core/src/egse/notifyhub/test.py +0 -303
  118. cgse-0.17.2/libs/cgse-core/tests/fixtures/log_cs.start.out +0 -13
  119. cgse-0.17.2/libs/cgse-core/tests/marimo/intro.py +0 -116
  120. cgse-0.17.2/libs/cgse-core/tests/simple_server.py +0 -135
  121. cgse-0.17.2/libs/cgse-core/tests/test_async_control.py +0 -68
  122. cgse-0.17.2/libs/cgse-core/tests/test_proxy.py +0 -16
  123. cgse-0.17.2/projects/generic/keithley-tempcontrol/justfile +0 -25
  124. cgse-0.17.2/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  125. cgse-0.17.2/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -3
  126. cgse-0.17.2/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -53
  127. cgse-0.17.2/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -60
  128. cgse-0.17.2/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -252
  129. cgse-0.17.2/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -15
  130. cgse-0.17.2/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -12
  131. cgse-0.17.2/scratch/advanced-process-monitoring.py +0 -111
  132. cgse-0.17.2/scratch/live-process-monitoring.py +0 -67
  133. cgse-0.17.2/scratch/match-case.py +0 -41
  134. cgse-0.17.2/scratch/mock-version.py +0 -3
  135. cgse-0.17.2/scratch/processes.json +0 -7680
  136. cgse-0.17.2/scratch/simple-process-monitoring.py +0 -72
  137. cgse-0.17.2/scratch/test_version_behavior.py +0 -35
  138. cgse-0.17.2/scratch/understanding-the-mocking-library.py +0 -82
  139. cgse-0.17.2/scratch/understanding_the_with_statement.py +0 -37
  140. cgse-0.17.2/service_registry.db +0 -0
  141. cgse-0.17.2/test_service_registry.db +0 -0
  142. {cgse-0.17.2 → cgse-0.17.4}/.env.example +0 -0
  143. {cgse-0.17.2 → cgse-0.17.4}/.github/workflows/ruff-format-check.yaml +0 -0
  144. {cgse-0.17.2 → cgse-0.17.4}/.gitignore +0 -0
  145. {cgse-0.17.2 → cgse-0.17.4}/README.md +0 -0
  146. {cgse-0.17.2 → cgse-0.17.4}/bump.py +0 -0
  147. {cgse-0.17.2 → cgse-0.17.4}/conftest.py +0 -0
  148. {cgse-0.17.2 → cgse-0.17.4}/docs/api/bits.md +0 -0
  149. {cgse-0.17.2 → cgse-0.17.4}/docs/api/calibration.md +0 -0
  150. {cgse-0.17.2 → cgse-0.17.4}/docs/api/command.md +0 -0
  151. {cgse-0.17.2 → cgse-0.17.4}/docs/api/config.md +0 -0
  152. {cgse-0.17.2 → cgse-0.17.4}/docs/api/control.md +0 -0
  153. {cgse-0.17.2 → cgse-0.17.4}/docs/api/counter.md +0 -0
  154. {cgse-0.17.2 → cgse-0.17.4}/docs/api/decorators.md +0 -0
  155. {cgse-0.17.2 → cgse-0.17.4}/docs/api/device.md +0 -0
  156. {cgse-0.17.2 → cgse-0.17.4}/docs/api/dicts.md +0 -0
  157. {cgse-0.17.2 → cgse-0.17.4}/docs/api/dummy.md +0 -0
  158. {cgse-0.17.2 → cgse-0.17.4}/docs/api/env.md +0 -0
  159. {cgse-0.17.2 → cgse-0.17.4}/docs/api/exceptions.md +0 -0
  160. {cgse-0.17.2 → cgse-0.17.4}/docs/api/heartbeat.md +0 -0
  161. {cgse-0.17.2 → cgse-0.17.4}/docs/api/hk.md +0 -0
  162. {cgse-0.17.2 → cgse-0.17.4}/docs/api/index.md +0 -0
  163. {cgse-0.17.2 → cgse-0.17.4}/docs/api/listener.md +0 -0
  164. {cgse-0.17.2 → cgse-0.17.4}/docs/api/metrics.md +0 -0
  165. {cgse-0.17.2 → cgse-0.17.4}/docs/api/mixin.md +0 -0
  166. {cgse-0.17.2 → cgse-0.17.4}/docs/api/monitoring.md +0 -0
  167. {cgse-0.17.2 → cgse-0.17.4}/docs/api/observer.md +0 -0
  168. {cgse-0.17.2 → cgse-0.17.4}/docs/api/obsid.md +0 -0
  169. {cgse-0.17.2 → cgse-0.17.4}/docs/api/persistence.md +0 -0
  170. {cgse-0.17.2 → cgse-0.17.4}/docs/api/plugin.md +0 -0
  171. {cgse-0.17.2 → cgse-0.17.4}/docs/api/process.md +0 -0
  172. {cgse-0.17.2 → cgse-0.17.4}/docs/api/reload.md +0 -0
  173. {cgse-0.17.2 → cgse-0.17.4}/docs/api/settings.md +0 -0
  174. {cgse-0.17.2 → cgse-0.17.4}/docs/api/setup.md +0 -0
  175. {cgse-0.17.2 → cgse-0.17.4}/docs/api/system.md +0 -0
  176. {cgse-0.17.2 → cgse-0.17.4}/docs/custom_theme/main.html +0 -0
  177. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/coding_style.md +0 -0
  178. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/docs.md +0 -0
  179. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/dotenv.md +0 -0
  180. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/index.md +0 -0
  181. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/installation.md +0 -0
  182. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/monitoring.md +0 -0
  183. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/monorepo.md +0 -0
  184. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/nox.md +0 -0
  185. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/plugins.md +0 -0
  186. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/project-configuration.md +0 -0
  187. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/unit_testing.md +0 -0
  188. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/uv.md +0 -0
  189. {cgse-0.17.2 → cgse-0.17.4}/docs/dev_guide/versioning.md +0 -0
  190. {cgse-0.17.2 → cgse-0.17.4}/docs/getting_started.md +0 -0
  191. {cgse-0.17.2 → cgse-0.17.4}/docs/help.md +0 -0
  192. {cgse-0.17.2 → cgse-0.17.4}/docs/images/cli-cgse.png +0 -0
  193. {cgse-0.17.2 → cgse-0.17.4}/docs/images/github-fork-clone-dark.png +0 -0
  194. {cgse-0.17.2 → cgse-0.17.4}/docs/images/github-fork-clone.png +0 -0
  195. {cgse-0.17.2 → cgse-0.17.4}/docs/images/grafana-queries.png +0 -0
  196. {cgse-0.17.2 → cgse-0.17.4}/docs/images/icons/cgse-logo-blue.svg +0 -0
  197. {cgse-0.17.2 → cgse-0.17.4}/docs/images/icons/cgse-logo.svg +0 -0
  198. {cgse-0.17.2 → cgse-0.17.4}/docs/index.md +0 -0
  199. {cgse-0.17.2 → cgse-0.17.4}/docs/initialize.md +0 -0
  200. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-common/images/load_methods.png +0 -0
  201. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-common/index.md +0 -0
  202. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-common/settings.md +0 -0
  203. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-common/setup.md +0 -0
  204. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-coordinates/index.md +0 -0
  205. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-core/index.md +0 -0
  206. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-core/notifyhub.md +0 -0
  207. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-core/registry.md +0 -0
  208. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/cgse-gui/index.md +0 -0
  209. {cgse-0.17.2 → cgse-0.17.4}/docs/libs/index.md +0 -0
  210. {cgse-0.17.2 → cgse-0.17.4}/docs/package_list.md +0 -0
  211. {cgse-0.17.2 → cgse-0.17.4}/docs/projects/cgse-tools.md +0 -0
  212. {cgse-0.17.2 → cgse-0.17.4}/docs/projects/index.md +0 -0
  213. {cgse-0.17.2 → cgse-0.17.4}/docs/projects/symetrie-hexapod.md +0 -0
  214. {cgse-0.17.2 → cgse-0.17.4}/docs/roadmap.md +0 -0
  215. {cgse-0.17.2 → cgse-0.17.4}/docs/stylesheets/custom.css +0 -0
  216. {cgse-0.17.2 → cgse-0.17.4}/docs/stylesheets/extra.css +0 -0
  217. {cgse-0.17.2 → cgse-0.17.4}/docs/tutorial.md +0 -0
  218. {cgse-0.17.2 → cgse-0.17.4}/docs/user_guide/cli.md +0 -0
  219. {cgse-0.17.2 → cgse-0.17.4}/docs/user_guide/env.md +0 -0
  220. {cgse-0.17.2 → cgse-0.17.4}/docs/user_guide/index.md +0 -0
  221. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/README.md +0 -0
  222. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/noxfile.py +0 -0
  223. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  224. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  225. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  226. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/bits.py +0 -0
  227. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/calibration.py +0 -0
  228. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/config.py +0 -0
  229. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/counter.py +0 -0
  230. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/decorators.py +0 -0
  231. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/device.py +0 -0
  232. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/dicts.py +0 -0
  233. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/env.py +0 -0
  234. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/exceptions.py +0 -0
  235. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  236. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/metrics.py +0 -0
  237. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/observer.py +0 -0
  238. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/obsid.py +0 -0
  239. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/persistence.py +0 -0
  240. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/plugin.py +0 -0
  241. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  242. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/process.py +0 -0
  243. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/py.typed +0 -0
  244. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  245. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/reload.py +0 -0
  246. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/resource.py +0 -0
  247. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/response.py +0 -0
  248. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/scpi.py +0 -0
  249. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/settings.py +0 -0
  250. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/settings.yaml +0 -0
  251. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/setup.py +0 -0
  252. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/signal.py +0 -0
  253. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/state.py +0 -0
  254. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/task.py +0 -0
  255. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/version.py +0 -0
  256. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  257. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/conftest.py +0 -0
  258. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/COPYING +0 -0
  259. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  260. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  261. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  262. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  263. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  264. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  265. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  266. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  267. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  268. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  269. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  270. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  271. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  272. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  273. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  274. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  275. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  276. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  277. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  278. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  279. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  280. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  281. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  282. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  283. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  284. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  285. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  286. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  287. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  288. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  289. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  290. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  291. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  292. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  293. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  294. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  295. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  296. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  297. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  298. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  299. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  300. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  301. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  302. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_bits.py +0 -0
  303. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_config.py +0 -0
  304. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_decorators.py +0 -0
  305. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_device.py +0 -0
  306. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_env.py +0 -0
  307. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_fixtures.py +0 -0
  308. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_hk.py +0 -0
  309. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  310. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_log.py +0 -0
  311. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_metrics.py +0 -0
  312. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_plugin.py +0 -0
  313. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_process.py +0 -0
  314. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_resource.py +0 -0
  315. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_response.py +0 -0
  316. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_settings.py +0 -0
  317. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_setup.py +0 -0
  318. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_signal.py +0 -0
  319. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_socketdevice.py +0 -0
  320. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_state.py +0 -0
  321. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_system.py +0 -0
  322. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_task.py +0 -0
  323. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_version.py +0 -0
  324. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  325. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/README.md +0 -0
  326. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  327. /cgse-0.17.2/identifier.sqlite → /cgse-0.17.4/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  328. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  329. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/README.md +0 -0
  330. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  331. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  332. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  333. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  334. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/services.py +0 -0
  335. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  336. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  337. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/command.py +0 -0
  338. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  339. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  340. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  341. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  342. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/connect.py +0 -0
  343. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  344. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  345. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  346. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  347. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  348. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  349. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  350. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/listener.py +0 -0
  351. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  352. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  353. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  354. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/mixin.py +0 -0
  355. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/monitoring.py +0 -0
  356. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  357. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  358. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  359. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
  360. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  361. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  362. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  363. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  364. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/protocol.py +0 -0
  365. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/proxy.py +0 -0
  366. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  367. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  368. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/registry/service.py +0 -0
  369. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/services.py +0 -0
  370. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/services.yaml +0 -0
  371. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  372. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  373. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  374. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  375. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  376. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/conftest.py +0 -0
  377. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  378. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  379. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  380. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  381. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  382. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  383. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  384. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  385. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/services.py +0 -0
  386. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  387. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  388. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  389. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_command.py +0 -0
  390. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  391. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_control.py +0 -0
  392. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_dummy.py +0 -0
  393. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_event_notification.py +0 -0
  394. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_extensions.py +0 -0
  395. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_listener.py +0 -0
  396. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_mixin.py +0 -0
  397. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  398. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_protocol.py +0 -0
  399. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  400. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_registry_service.py +0 -0
  401. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_server_running.py +0 -0
  402. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  403. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_settings_core.py +0 -0
  404. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  405. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/README.md +0 -0
  406. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  407. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  408. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  409. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  410. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  411. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  412. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  413. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  414. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  415. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  416. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  417. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  418. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  419. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  420. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  421. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  422. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  423. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  424. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  425. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  426. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  427. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  428. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  429. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  430. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  431. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  432. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  433. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  434. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  435. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  436. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  437. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  438. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  439. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  440. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  441. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  442. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  443. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  444. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  445. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  446. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  447. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  448. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  449. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  450. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  451. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  452. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  453. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  454. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  455. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  456. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  457. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  458. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  459. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  460. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  461. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  462. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  463. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  464. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  465. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  466. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  467. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  468. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  469. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  470. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  471. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  472. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  473. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  474. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  475. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  476. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  477. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  478. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  479. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  480. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  481. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  482. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  483. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  484. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  485. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  486. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  487. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  488. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  489. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  490. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  491. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  492. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  493. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  494. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  495. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  496. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  497. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  498. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  499. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  500. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  501. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  502. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  503. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  504. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  505. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  506. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  507. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  508. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  509. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  510. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  511. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  512. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  513. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  514. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  515. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  516. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  517. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  518. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  519. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  520. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  521. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  522. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  523. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  524. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  525. {cgse-0.17.2 → cgse-0.17.4}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  526. {cgse-0.17.2 → cgse-0.17.4}/noxfile.py +0 -0
  527. {cgse-0.17.2 → cgse-0.17.4}/overrides/.icons/custom/dbend-dark.svg +0 -0
  528. {cgse-0.17.2 → cgse-0.17.4}/overrides/.icons/custom/dbend-light.svg +0 -0
  529. {cgse-0.17.2/libs/cgse-core/src/egse/metricshub → cgse-0.17.4/projects/ariel/ariel-facility/src/ariel_facility}/__init__.py +0 -0
  530. {cgse-0.17.2/projects/ariel/ariel-tcu/src/ariel_tcu → cgse-0.17.4/projects/ariel/ariel-facility/src/egse/ariel/facility}/__init__.py +0 -0
  531. {cgse-0.17.2/projects/generic/cgse-tools/src/cgse_tools → cgse-0.17.4/projects/ariel/ariel-tcu/src/ariel_tcu}/__init__.py +0 -0
  532. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_explore.py +0 -0
  533. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_services.py +0 -0
  534. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.yaml +0 -0
  535. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/tests/test_tcu.py +0 -0
  536. {cgse-0.17.2 → cgse-0.17.4}/projects/ariel/ariel-tcu/tests/test_tcu_cmd_utils.py +0 -0
  537. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/README.md +0 -0
  538. {cgse-0.17.2/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol → cgse-0.17.4/projects/generic/cgse-tools/src/cgse_tools}/__init__.py +0 -0
  539. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  540. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  541. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  542. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  543. {cgse-0.17.2/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol → cgse-0.17.4/projects/generic/digilent/src/digilent}/__init__.py +0 -0
  544. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/README.md +0 -0
  545. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  546. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  547. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
  548. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  549. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  550. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  551. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  552. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  553. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  554. {cgse-0.17.2/projects/generic/symetrie-hexapod/src/symetrie_hexapod → cgse-0.17.4/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol}/__init__.py +0 -0
  555. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  556. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
  557. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  558. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  559. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  560. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  561. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  562. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  563. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  564. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  565. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  566. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  567. /cgse-0.17.2/projects/plato/plato-hdf5/README.md → /cgse-0.17.4/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  568. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  569. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  570. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  571. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  572. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/README.md +0 -0
  573. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  574. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  575. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  576. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  577. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  578. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  579. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  580. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  581. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  582. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  583. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  584. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  585. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  586. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  587. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  588. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  589. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  590. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  591. /cgse-0.17.2/projects/plato/plato-spw/README.md → /cgse-0.17.4/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  592. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  593. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  594. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  595. {cgse-0.17.2 → cgse-0.17.4}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  596. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-fits/README.md +0 -0
  597. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  598. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  599. {cgse-0.17.2 → cgse-0.17.4}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  600. {cgse-0.17.2 → cgse-0.17.4}/ruff.toml +0 -0
@@ -8,6 +8,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.17.4] - 2026-01-27
12
+
13
+ - Extracting HK from Ariel facility database
14
+ - Re-shuffled hexapod settings
15
+ - Cleaned up cgse-coordinates
16
+ - Maintenance on cgse-core
17
+ - Implementation of Digilent MEASURpoint DT8874
18
+
19
+
20
+ ## [0.17.3] - 2025-11-29
21
+
22
+ In the previous release, uncommitted and untracked files were released by mistake. This release fixes this. Nothings has been changed with respect of release 0.17.2, except the removal of the uncommitted and untracked files.
23
+
11
24
 
12
25
  ## [0.17.2] - 2025-11-28
13
26
 
@@ -28,9 +41,9 @@ This release is mainly on maintenance and improvements to the `cgse-common` pack
28
41
  - Changed the return value of the different `get_version_*()` functions to return "0.0.0" when the version cannot
29
42
  be determined. Previously, these functions returned None. [#215]
30
43
  - Improvements to `redirect_output_to_log()`: the file can be an absolute path, added a guard to overwrite [#217]
31
- - A warning message is now logged when you try to read the last few lines from a non-existing file
44
+ - A warning message is now logged when you try to read the last few lines from a non-existing file [#218]
32
45
  - InitializationError = InitialisationError, to be conform to the styling guide promoting the use of standard
33
- American English for code, comments and docs
46
+ American English for code, comments and docs [#218]
34
47
 
35
48
  ### Added
36
49
  - Added a `from_string()` class method to Settings. This is mainly for testing and when you need to load
@@ -197,7 +210,9 @@ This release is mainly on maintenance and improvements to the `cgse-common` pack
197
210
  - Renamed `cgse` subcommands `registry` → `reg`, `notify` → `not`.
198
211
 
199
212
 
200
- [Unreleased]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.1...HEAD
213
+ [Unreleased]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.3...HEAD
214
+ [0.17.3]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.2...v0.17.3
215
+ [0.17.2]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.1...v0.17.2
201
216
  [0.17.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.0...v0.17.1
202
217
  [0.17.0]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.14...v0.17.0
203
218
  [0.16.14]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.13...v0.16.14
@@ -216,6 +231,8 @@ This release is mainly on maintenance and improvements to the `cgse-common` pack
216
231
  [0.16.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.0...v0.16.1
217
232
  [0.16.0]: https://github.com/IvS-KULeuven/cgse/compare/v0.15.1...v0.16.0
218
233
 
234
+ [#219]: https://github.com/IvS-KULeuven/cgse/pull/219
235
+ [#218]: https://github.com/IvS-KULeuven/cgse/pull/218
219
236
  [#217]: https://github.com/IvS-KULeuven/cgse/pull/217
220
237
  [#216]: https://github.com/IvS-KULeuven/cgse/pull/216
221
238
  [#215]: https://github.com/IvS-KULeuven/cgse/pull/215
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.17.2
3
+ Version: 0.17.4
4
4
  Summary: Generic Common-EGSE: Commanding and monitoring lab equipment
5
5
  Author: IvS KU Leuven
6
6
  Maintainer-email: Rik Huygen <rik.huygen@kuleuven.be>, Sara Regibo <sara.regibo@kuleuven.be>
@@ -1,26 +1,65 @@
1
+ ## Making a release
1
2
 
2
- (also check the docs: [Building and publishing packages](https://ivs-kuleuven.github.io/cgse/dev_guide/uv/#building-and-publishing-all-packages))
3
+ The first thing to do is to properly format your code changes, run:
3
4
 
4
- ## Making a release
5
+ ```bash
6
+ uvx ruff format
7
+ ```
8
+
9
+ You should be on the branch with the developments that you want to push and merge the pull request on GitHub before making the release.
5
10
 
6
- - run `uvx ruff format`
7
11
  - commit all changes with a proper message
12
+ - push changes to `origin`
13
+ - create a pull request (possibly needs a review)
14
+ - merge the pull request
15
+
16
+ When all pull requests that should go into the release are merged, checkout main again and pull all the latest changes:
17
+
18
+ ```bash
19
+ git checkout main
20
+ git pull upstream main
21
+ ```
22
+
23
+ Now, create the release branch: e.g. `release/v0.17.3`
24
+
25
+ - `git checkout -b release/v0.17.3`
8
26
  - add all notable changes to the CHANGELOG file
9
27
  - fix the links in the headers if needed
10
28
  - add links to the different pull requests
11
29
  - commit the CHANGELOG file
12
30
  - bump the version number: `uv run bump.py [patch|minor|major]`
13
31
  - commit all `pyproject.toml` files after the version bump
14
- - push the changes to the dedicated branch (I use PyCharm for this)
32
+ - push the changes to `origin`
15
33
  - create (and merge) a pull request, use the CHANGELOG as description
34
+
35
+ In order to prevent publishing all remaining uncommitted changes and untracked files too, stash all changes and untracked files:
36
+
37
+ ```bash
38
+ git stash push -u -m "All development work"
39
+ ```
40
+
41
+ ## Publish the new release
42
+
43
+ (also check the docs: [Building and publishing packages](https://ivs-kuleuven.github.io/cgse/dev_guide/uv/#building-and-publishing-all-packages))
44
+
45
+ Now, build and publish the packages:
46
+
16
47
  - remove the old distributions: `rm -r dist`
17
48
  - build the packages: `uv build --all-packages`
18
49
  - publish the packages to PyPI: `uv publish --token $UV_PUBLISH_TOKEN`
19
50
 
51
+ Put back the changes and untracked files:
52
+
53
+ ```bash
54
+ git checkout main
55
+ git pull upstream main
56
+ git stash pop
57
+ ```
20
58
 
21
59
  ## Tag the new release
22
60
 
23
61
  - create a tag for the commit of the bump: `git tag <version number> <commit hash>`, e.g. `git tag v0.16.0 559bbfc`
62
+ - you can find the commit hash with: `git log --oneline`
24
63
  - push the tag to upstream: `git push upstream <tag name>`, e.g. `git push upstream v0.16.0`
25
64
 
26
65
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "0.17.2"
3
+ version = "0.17.4"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -51,8 +51,8 @@ class TmDictionaryColumns(str, Enum):
51
51
  """ # noqa
52
52
 
53
53
  STORAGE_MNEMONIC = "Storage mnemonic"
54
- CORRECT_HK_NAMES = "CAM EGSE mnemonic"
55
- ORIGINAL_EGSE_HK_NAMES = "Original name in EGSE"
54
+ CORRECT_HK_NAMES = "CGSE mnemonic"
55
+ ORIGINAL_EGSE_HK_NAMES = "Original name in CGSE"
56
56
  SYNOPTICS_ORIGIN = f"Origin of synoptics at {get_site_id()}"
57
57
  TIMESTAMP_NAMES = "Name of corresponding timestamp"
58
58
  DESCRIPTION = "Description"
@@ -131,6 +131,14 @@ for handler in root_logger.handlers:
131
131
  handler.addFilter(NonEGSEFilter())
132
132
  handler.addFilter(PackageFilter())
133
133
 
134
+ try:
135
+ from textual.logging import TextualHandler
136
+
137
+ root_logger.addHandler(TextualHandler())
138
+ except ImportError:
139
+ pass
140
+
141
+
134
142
  logger = egse_logger
135
143
 
136
144
  if __name__ == "__main__":
@@ -17,6 +17,9 @@ from egse.device import DeviceTransport
17
17
  from egse.log import logger
18
18
  from egse.system import type_name
19
19
 
20
+ SEPARATOR = b"\x03"
21
+ SEPARATOR_STR = SEPARATOR.decode()
22
+
20
23
 
21
24
  class SocketDevice(DeviceConnectionInterface, DeviceTransport):
22
25
  """Base class that implements the socket interface."""
@@ -33,7 +36,7 @@ class SocketDevice(DeviceConnectionInterface, DeviceTransport):
33
36
  port: int,
34
37
  connect_timeout: float = 3.0,
35
38
  read_timeout: float | None = 1.0,
36
- separator: str = b"\x03",
39
+ separator: bytes = SEPARATOR,
37
40
  ):
38
41
  super().__init__()
39
42
  self.is_connection_open = False
@@ -92,8 +95,6 @@ class SocketDevice(DeviceConnectionInterface, DeviceTransport):
92
95
  raise ConnectionError(f"{self.device_name}: socket address info error for {self.hostname}") from exc
93
96
  except socket.herror as exc:
94
97
  raise ConnectionError(f"{self.device_name}: socket host address error for {self.hostname}") from exc
95
- except socket.timeout as exc:
96
- raise TimeoutError(f"{self.device_name}: socket timeout error for {self.hostname}:{self.port}") from exc
97
98
  except OSError as exc:
98
99
  raise ConnectionError(f"{self.device_name}: OSError caught ({exc}).") from exc
99
100
 
@@ -269,7 +270,7 @@ class AsyncSocketDevice(AsyncDeviceInterface, AsyncDeviceTransport):
269
270
  port: int,
270
271
  connect_timeout: float = 3.0,
271
272
  read_timeout: float | None = 1.0,
272
- separator: str = b"\x03",
273
+ separator: bytes = SEPARATOR,
273
274
  ):
274
275
  super().__init__()
275
276
  self.hostname = hostname
@@ -2283,6 +2283,11 @@ def kebab_to_title(kebab_str: str) -> str:
2283
2283
  return kebab_str.replace("-", " ").title()
2284
2284
 
2285
2285
 
2286
+ def title_to_kebab(title_str: str) -> str:
2287
+ """Convert Title Case (each word capitalized) to kebab-case"""
2288
+ return title_str.replace(" ", "-").lower()
2289
+
2290
+
2286
2291
  def snake_to_title(snake_str: str) -> str:
2287
2292
  """Convert snake_case to Title Case (each word capitalized)"""
2288
2293
  return snake_str.replace("_", " ").title()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.17.2"
3
+ version = "0.17.4"
4
4
  description = "Reference Frames and Coordinate Transofrmations for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -28,8 +28,8 @@ dependencies = [
28
28
  [project.entry-points."cgse.version"]
29
29
  cgse-coordinates = 'egse.version:get_version_installed'
30
30
 
31
- [project.entry-points."cgse.settings"]
32
- cgse-coordinates = "cgse_coordinates:settings.yaml"
31
+ #[project.entry-points."cgse.settings"]
32
+ #cgse-coordinates = "cgse_coordinates:settings.yaml"
33
33
 
34
34
  [tool.pytest.ini_options]
35
35
  pythonpath = "src"
@@ -0,0 +1,229 @@
1
+ import ast
2
+ import logging
3
+ import re
4
+ from typing import Dict
5
+ from typing import List
6
+ from typing import Optional
7
+ from typing import Union
8
+
9
+ import numpy as np
10
+ from egse.setup import navdict
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ def dict_to_ref_model(model_def: Union[Dict, List]) -> navdict:
16
+ """Creates a reference frames model from a dictionary or list of reference frame definitions.
17
+
18
+ When a list is provided, the items in the list must be ReferenceFrames.
19
+
20
+ The reference frame definitions are usually read from a YAML file or returned by a Setup, but can also be just
21
+ ReferenceFrame objects.
22
+
23
+ ReferenceFrame definitions have the following format:
24
+
25
+ ```
26
+ ReferenceFrame://(<definition>)
27
+ ```
28
+ where `<definition>` has the following elements, separated by '` | `':
29
+ * a translation matrix
30
+ * a rotation matrix
31
+ * the name of the reference frame
32
+ * the name of the reference for this reference frame
33
+ * a dictionary of links
34
+
35
+ Args:
36
+ model_def (dict or list): Definition of the reference model.
37
+
38
+ Returns:
39
+ Dictionary representing the reference frames model.
40
+ """
41
+
42
+ ref_model = navdict()
43
+ ref_links = {}
44
+
45
+ from egse.coordinates.reference_frame import ReferenceFrame
46
+
47
+ def create_ref_frame(name, data) -> Union[ReferenceFrame, str]:
48
+ # This is a recursive function that creates a reference frame based on the given data.
49
+ # * When the data is already a ReferenceFrame, it just returns data
50
+ # * When data starts with the special string `ReferenceFrame//`, the data string is parsed
51
+ # and a corresponding ReferenceFrame is returned
52
+ # * When there is no match, the data is returned unaltered.
53
+ #
54
+ # SIDE EFFECT:
55
+ # * In the process, the outer ref-model and ref_links are updated.
56
+
57
+ if isinstance(data, ReferenceFrame):
58
+ return data
59
+
60
+ match = re.match(r"ReferenceFrame//\((.*)\)$", data)
61
+ if not match:
62
+ return data
63
+
64
+ translation, rotation, name, ref_name, links = match[1].split(" | ")
65
+
66
+ # All links are processed later
67
+
68
+ ref_links[name] = ast.literal_eval(links)
69
+
70
+ if ref_name == name == "Master":
71
+ ref_model.add(ref_name, ReferenceFrame.create_master())
72
+ return ref_model["Master"]
73
+
74
+ if ref_name not in ref_model:
75
+ ref_model.add(ref_name, create_ref_frame(ref_name, model_def[ref_name]))
76
+
77
+ ref_frame = ReferenceFrame.from_translation_rotation(
78
+ deserialize_array(translation),
79
+ deserialize_array(rotation),
80
+ name=name,
81
+ reference_frame=ref_model[ref_name],
82
+ )
83
+
84
+ return ref_frame
85
+
86
+ # if the given model_def is a list, turn it into a dict
87
+
88
+ if isinstance(model_def, list):
89
+ model_def = {frame.name: frame for frame in model_def}
90
+
91
+ for key, value in model_def.items():
92
+ if key not in ref_model:
93
+ ref_model.add(key, create_ref_frame(key, value))
94
+
95
+ # Process all the links
96
+
97
+ for ref_name, link_names in ref_links.items():
98
+ ref = ref_model[ref_name]
99
+ for link_name in link_names:
100
+ if link_name not in ref.linked_to:
101
+ ref.add_link(ref_model[link_name])
102
+
103
+ return ref_model
104
+
105
+
106
+ def ref_model_to_dict(ref_model) -> navdict:
107
+ """Creates a dictionary with reference frames definitions that define a reference model.
108
+
109
+ Args:
110
+ ref_model: A dictionary representing the reference frames model or a list of reference frames.
111
+
112
+ Returns:
113
+ Dictionary of reference frame definitions.
114
+ """
115
+
116
+ if isinstance(ref_model, dict):
117
+ ref_model = ref_model.values()
118
+
119
+ # take each key (which is a reference frame) and serialize it
120
+
121
+ model_def = {}
122
+
123
+ for ref in ref_model:
124
+ translation, rotation = ref.get_translation_rotation_vectors()
125
+ links = [ref.name for ref in ref.linked_to]
126
+ model_def[ref.name] = (
127
+ f"ReferenceFrame//("
128
+ f"{serialize_array(translation, precision=6)} | "
129
+ f"{serialize_array(rotation, precision=6)} | "
130
+ f"{ref.name} | "
131
+ f"{ref.reference_frame.name} | "
132
+ f"{links})"
133
+ )
134
+
135
+ return navdict(model_def)
136
+
137
+
138
+ def serialize_array(arr: Union[np.ndarray, list], precision: int = 4) -> str:
139
+ """Returns a string representation of a numpy array.
140
+
141
+ >>> serialize_array([1,2,3])
142
+ '[1, 2, 3]'
143
+ >>> serialize_array([[1,2,3], [4,5,6]])
144
+ '[[1, 2, 3], [4, 5, 6]]'
145
+ >>> serialize_array([[1,2.2,3], [4.3,5,6]])
146
+ '[[1.0000, 2.2000, 3.0000], [4.3000, 5.0000, 6.0000]]'
147
+ >>> serialize_array([[1,2.2,3], [4.3,5,6]], precision=2)
148
+ '[[1.00, 2.20, 3.00], [4.30, 5.00, 6.00]]'
149
+
150
+ Args:
151
+ arr: One- or-two dimensional numpy array or list.
152
+ precision (int): number of digits of precision
153
+ Returns:
154
+ A string representing the input array.
155
+ """
156
+ if isinstance(arr, list):
157
+ arr = np.array(arr)
158
+ msg = np.array2string(
159
+ arr,
160
+ separator=", ",
161
+ suppress_small=True,
162
+ formatter={"float_kind": lambda x: f"{x:.{precision}f}"},
163
+ ).replace("\n", "")
164
+ return msg
165
+
166
+
167
+ def deserialize_array(arr_str: str) -> Optional[np.ndarray]:
168
+ """Returns a numpy array from the given string.
169
+
170
+ The input string is interpreted as a one or two-dimensional array, with commas or spaces separating the columns,
171
+ and semicolons separating the rows.
172
+
173
+ >>> deserialize_array('1,2,3')
174
+ array([1, 2, 3])
175
+ >>> deserialize_array('1 2 3')
176
+ array([1, 2, 3])
177
+ >>> deserialize_array('1,2,3;4,5,6')
178
+ array([[1, 2, 3],
179
+ [4, 5, 6]])
180
+ >>> deserialize_array("[[1,2,3], [4,5,6]]")
181
+ array([[1, 2, 3],
182
+ [4, 5, 6]])
183
+
184
+ Args:
185
+ arr_str: String representation of a numpy array.
186
+
187
+ Returns:
188
+ One- or two-dimensional numpy array or `None` when input string cannot be parsed into a numpy array.
189
+ """
190
+
191
+ import re
192
+
193
+ arr_str = re.sub(r"\],\s*\[", "];[", arr_str)
194
+ try:
195
+ arr = np.array(_convert_from_string(arr_str))
196
+ return arr if ";" in arr_str else arr.flatten()
197
+ except ValueError as exc:
198
+ logger.error(f"Input string could not be parsed into a numpy array: {exc}")
199
+ return None
200
+
201
+
202
+ def _convert_from_string(data: str) -> list[list]:
203
+ # This function was copied from:
204
+ # https://github.com/numpy/numpy/blob/v1.19.0/numpy/matrixlib/defmatrix.py#L14
205
+ # We include the function here because the np.matrix class is deprecated and will be removed.
206
+ # This function is what we actually needed from np.matrix.
207
+
208
+ # This function can be replaced with np.fromstring()
209
+
210
+ for char in "[]":
211
+ data = data.replace(char, "")
212
+
213
+ rows = data.split(";")
214
+ new_data = []
215
+ count = 0
216
+ for row in rows:
217
+ trow = row.split(",")
218
+ new_row = []
219
+ for col in trow:
220
+ temp = col.split()
221
+ new_row.extend(map(ast.literal_eval, temp))
222
+ if count == 0:
223
+ n_cols = len(new_row)
224
+ elif len(new_row) != n_cols:
225
+ raise ValueError("Rows not the same size.")
226
+ count += 1
227
+ new_data.append(new_row)
228
+
229
+ return new_data
@@ -0,0 +1,91 @@
1
+ import numpy as np
2
+
3
+ from egse.coordinates.point import Points
4
+ from egse.coordinates.reference_frame import ReferenceFrame
5
+ from egse.setup import Setup, load_setup
6
+
7
+
8
+ def is_avoidance_ok(hexusr: ReferenceFrame, hexobj: ReferenceFrame, setup: Setup = None, verbose: bool = False):
9
+ """Checks whether the FPA is outside the avoidance volume around L6.
10
+
11
+ This function is used to verify that a requested movement of the PUNA hexapod will not cause the FPA to enter the
12
+ avoidance volume around L6.
13
+
14
+
15
+ Args:
16
+ hexusr (ReferenceFrame): User Reference Frame for the PUNA hexapod. Its xy-plane corresponds to the maximum
17
+ height of FPA_SEN. Its z-axis points away from the FPA.
18
+ hexobj (ReferenceFrame): Object Reference Frame for the PUNA hexapod. Its xy-plane coincides with FPA_SEN. Its
19
+ z-axis points towards L6.
20
+ setup (Setup): Setup object containing the default reference frames.
21
+ verbose (bool): Indicates whether to print verbose output.
22
+
23
+ Returns:
24
+ True if the FPA is outside the avoidance volume around L6; False otherwise.
25
+ """
26
+
27
+ setup = setup or load_setup()
28
+
29
+ # A. HORIZONTAL AVOIDANCE
30
+ # Ensure that the centre of L6, materialised by HEX_USR (incl. z-direction security wrt TOU_L6) stays within a
31
+ # given radius of the origin of FPA_SEN
32
+
33
+ # Clearance = the tolerance in every horizontal direction (3 mm; PLATO-KUL-PL-ICD-0001 v1.2)
34
+ clearance_xy = setup.camera.fpa.avoidance.clearance_xy
35
+
36
+ # Projection of the origin of HEX_USR on the xy-plane of FPA_SEN
37
+ l6xy = hexusr.get_origin().express_in(hexobj)[:2]
38
+
39
+ # !! This is a verification of the current situation
40
+ # -> need to replace by a simulation of the forthcoming movement in the building block
41
+ horizontal_check = (l6xy[0] ** 2.0 + l6xy[1] ** 2.0) < clearance_xy * clearance_xy
42
+
43
+ # B. VERTICAL AVOIDANCE
44
+ # Ensure that the CCD never hits L6.
45
+ # - The definition of HEX_USR includes a tolerance below L6 (1.65 mm).
46
+ # - We include a tolerance above FPA_SEN here (0.3 mm).
47
+ # - We define a collection of points to act at the vertices. of the avoidance volume above the FPA
48
+
49
+ # Clearance = vertical uncertainty on the CCD location (0.3 mm; PLATO-KUL-PL-ICD-0001 v1.2)
50
+ clearance_z = setup.camera.fpa.avoidance.clearance_z
51
+
52
+ # Vertices = Points representing the vertices of the avoidance volume above the FPA (60)
53
+ vertices_nb = setup.camera.fpa.avoidance.vertices_nb
54
+ # All vertices are on a circle of radius 'vertices_radius' (100 mm)
55
+ vertices_radius = setup.camera.fpa.avoidance.vertices_radius
56
+
57
+ angles = np.linspace(0, np.pi * 2, vertices_nb, endpoint=False)
58
+ vertices_x = np.cos(angles) * vertices_radius
59
+ vertices_y = np.sin(angles) * vertices_radius
60
+ vertices_z = np.ones_like(angles) * clearance_z
61
+
62
+ # The collection of points defining the avoidance volume around FPA_SEN
63
+
64
+ vert_obj = Points(
65
+ coordinates=np.array([vertices_x, vertices_y, vertices_z]), reference_frame=hexobj, name="vert_obj"
66
+ )
67
+
68
+ # Their coordinates in HEX_USR
69
+ # NB: vert_obj is a Points object, vert_usr is an array
70
+ vert_usr = vert_obj.express_in(hexusr)
71
+
72
+ # !! Same as above : this is verifying the current situation, not the one after a planned movement
73
+ # Verify that all vertices ("protecting" FPA_SEN) are below the x-y plane of HEX_USR ("protecting" L6)
74
+ vertical_check = np.all(vert_usr[2, :] < 0.0)
75
+
76
+ if verbose:
77
+ printdict = {True: "OK", False: "NOT OK"}
78
+ print(f"HORIZONTAL AVOIDANCE: {printdict[horizontal_check]}")
79
+ print(f" VERTICAL AVOIDANCE: {printdict[vertical_check]}")
80
+
81
+ if verbose > 1:
82
+ print(f"Points Coordinates")
83
+ coobj = vert_obj.coordinates
84
+ for i in range(vertices_nb):
85
+ print(f"{i} OBJ {np.round(coobj[:3, i], 6)} --> USR {np.round(vert_usr[:3, i], 6)}")
86
+ vert_z = vert_usr[2, :]
87
+ vert_zi = np.where(vert_z == np.max(vert_z))
88
+ print(f"#vertices at max z : {len(vert_zi[0])}")
89
+ print(f"First one: vertex {vert_zi[0][0]} : {np.round(vert_usr[:3, vert_zi[0][0]], 6)}")
90
+
91
+ return horizontal_check and vertical_check
@@ -0,0 +1,118 @@
1
+ """
2
+ A CSL reference frame model which has knowledge about the CSL Setup, and the PUNA Hexapod model.
3
+
4
+ The CSL Reference Frame Model incorporates a Hexapod PUNA model which is represented by the
5
+ Reference Frames HEXUSR, HEXOBJ, HEXMEC, and HEXPLT. A number of methods are defined here that
6
+ assume these four reference frames exist in the model and behave like a proper hexapod simulator.
7
+ Those methods start with the name `hexapod_`, e.g. `hexapod_goto_zero_position()`.
8
+
9
+ """
10
+
11
+ import numpy as np
12
+ from egse.coordinates.refmodel import ReferenceFrameModel
13
+
14
+ HEXUSR = "hexusr"
15
+ HEXMEC = "hexmec"
16
+ HEXOBJ = "hexobj"
17
+ HEXPLT = "hexplt"
18
+ HEXOBUSR = "hexobusr"
19
+
20
+
21
+ class CSLReferenceFrameModel(ReferenceFrameModel):
22
+ """
23
+ The CSL reference Frame Model is a specific reference model that adds convenience methods for manipulating the
24
+ Hexapod PUNA which is part of the overall CSL Setup.
25
+ """
26
+
27
+ _DEGREES_DEFAULT = ReferenceFrameModel._DEGREES_DEFAULT
28
+
29
+ def _create_obusr(self) -> None:
30
+ """Creates the Object User Reference Frame if it does not exist yet."""
31
+
32
+ if HEXOBUSR in self:
33
+ return
34
+
35
+ hexusr = self.get_frame(HEXUSR)
36
+ hexobj = self.get_frame(HEXOBJ)
37
+
38
+ transformation = hexusr.get_active_transformation_to(hexobj)
39
+
40
+ self.add_frame(HEXOBUSR, transformation=transformation, reference=HEXUSR)
41
+ self.add_link(HEXOBUSR, HEXOBJ)
42
+
43
+ def hexapod_move_absolute(self, translation: np.ndarray, rotation: np.ndarray, degrees: bool = _DEGREES_DEFAULT):
44
+ """Moves/defines the Object Coordinate System expressed in the invariant User Coordinate System.
45
+
46
+ The rotation centre coincides with the Object Coordinates System origin and the movements are controlled with
47
+ translation components first (Tx, Ty, tZ) and then the rotation components (Rx, Ry, Rz).
48
+
49
+ Args:
50
+ translation (np.ndarray): Translation vector.
51
+ rotation (np.ndarray): Rotation vector.
52
+ degrees (bool): Indicates whether the rotation angles are specified in degrees, rather than radians.
53
+ """
54
+
55
+ self.move_absolute_self(HEXOBUSR, translation, rotation, degrees=degrees)
56
+
57
+ def hexapod_move_relative_object(
58
+ self, translation: np.ndarray, rotation: np.ndarray, degrees: bool = _DEGREES_DEFAULT
59
+ ):
60
+ """Moves the object relative to its current position and orientation
61
+
62
+ The relative movement is expressed in the object coordinate system.
63
+
64
+ Args:
65
+ translation (np.ndarray): Translation vector.
66
+ rotation (np.ndarray): Rotation vector.
67
+ degrees (bool): Indicates whether the rotation angles are specified in degrees, rather than radians.
68
+ """
69
+
70
+ self.move_relative_self(HEXOBJ, translation, rotation, degrees=degrees)
71
+
72
+ def hexapod_move_relative_user(
73
+ self, translation: np.ndarray, rotation: np.ndarray, degrees: bool = _DEGREES_DEFAULT
74
+ ) -> None:
75
+ """Moves the object relative to its current object position and orientation.
76
+
77
+ The relative movement is expressed in the (invariant) user coordinate system.
78
+
79
+ Args:
80
+ translation (np.ndarray): Translation vector.
81
+ rotation (np.ndarray): Rotation vector.
82
+ degrees (bool): Indicates whether the rotation angles are specified in degrees, rather than radians.
83
+ """
84
+
85
+ self.move_relative_other_local(HEXOBJ, HEXUSR, translation, rotation, degrees=degrees)
86
+
87
+ def hexapod_configure_coordinates(
88
+ self,
89
+ usr_trans: np.ndarray,
90
+ usr_rot: np.ndarray,
91
+ obj_trans: np.ndarray,
92
+ obj_rot: np.ndarray,
93
+ ) -> None:
94
+ """Changes the definition of the User Coordinate System and the Object Coordinate System in the hexapod.
95
+
96
+ Args:
97
+ usr_trans (np.ndarray): Translation vector used to define the User Coordinate System relative to the Machine Coordinate System.
98
+ usr_rot (np.ndarray): Rotation vector used to define the User Coordinate System relative to the Machine Coordinate System.
99
+ obj_trans (np.ndarray): Translation vector used to define the Object Coordinate System relative to the Platform Coordinate System.
100
+ obj_rot (np.ndarray): Rotation vector used to define the Object Coordinate System relative to the Platoform Coordinate System.
101
+ """
102
+
103
+ self.remove_link(HEXUSR, HEXMEC)
104
+ self.remove_link(HEXOBJ, HEXPLT)
105
+ self.get_frame(HEXUSR).set_translation_rotation(usr_trans, usr_rot)
106
+ self.get_frame(HEXOBJ).set_translation_rotation(obj_trans, obj_rot)
107
+ self.add_link(HEXUSR, HEXMEC)
108
+ self.add_link(HEXOBJ, HEXPLT)
109
+
110
+ def hexapod_goto_zero_position(self) -> None:
111
+ """Instructs the hexapod to go to its zero position"""
112
+
113
+ self.move_absolute_self(HEXPLT, translation=np.array([0, 0, 0]), rotation=np.array([0, 0, 0]))
114
+
115
+ def hexapod_goto_retracted_position(self) -> None:
116
+ """Instructs the hexapod to go to its retracted position."""
117
+
118
+ self.move_absolute_self(HEXPLT, translation=np.array([0, 0, -20]), rotation=np.array([0, 0, 0]))