cgse 0.17.4__tar.gz → 0.18.1__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 (591) hide show
  1. {cgse-0.17.4 → cgse-0.18.1}/.gitignore +6 -1
  2. cgse-0.18.1/.op/plugins/gh.json +15 -0
  3. {cgse-0.17.4 → cgse-0.18.1}/CHANGELOG.md +54 -3
  4. cgse-0.18.1/LICENSE +21 -0
  5. {cgse-0.17.4 → cgse-0.18.1}/PKG-INFO +2 -1
  6. cgse-0.18.1/duckdb_metrics.db +0 -0
  7. cgse-0.18.1/duckdb_metrics.db.wal +0 -0
  8. cgse-0.18.1/justfile +69 -0
  9. cgse-0.18.1/libs/cgse-common/justfile +20 -0
  10. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/pyproject.toml +1 -1
  11. cgse-0.18.1/libs/cgse-common/service_registry.db +0 -0
  12. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/device.py +1 -1
  13. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/env.py +1 -1
  14. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/log.py +8 -6
  15. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/scpi.py +198 -10
  16. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/setup.py +7 -4
  17. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/socketdevice.py +25 -19
  18. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/system.py +1 -1
  19. cgse-0.18.1/libs/cgse-common/tests/test_scpi.py +65 -0
  20. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_socketdevice.py +1 -1
  21. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/pyproject.toml +1 -1
  22. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/pyproject.toml +1 -1
  23. cgse-0.18.1/libs/cgse-core/service_registry.db +0 -0
  24. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/pyproject.toml +1 -1
  25. {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/gear.svg +92 -92
  26. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/pyproject.toml +2 -2
  27. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/pyproject.toml +2 -2
  28. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cs.py +6 -0
  29. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/pyproject.toml +1 -1
  30. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/pyproject.toml +1 -1
  31. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/digilent.py +77 -72
  32. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/digilent_devif.py +4 -4
  33. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.py +1 -1
  34. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_cs.py +6 -0
  35. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_protocol.py +1 -0
  36. cgse-0.18.1/projects/generic/keithley-tempcontrol/justfile +25 -0
  37. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/pyproject.toml +3 -4
  38. cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  39. cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db-shm +0 -0
  40. cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db-wal +0 -0
  41. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -2
  42. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +79 -242
  43. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +13 -1
  44. cgse-0.17.4/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py → cgse-0.18.1/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_amon.py +14 -5
  45. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +27 -1
  46. cgse-0.18.1/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +154 -0
  47. cgse-0.18.1/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +313 -0
  48. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +29 -7
  49. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +4 -4
  50. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +32 -0
  51. cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/script-test-a-scan.py +78 -0
  52. cgse-0.17.4/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py → cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/script_daq6510_amon.py +30 -2
  53. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/tests/test_adev.py +15 -11
  54. cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/test_controller.py +58 -0
  55. cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/test_cs.py +89 -0
  56. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/tests/test_dev.py +30 -35
  57. cgse-0.18.1/projects/generic/kikusui-power-supply/README.md +9 -0
  58. cgse-0.18.1/projects/generic/kikusui-power-supply/pyproject.toml +82 -0
  59. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/__init__.py +10 -0
  60. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx.py +658 -0
  61. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/__init__.py +4 -0
  62. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a.py +135 -0
  63. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a.yaml +43 -0
  64. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a_cs.py +305 -0
  65. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a_protocol.py +117 -0
  66. cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_devif.py +297 -0
  67. cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/cgse_explore.py +19 -0
  68. cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/cgse_services.py +129 -0
  69. cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/settings.yaml +19 -0
  70. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  71. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  72. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/pyproject.toml +1 -1
  73. cgse-0.18.1/projects/plato/plato-hdf5/README.md +0 -0
  74. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  75. cgse-0.18.1/projects/plato/plato-spw/README.md +0 -0
  76. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-spw/pyproject.toml +1 -1
  77. {cgse-0.17.4 → cgse-0.18.1}/pyproject.toml +1 -1
  78. cgse-0.18.1/scratch/advanced-process-monitoring.py +111 -0
  79. cgse-0.18.1/scratch/live-process-monitoring.py +67 -0
  80. cgse-0.18.1/scratch/match-case.py +41 -0
  81. cgse-0.18.1/scratch/mock-version.py +3 -0
  82. cgse-0.18.1/scratch/processes.json +7680 -0
  83. cgse-0.18.1/scratch/simple-process-monitoring.py +72 -0
  84. cgse-0.18.1/scratch/test_version_behavior.py +35 -0
  85. cgse-0.18.1/scratch/understanding-the-mocking-library.py +82 -0
  86. cgse-0.18.1/scratch/understanding_the_with_statement.py +37 -0
  87. cgse-0.18.1/service_registry.db +0 -0
  88. cgse-0.18.1/test_service_registry.db +0 -0
  89. cgse-0.17.4/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -345
  90. {cgse-0.17.4 → cgse-0.18.1}/.env.example +0 -0
  91. {cgse-0.17.4 → cgse-0.18.1}/.github/workflows/ruff-format-check.yaml +0 -0
  92. {cgse-0.17.4 → cgse-0.18.1}/README.md +0 -0
  93. {cgse-0.17.4 → cgse-0.18.1}/bump.py +0 -0
  94. {cgse-0.17.4 → cgse-0.18.1}/conftest.py +0 -0
  95. {cgse-0.17.4 → cgse-0.18.1}/docs/admin_guide/make-a-release.md +0 -0
  96. {cgse-0.17.4 → cgse-0.18.1}/docs/api/bits.md +0 -0
  97. {cgse-0.17.4 → cgse-0.18.1}/docs/api/calibration.md +0 -0
  98. {cgse-0.17.4 → cgse-0.18.1}/docs/api/command.md +0 -0
  99. {cgse-0.17.4 → cgse-0.18.1}/docs/api/config.md +0 -0
  100. {cgse-0.17.4 → cgse-0.18.1}/docs/api/control.md +0 -0
  101. {cgse-0.17.4 → cgse-0.18.1}/docs/api/counter.md +0 -0
  102. {cgse-0.17.4 → cgse-0.18.1}/docs/api/decorators.md +0 -0
  103. {cgse-0.17.4 → cgse-0.18.1}/docs/api/device.md +0 -0
  104. {cgse-0.17.4 → cgse-0.18.1}/docs/api/dicts.md +0 -0
  105. {cgse-0.17.4 → cgse-0.18.1}/docs/api/dummy.md +0 -0
  106. {cgse-0.17.4 → cgse-0.18.1}/docs/api/env.md +0 -0
  107. {cgse-0.17.4 → cgse-0.18.1}/docs/api/exceptions.md +0 -0
  108. {cgse-0.17.4 → cgse-0.18.1}/docs/api/heartbeat.md +0 -0
  109. {cgse-0.17.4 → cgse-0.18.1}/docs/api/hk.md +0 -0
  110. {cgse-0.17.4 → cgse-0.18.1}/docs/api/index.md +0 -0
  111. {cgse-0.17.4 → cgse-0.18.1}/docs/api/listener.md +0 -0
  112. {cgse-0.17.4 → cgse-0.18.1}/docs/api/metrics.md +0 -0
  113. {cgse-0.17.4 → cgse-0.18.1}/docs/api/mixin.md +0 -0
  114. {cgse-0.17.4 → cgse-0.18.1}/docs/api/monitoring.md +0 -0
  115. {cgse-0.17.4 → cgse-0.18.1}/docs/api/observer.md +0 -0
  116. {cgse-0.17.4 → cgse-0.18.1}/docs/api/obsid.md +0 -0
  117. {cgse-0.17.4 → cgse-0.18.1}/docs/api/persistence.md +0 -0
  118. {cgse-0.17.4 → cgse-0.18.1}/docs/api/plugin.md +0 -0
  119. {cgse-0.17.4 → cgse-0.18.1}/docs/api/process.md +0 -0
  120. {cgse-0.17.4 → cgse-0.18.1}/docs/api/reload.md +0 -0
  121. {cgse-0.17.4 → cgse-0.18.1}/docs/api/settings.md +0 -0
  122. {cgse-0.17.4 → cgse-0.18.1}/docs/api/setup.md +0 -0
  123. {cgse-0.17.4 → cgse-0.18.1}/docs/api/system.md +0 -0
  124. {cgse-0.17.4 → cgse-0.18.1}/docs/custom_theme/main.html +0 -0
  125. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/coding_style.md +0 -0
  126. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/docs.md +0 -0
  127. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/dotenv.md +0 -0
  128. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/index.md +0 -0
  129. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/installation.md +0 -0
  130. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/monitoring.md +0 -0
  131. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/monorepo.md +0 -0
  132. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/nox.md +0 -0
  133. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/plugins.md +0 -0
  134. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/project-configuration.md +0 -0
  135. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/unit_testing.md +0 -0
  136. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/uv.md +0 -0
  137. {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/versioning.md +0 -0
  138. {cgse-0.17.4 → cgse-0.18.1}/docs/getting_started.md +0 -0
  139. {cgse-0.17.4 → cgse-0.18.1}/docs/help.md +0 -0
  140. {cgse-0.17.4 → cgse-0.18.1}/docs/images/cli-cgse.png +0 -0
  141. {cgse-0.17.4 → cgse-0.18.1}/docs/images/github-fork-clone-dark.png +0 -0
  142. {cgse-0.17.4 → cgse-0.18.1}/docs/images/github-fork-clone.png +0 -0
  143. {cgse-0.17.4 → cgse-0.18.1}/docs/images/grafana-queries.png +0 -0
  144. {cgse-0.17.4 → cgse-0.18.1}/docs/images/icons/cgse-logo-blue.svg +0 -0
  145. {cgse-0.17.4 → cgse-0.18.1}/docs/images/icons/cgse-logo.svg +0 -0
  146. {cgse-0.17.4 → cgse-0.18.1}/docs/index.md +0 -0
  147. {cgse-0.17.4 → cgse-0.18.1}/docs/initialize.md +0 -0
  148. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/images/load_methods.png +0 -0
  149. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/index.md +0 -0
  150. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/settings.md +0 -0
  151. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/setup.md +0 -0
  152. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-coordinates/index.md +0 -0
  153. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/index.md +0 -0
  154. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/notifyhub.md +0 -0
  155. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/registry.md +0 -0
  156. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-gui/index.md +0 -0
  157. {cgse-0.17.4 → cgse-0.18.1}/docs/libs/index.md +0 -0
  158. {cgse-0.17.4 → cgse-0.18.1}/docs/package_list.md +0 -0
  159. {cgse-0.17.4 → cgse-0.18.1}/docs/projects/cgse-tools.md +0 -0
  160. {cgse-0.17.4 → cgse-0.18.1}/docs/projects/index.md +0 -0
  161. {cgse-0.17.4 → cgse-0.18.1}/docs/projects/symetrie-hexapod.md +0 -0
  162. {cgse-0.17.4 → cgse-0.18.1}/docs/roadmap.md +0 -0
  163. {cgse-0.17.4 → cgse-0.18.1}/docs/stylesheets/custom.css +0 -0
  164. {cgse-0.17.4 → cgse-0.18.1}/docs/stylesheets/extra.css +0 -0
  165. {cgse-0.17.4 → cgse-0.18.1}/docs/tutorial.md +0 -0
  166. {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/cli.md +0 -0
  167. {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/env.md +0 -0
  168. {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/index.md +0 -0
  169. /cgse-0.17.4/libs/cgse-common/src/egse/py.typed → /cgse-0.18.1/identifier.sqlite +0 -0
  170. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/README.md +0 -0
  171. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/noxfile.py +0 -0
  172. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  173. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  174. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  175. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/bits.py +0 -0
  176. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/calibration.py +0 -0
  177. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/config.py +0 -0
  178. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/counter.py +0 -0
  179. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/decorators.py +0 -0
  180. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/dicts.py +0 -0
  181. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/exceptions.py +0 -0
  182. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  183. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/hk.py +0 -0
  184. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/metrics.py +0 -0
  185. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/observer.py +0 -0
  186. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/obsid.py +0 -0
  187. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/persistence.py +0 -0
  188. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/plugin.py +0 -0
  189. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  190. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/process.py +0 -0
  191. /cgse-0.17.4/libs/cgse-common/tests/data/conf/config-file.toml → /cgse-0.18.1/libs/cgse-common/src/egse/py.typed +0 -0
  192. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  193. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/reload.py +0 -0
  194. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/resource.py +0 -0
  195. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/response.py +0 -0
  196. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/settings.py +0 -0
  197. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/settings.yaml +0 -0
  198. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/signal.py +0 -0
  199. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/state.py +0 -0
  200. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/task.py +0 -0
  201. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/version.py +0 -0
  202. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  203. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/conftest.py +0 -0
  204. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/COPYING +0 -0
  205. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  206. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  207. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  208. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  209. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  210. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  211. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  212. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  213. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  214. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  215. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  216. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  217. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  218. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  219. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  220. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  221. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  222. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  223. /cgse-0.17.4/libs/cgse-common/tests/data/data/empty_data_file.txt → /cgse-0.18.1/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  224. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  225. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  226. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  227. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  228. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  229. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  230. /cgse-0.17.4/libs/cgse-common/tests/data/data/empty_yaml_file.yaml → /cgse-0.18.1/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  231. /cgse-0.17.4/libs/cgse-common/tests/data/lib/dev1/shared-lib.so → /cgse-0.18.1/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  232. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  233. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  234. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  235. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  236. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  237. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  238. {cgse-0.17.4/libs/cgse-common/tests/data/lib/dev2 → cgse-0.18.1/libs/cgse-common/tests/data/lib/dev1}/shared-lib.so +0 -0
  239. /cgse-0.17.4/libs/cgse-coordinates/src/cgse_coordinates/__init__.py → /cgse-0.18.1/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  240. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  241. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  242. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  243. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  244. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  245. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  246. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  247. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  248. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_bits.py +0 -0
  249. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_config.py +0 -0
  250. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_decorators.py +0 -0
  251. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_device.py +0 -0
  252. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_env.py +0 -0
  253. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_fixtures.py +0 -0
  254. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_hk.py +0 -0
  255. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  256. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_log.py +0 -0
  257. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_metrics.py +0 -0
  258. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_plugin.py +0 -0
  259. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_process.py +0 -0
  260. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_resource.py +0 -0
  261. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_response.py +0 -0
  262. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_settings.py +0 -0
  263. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_setup.py +0 -0
  264. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_signal.py +0 -0
  265. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_state.py +0 -0
  266. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_system.py +0 -0
  267. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_task.py +0 -0
  268. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_version.py +0 -0
  269. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  270. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/README.md +0 -0
  271. {cgse-0.17.4/libs/cgse-core/src/cgse_core → cgse-0.18.1/libs/cgse-coordinates/src/cgse_coordinates}/__init__.py +0 -0
  272. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  273. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  274. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  275. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  276. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  277. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  278. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  279. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/reference_frame.py +0 -0
  280. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  281. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/rotation_matrix.py +0 -0
  282. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  283. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  284. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  285. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  286. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_point.py +0 -0
  287. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  288. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  289. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  290. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/README.md +0 -0
  291. {cgse-0.17.4/projects/ariel/ariel-facility/src/ariel_facility → cgse-0.18.1/libs/cgse-core/src/cgse_core}/__init__.py +0 -0
  292. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  293. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  294. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  295. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  296. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/services.py +0 -0
  297. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  298. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  299. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/command.py +0 -0
  300. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  301. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  302. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  303. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  304. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/connect.py +0 -0
  305. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/control.py +0 -0
  306. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/dummy.py +0 -0
  307. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  308. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  309. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  310. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  311. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  312. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  313. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  314. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/listener.py +0 -0
  315. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  316. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  317. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  318. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/mixin.py +0 -0
  319. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/monitoring.py +0 -0
  320. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  321. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  322. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  323. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
  324. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  325. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  326. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  327. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  328. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  329. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  330. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/protocol.py +0 -0
  331. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/proxy.py +0 -0
  332. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  333. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  334. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/client.py +0 -0
  335. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/server.py +0 -0
  336. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/service.py +0 -0
  337. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/services.py +0 -0
  338. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/services.yaml +0 -0
  339. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  340. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  341. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  342. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  343. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  344. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/conftest.py +0 -0
  345. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  346. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  347. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  348. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/services.py +0 -0
  349. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  350. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  351. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  352. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  353. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  354. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/services.py +0 -0
  355. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  356. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  357. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  358. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_command.py +0 -0
  359. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  360. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_connect.py +0 -0
  361. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_control.py +0 -0
  362. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_dummy.py +0 -0
  363. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_event_notification.py +0 -0
  364. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_extensions.py +0 -0
  365. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_listener.py +0 -0
  366. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_logger.py +0 -0
  367. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_mixin.py +0 -0
  368. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  369. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_protocol.py +0 -0
  370. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  371. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_registry_service.py +0 -0
  372. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_server_running.py +0 -0
  373. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  374. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_settings_core.py +0 -0
  375. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  376. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/README.md +0 -0
  377. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  378. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  379. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  380. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  381. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  382. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  383. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  384. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  385. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  386. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  387. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  388. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  389. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  390. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  391. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  392. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  393. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  394. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  395. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  396. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  397. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  398. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  399. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  400. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  401. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  402. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  403. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  404. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  405. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  406. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  407. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  408. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  409. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  410. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  411. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  412. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  413. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  414. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  415. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  416. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  417. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  418. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  419. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  420. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  421. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  422. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  423. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  424. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  425. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  426. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  427. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  428. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  429. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  430. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  431. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  432. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  433. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  434. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  435. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  436. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  437. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  438. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  439. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  440. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  441. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  442. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  443. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  444. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  445. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  446. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  447. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  448. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  449. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  450. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  451. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  452. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  453. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  454. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  455. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  456. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  457. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  458. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  459. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  460. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  461. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  462. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  463. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  464. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  465. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  466. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  467. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  468. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  469. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  470. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  471. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  472. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  473. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  474. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  475. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  476. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  477. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  478. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  479. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  480. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  481. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  482. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  483. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  484. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  485. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  486. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  487. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  488. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  489. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  490. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  491. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  492. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  493. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  494. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  495. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  496. {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  497. {cgse-0.17.4 → cgse-0.18.1}/mkdocs.yml +0 -0
  498. {cgse-0.17.4 → cgse-0.18.1}/noxfile.py +0 -0
  499. {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/dbend-dark.svg +0 -0
  500. {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/dbend-light.svg +0 -0
  501. /cgse-0.17.4/projects/ariel/ariel-facility/README.MD → /cgse-0.18.1/projects/ariel/ariel-facility/README.md +0 -0
  502. {cgse-0.17.4/projects/ariel/ariel-facility/src/egse/ariel/facility → cgse-0.18.1/projects/ariel/ariel-facility/src/ariel_facility}/__init__.py +0 -0
  503. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/cgse_explore.py +0 -0
  504. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/cgse_services.py +0 -0
  505. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/settings.yaml +0 -0
  506. {cgse-0.17.4/projects/ariel/ariel-tcu/src/ariel_tcu → cgse-0.18.1/projects/ariel/ariel-facility/src/egse/ariel/facility}/__init__.py +0 -0
  507. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/egse/ariel/facility/database.py +0 -0
  508. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/egse/ariel/facility/hk.py +0 -0
  509. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/README.md +0 -0
  510. {cgse-0.17.4/projects/generic/cgse-tools/src/cgse_tools → cgse-0.18.1/projects/ariel/ariel-tcu/src/ariel_tcu}/__init__.py +0 -0
  511. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_explore.py +0 -0
  512. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_services.py +0 -0
  513. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/settings.yaml +0 -0
  514. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/__init__.py +0 -0
  515. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.py +0 -0
  516. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.yaml +0 -0
  517. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cmd_utils.py +0 -0
  518. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_devif.py +0 -0
  519. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_protocol.py +0 -0
  520. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_ui.py +0 -0
  521. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/tests/test_tcu.py +0 -0
  522. {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/tests/test_tcu_cmd_utils.py +0 -0
  523. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/README.md +0 -0
  524. {cgse-0.17.4/projects/generic/digilent/src/digilent → cgse-0.18.1/projects/generic/cgse-tools/src/cgse_tools}/__init__.py +0 -0
  525. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  526. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  527. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  528. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  529. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/README.md +0 -0
  530. {cgse-0.17.4/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol → cgse-0.18.1/projects/generic/digilent/src/digilent}/__init__.py +0 -0
  531. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/cgse_explore.py +0 -0
  532. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/cgse_services.py +0 -0
  533. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/settings.yaml +0 -0
  534. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/__init__.py +0 -0
  535. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.yaml +0 -0
  536. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_devif.py +0 -0
  537. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/README.md +0 -0
  538. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  539. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  540. {cgse-0.17.4/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol → cgse-0.18.1/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol}/__init__.py +0 -0
  541. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  542. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  543. {cgse-0.17.4/projects/generic/symetrie-hexapod/src/symetrie_hexapod → cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply}/__init__.py +0 -0
  544. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  545. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  546. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  547. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  548. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  549. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  550. /cgse-0.17.4/projects/plato/plato-hdf5/README.md → /cgse-0.18.1/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  551. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  552. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  553. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  554. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  555. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/README.md +0 -0
  556. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  557. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  558. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  559. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  560. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  561. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  562. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  563. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  564. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  565. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  566. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  567. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  568. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  569. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  570. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  571. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  572. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  573. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  574. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  575. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  576. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  577. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  578. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  579. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  580. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  581. /cgse-0.17.4/projects/plato/plato-spw/README.md → /cgse-0.18.1/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  582. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  583. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  584. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  585. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  586. {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  587. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/README.md +0 -0
  588. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  589. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  590. {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  591. {cgse-0.17.4 → cgse-0.18.1}/ruff.toml +0 -0
@@ -22,9 +22,14 @@ dist
22
22
  .nox
23
23
  htmlcov
24
24
 
25
- # Virtual environments
25
+ # dotenv, ignore all but the example file
26
26
 
27
27
  .env
28
+ .env.*
29
+ !.env.example
30
+
31
+ # Virtual environments
32
+
28
33
  .venv
29
34
  venv
30
35
 
@@ -0,0 +1,15 @@
1
+ {
2
+ "account_id": "TH3OTWXUQRFT7O7QV447RPGKII",
3
+ "entrypoint": [
4
+ "gh"
5
+ ],
6
+ "credentials": [
7
+ {
8
+ "plugin": "github",
9
+ "credential_type": "personal_access_token",
10
+ "usage_id": "personal_access_token",
11
+ "vault_id": "hftanxm6nbsh6dd4je5xzpmqwa",
12
+ "item_id": "iq66j22e5sstusksk6dwxsh7eq"
13
+ }
14
+ ]
15
+ }
@@ -8,13 +8,61 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.18.1] - 2026-02-05
12
+
13
+ This is a minor update of the DAQ6510:
14
+ - Enhanced the DAQ6510 interface with default buffer usage, improved command formatting, and better response handling.
15
+ - Introduced verbose logging for socket operations in `SocketDevice`.
16
+ - Updated sensor configuration to support multiple sensing types.
17
+ - Added unit tests for the DAQ6510 controller and proxy functionality to ensure reliability.
18
+ - Refactored the DAQ6510 monitoring script for better readability and structure.
19
+
20
+ ## [0.18.0] - 2026-02-04
21
+
22
+ ### Added
23
+
24
+ - Implementation of KIKUSUI PMX-A power supply
25
+ - The project is now licensed under the MIT license.
26
+
27
+ ### Changed
28
+
29
+ - Refactoring Keithley DAQ6510
30
+ - Synchronous device, controller, control server and monitoring needed an update.
31
+ - Asynchronous device and monitoring have been tested, but need an update to use the Setup for configuration.
32
+ - set default timeout value for Keithley DAQ6510 configuration
33
+ - set default port number of the DAQ6510 device to 5025
34
+ - the DAQ6510 synchronous device implementation is now a `SocketDevice`
35
+
36
+ - on `cgse-common`
37
+ - improvements to the asynchronous SCPI interface
38
+ - some devices write an identification to the socket after connection, some devices don't. The read-after-connect can now be disabled/enabled.
39
+ - functions to create and inspect channel lists have been added to `scpi.py`
40
+ - `DeviceConnectionError` now also inherits from `ConnectionError`
41
+ - `SocketDevice` has been improved and now takes into account the separator that was passed into the constructor.
42
+
43
+ ### Fixed
44
+
45
+ - The SetupManager implements a lazy initialization to prevent circular imports by plugins. The default source for the Setups was not properly updated after lazy initialization. That is now fixed.
46
+
11
47
  ## [0.17.4] - 2026-01-27
12
48
 
49
+ ### Added
50
+
13
51
  - Extracting HK from Ariel facility database
52
+ - Implementation of Digilent MEASURpoint DT8874
53
+ - Preliminary 1st version of the TCU UI
54
+ - Added synchronous and asynchronous service connectors for robust service connection management with retry, backoff, and circuit breaker logic. These classes is intended to be subclassed for managing persistent connections to external services (such as devices, databases, or remote APIs) that may be unreliable or temporarily unavailable.
55
+ - Added SocketDevice and AsyncSocketDevice implementations. Devices that connect through Ethernet can inherit from these classes to handle their basic `read()`, `write()`, `trans()`, and `query()` methods.
56
+
57
+ ### Changed
58
+
14
59
  - Re-shuffled hexapod settings
15
- - Cleaned up cgse-coordinates
60
+ - Enable TCU CS to run without core services
16
61
  - Maintenance on cgse-core
17
- - Implementation of Digilent MEASURpoint DT8874
62
+
63
+ ### Fixed
64
+ - Cleaned up cgse-coordinates, removed obsolete settings
65
+ - Fixed timeouts and signals for Dummy device code
18
66
 
19
67
 
20
68
  ## [0.17.3] - 2025-11-29
@@ -210,7 +258,10 @@ This release is mainly on maintenance and improvements to the `cgse-common` pack
210
258
  - Renamed `cgse` subcommands `registry` → `reg`, `notify` → `not`.
211
259
 
212
260
 
213
- [Unreleased]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.3...HEAD
261
+ [Unreleased]: https://github.com/IvS-KULeuven/cgse/compare/v0.18.1...HEAD
262
+ [0.18.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.18.0...v0.18.1
263
+ [0.18.0]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.4...v0.18.0
264
+ [0.17.4]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.3...v0.17.4
214
265
  [0.17.3]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.2...v0.17.3
215
266
  [0.17.2]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.1...v0.17.2
216
267
  [0.17.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.0...v0.17.1
cgse-0.18.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Instituut voor sterrenkunde - KU Leuven
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,10 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.17.4
3
+ Version: 0.18.1
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>
7
7
  License: MIT
8
+ License-File: LICENSE
8
9
  Requires-Python: >=3.10
9
10
  Requires-Dist: cgse-common
10
11
  Requires-Dist: cgse-core
Binary file
Binary file
cgse-0.18.1/justfile ADDED
@@ -0,0 +1,69 @@
1
+ # If you don't have 'just' installed, install it with the following command:
2
+ #
3
+ # $ uv tool install rust-just
4
+ #
5
+ # The 'just' website: https://just.systems/man/en/
6
+
7
+ # print the available commands
8
+ default:
9
+ @just --list
10
+
11
+ # demo on using Python with Just
12
+ hello arg="":
13
+ #!/usr/bin/env uv run --script
14
+ # /// script
15
+ # requires-python = ">=3.10"
16
+ # dependencies=["rich"]
17
+ # ///
18
+ import rich
19
+ print("Hello from Python!")
20
+ if "{{arg}}".lower() != "":
21
+ rich.print("A second [blue]blue line[/]... with 'Hello, {{arg}}!'")
22
+
23
+
24
+ # What architecture and OS are we running on
25
+ system-info:
26
+ @echo "This is an {{arch()}} machine, running {{os()}}".
27
+
28
+ default_python := "3.10"
29
+
30
+ # Start an IPython session
31
+ ipython version=default_python:
32
+ #!/usr/bin/env sh
33
+ if [ "{{version}}" != {{default_python}} ] ; then
34
+ uv sync --python {{version}} --all-packages
35
+ fi
36
+ uv run --with ipython --python {{version}} ipython
37
+ uv sync --python {{default_python}} --all-packages --all-groups
38
+
39
+ # Serve the documentation
40
+ docs-serve:
41
+ uv run mkdocs serve
42
+
43
+ # Build the documentation
44
+ docs-build:
45
+ uv run mkdocs build
46
+
47
+ # Publish the documentation
48
+ docs-publish: docs-build
49
+ uv run mkdocs gh-deploy -r upstream -m "documentation update"
50
+
51
+ default_part := "patch"
52
+
53
+ # part can be (patch | minor | major)
54
+ bump part=default_part:
55
+ #!/usr/bin/env sh
56
+ if [ -z "{{part}}" ] ; then
57
+ echo Version will not be bumped.
58
+ else
59
+ uv run bump.py --no-verbose {{part}}
60
+ fi
61
+
62
+ # part can be (patch | minor | major)
63
+ build part="": (bump part)
64
+ rm -r dist
65
+ uv build --all-packages
66
+
67
+ # part can be (patch | minor | major)
68
+ publish part="": (build part)
69
+ uv publish --token $UV_PUBLISH_TOKEN
@@ -0,0 +1,20 @@
1
+ # If you don't have 'just' installed, install it with the following command:
2
+ #
3
+ # $ uv tool install rust-just
4
+ #
5
+ # The 'just' website: https://just.systems/man/en/
6
+
7
+ default:
8
+ @just --list
9
+
10
+ typecheck:
11
+ uv run --with mypy mypy -p egse --strict
12
+
13
+ test:
14
+ uv run pytest -v
15
+
16
+ format:
17
+ uvx ruff format
18
+
19
+ check:
20
+ uvx ruff check --no-fix
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "0.17.4"
3
+ version = "0.18.1"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -54,7 +54,7 @@ class DeviceControllerError(DeviceError):
54
54
  super().__init__(device_name, message)
55
55
 
56
56
 
57
- class DeviceConnectionError(DeviceError):
57
+ class DeviceConnectionError(DeviceError, ConnectionError):
58
58
  """A generic error for all connection type of problems.
59
59
 
60
60
  Args:
@@ -170,7 +170,7 @@ def setup_env():
170
170
  return
171
171
 
172
172
  if VERBOSE_DEBUG:
173
- logger.debug(f"Initialising the environment...")
173
+ logger.debug("Initializing the environment...")
174
174
 
175
175
  load_dotenv()
176
176
 
@@ -131,12 +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
134
+ # Optional: integrate with Textual logging if available
135
+ #
136
+ # try:
137
+ # from textual.logging import TextualHandler
138
+
139
+ # root_logger.addHandler(TextualHandler())
140
+ # except ImportError:
141
+ # pass
140
142
 
141
143
 
142
144
  logger = egse_logger
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import re
2
3
  import socket
3
4
  from typing import Any
4
5
  from typing import Dict
@@ -14,6 +15,7 @@ from egse.log import logger
14
15
 
15
16
  DEFAULT_READ_TIMEOUT = 1.0 # seconds
16
17
  DEFAULT_CONNECT_TIMEOUT = 3.0 # seconds
18
+ DEFAULT_READ_AFTER_CONNECT = False
17
19
  IDENTIFICATION_QUERY = "*IDN?"
18
20
 
19
21
  VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
@@ -49,6 +51,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
49
51
  settings: Optional[Dict[str, Any]] = None,
50
52
  connect_timeout: float = DEFAULT_CONNECT_TIMEOUT,
51
53
  read_timeout: float = DEFAULT_READ_TIMEOUT,
54
+ read_after_connect: bool = DEFAULT_READ_AFTER_CONNECT,
52
55
  id_validation: Optional[str] = None,
53
56
  ):
54
57
  """Initialize an asynchronous Ethernet interface for SCPI communication.
@@ -60,6 +63,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
60
63
  settings: Additional device-specific settings
61
64
  connect_timeout: Timeout for connection attempts in seconds
62
65
  read_timeout: Timeout for read operations in seconds
66
+ read_after_connect: Whether to perform a read operation immediately after connecting
63
67
  id_validation: String that should appear in the device's identification response
64
68
  """
65
69
  super().__init__()
@@ -70,6 +74,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
70
74
  self.settings = settings or {}
71
75
  self.connect_timeout = connect_timeout
72
76
  self.read_timeout = read_timeout
77
+ self.read_after_connect = read_after_connect
73
78
  self.id_validation = id_validation
74
79
 
75
80
  self._reader = None
@@ -87,7 +92,29 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
87
92
  def device_name(self) -> str:
88
93
  return self._device_name
89
94
 
90
- async def initialize(self, commands: list[tuple[str, bool]] = None, reset_device: bool = False) -> list[str | None]:
95
+ async def get_idn_parts(self) -> list[str]:
96
+ """Get the device identification string and return its parts.
97
+
98
+ The *IDN? command is sent to the device, and the response is split into its
99
+ components: Manufacturer, Model, Serial Number, Firmware Version.
100
+
101
+ Returns:
102
+ A list containing Manufacturer, Model, Serial Number, Firmware Version.
103
+
104
+ Raises:
105
+ DeviceError: When the device is not connected or communication fails.
106
+ """
107
+ if not self._is_connection_open:
108
+ raise DeviceError(self._device_name, "Device not connected, use connect() first")
109
+
110
+ idn_str = (await self.query(IDENTIFICATION_QUERY)).decode().strip()
111
+ if VERBOSE_DEBUG:
112
+ logger.debug(f"{self._device_name} IDN response: {idn_str}")
113
+ return idn_str.split(",")
114
+
115
+ async def initialize(
116
+ self, commands: list[tuple[str, bool]] | None = None, reset_device: bool = False
117
+ ) -> list[str | None]:
91
118
  """Initialize the device with optional reset and command sequence.
92
119
 
93
120
  Performs device initialization by optionally resetting the device and then
@@ -168,10 +195,6 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
168
195
 
169
196
  self._is_connection_open = True
170
197
 
171
- response = await self.read_string()
172
- if VERBOSE_DEBUG:
173
- logger.debug(f"Response after connection: {response}")
174
-
175
198
  logger.debug(f"Successfully connected to {self._device_name}.")
176
199
 
177
200
  except asyncio.TimeoutError as exc:
@@ -189,6 +212,13 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
189
212
  except OSError as exc:
190
213
  raise DeviceConnectionError(self._device_name, f"OS error: {exc}") from exc
191
214
 
215
+ # Some devices require an initial read after connection.
216
+ # We have to read this message from the buffer and can do some version checking if needed.
217
+ if self.read_after_connect:
218
+ response = await self.read_string()
219
+ if VERBOSE_DEBUG:
220
+ logger.debug(f"Response after connection: {response}")
221
+
192
222
  # Validate device identity if requested
193
223
  if self.id_validation:
194
224
  logger.debug("Validating connection..")
@@ -268,7 +298,8 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
268
298
  if not command.endswith(SEPARATOR_STR):
269
299
  command += SEPARATOR_STR
270
300
 
271
- logger.info(f"-----> {command}")
301
+ if VERBOSE_DEBUG:
302
+ logger.debug(f"-----> {command}")
272
303
  self._writer.write(command.encode())
273
304
  await self._writer.drain()
274
305
 
@@ -301,7 +332,8 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
301
332
  response = await asyncio.wait_for(
302
333
  self._reader.readuntil(separator=SEPARATOR), timeout=self.read_timeout
303
334
  )
304
- logger.info(f"<----- {response}")
335
+ if VERBOSE_DEBUG:
336
+ logger.debug(f"<----- {response}")
305
337
  return response
306
338
 
307
339
  except asyncio.IncompleteReadError as exc:
@@ -341,14 +373,16 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
341
373
 
342
374
  async with self._io_lock:
343
375
  try:
344
- if not self._is_connection_open or self._writer is None:
376
+ if not self._is_connection_open or self._writer is None or self._reader is None:
345
377
  raise DeviceConnectionError(self._device_name, "Device not connected, use connect() first")
346
378
 
347
379
  # Ensure command ends with the required terminator
348
380
  if not command.endswith(SEPARATOR_STR):
349
381
  command += SEPARATOR_STR
350
382
 
351
- logger.info(f"-----> {command=}")
383
+ if VERBOSE_DEBUG:
384
+ logger.debug(f"-----> {command=}")
385
+
352
386
  self._writer.write(command.encode())
353
387
  await self._writer.drain()
354
388
 
@@ -360,7 +394,8 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
360
394
  response = await asyncio.wait_for(
361
395
  self._reader.readuntil(separator=SEPARATOR), timeout=self.read_timeout
362
396
  )
363
- logger.info(f"<----- {response=}")
397
+ if VERBOSE_DEBUG:
398
+ logger.debug(f"<----- {response=}")
364
399
  return response
365
400
 
366
401
  except asyncio.IncompleteReadError as exc:
@@ -392,3 +427,156 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
392
427
  async def __aexit__(self, exc_type, exc_val, exc_tb):
393
428
  """Async context manager exit."""
394
429
  await self.disconnect()
430
+
431
+
432
+ def create_channel_list(*args) -> str:
433
+ """
434
+ Create a channel list that is understood by SCPI commands.
435
+
436
+ Channel names are device-specific.
437
+
438
+ For the DAQ6510: Channel names contain both the slot number and the channel number.
439
+ The slot number is the number of the slot where the card is installed at the back of
440
+ the device.
441
+
442
+ When addressing multiple individual channels, add each of them as a separate argument,
443
+ e.g. to include channels 1, 3, and 7 from slot 1, use the following command:
444
+
445
+ >>> create_channel_list(101, 103, 107)
446
+ '(@101, 103, 107)'
447
+
448
+ To designate a range of channels, only one argument should be given, i.e. a tuple containing
449
+ two channel representing the range. The following tuple `(101, 110)` will create the
450
+ following response: `"(@101:110)"`. The range is inclusive, so this will define a range of
451
+ 10 channels in slot 1.
452
+
453
+ >>> create_channel_list((201, 205))
454
+ '(@201:205)'
455
+
456
+ See reference manual for the Keithley DAQ6510 [DAQ6510-901-01 Rev. B / September 2019],
457
+ chapter 11: Introduction to SCPI commands, SCPI command formatting, channel naming.
458
+
459
+ Args:
460
+ *args: a tuple or a list of channels
461
+
462
+ Returns:
463
+ A string containing the channel list as understood by the SCPI device.
464
+
465
+ """
466
+ if not args:
467
+ return ""
468
+
469
+ # If only one argument is given, I expect either a tuple defining a range
470
+ # or just one channel. When several arguments are given, I expect them all
471
+ # to be individual channels.
472
+
473
+ ch_list = []
474
+ for arg in args:
475
+ if isinstance(arg, (tuple, list)):
476
+ match len(arg):
477
+ case 2:
478
+ ch_list.append(f"{arg[0]}:{arg[1]}")
479
+ case 1:
480
+ ch_list.append(f"{arg[0]}")
481
+ case _:
482
+ raise ValueError(
483
+ "Invalid argument: when providing a tuple or list, it must contain one or two elements."
484
+ )
485
+ else:
486
+ ch_list.append(f"{arg}")
487
+
488
+ # else:
489
+ # ch_list = "(@" + ",".join([str(arg) for arg in args]) + ")"
490
+
491
+ return "(@" + ",".join(x for x in ch_list if x.isdigit() or ":" in x) + ")"
492
+
493
+
494
+ def count_number_of_channels(channel_list: str) -> int:
495
+ """
496
+ Given a proper channel list, this function counts the number of channels.
497
+ For ranges, it returns the actual number of channels that are included in the range.
498
+
499
+ >>> count_number_of_channels("(@1,2,3,4,5)")
500
+ 5
501
+ >>> count_number_of_channels("(@1, 3, 5)")
502
+ 3
503
+ >>> count_number_of_channels("(@2:7)")
504
+ 6
505
+
506
+ Args:
507
+ channel_list: a channel list as understood by the SCPI commands of DAQ6510.
508
+
509
+ Returns:
510
+ The number of channels in the list.
511
+ """
512
+
513
+ match = re.match(r"\(@(.*)\)", channel_list)
514
+ if match is None:
515
+ logger.error(f"Invalid channel specification in '{channel_list}'")
516
+ return 0
517
+ group = match.groups()[0]
518
+
519
+ parts = group.replace(" ", "").split(",")
520
+
521
+ try:
522
+ count = 0
523
+ for part in parts:
524
+ if ":" in part:
525
+ channels = part.split(":")
526
+ if len(channels) != 2:
527
+ raise ValueError()
528
+ count += int(channels[1]) - int(channels[0]) + 1
529
+ else:
530
+ if not part.isdigit():
531
+ raise ValueError()
532
+ count += 1
533
+ except ValueError:
534
+ logger.error(f"Invalid channel specification in '{channel_list}'")
535
+ return 0
536
+
537
+ return count
538
+
539
+
540
+ def get_channel_names(channel_list: str) -> list[str]:
541
+ """
542
+ Generate a list of channel names from a given channel list.
543
+
544
+ Args:
545
+ channel_list: a channel list as understood by the SCPI.
546
+
547
+ Returns:
548
+ A list of channel names.
549
+ """
550
+
551
+ match = re.match(r"\(@(.*)\)", channel_list)
552
+ if match is None:
553
+ logger.error(f"Invalid channel specification in '{channel_list}'")
554
+ return []
555
+
556
+ group = match.groups()[0]
557
+
558
+ parts = group.replace(" ", "").split(",")
559
+
560
+ try:
561
+ names: list[str] = []
562
+
563
+ for part in parts:
564
+ if ":" in part:
565
+ channels = part.split(":")
566
+ if len(channels) != 2:
567
+ raise ValueError()
568
+ names.extend(str(ch) for ch in range(int(channels[0]), int(channels[1]) + 1))
569
+ else:
570
+ if not part.isdigit():
571
+ raise ValueError()
572
+ names.append(part)
573
+
574
+ # If there are still any invalid names, raise an error
575
+ if not all(True if x and x.isdigit() else False for x in names):
576
+ raise ValueError()
577
+
578
+ except ValueError:
579
+ logger.error(f"Invalid channel specification in '{channel_list}'")
580
+ return []
581
+
582
+ return names
@@ -936,9 +936,13 @@ class SetupManager:
936
936
  def set_default_source(self, source: str):
937
937
  self._default_source = source
938
938
 
939
- def load_setup(self, setup_id: int = None, **kwargs):
940
- source = kwargs.get("source") or self._default_source
939
+ def get_default_source(self):
940
+ # Trigger provider discovery because they can change the default source if they handle core-services
941
+ _ = self.providers
942
+ return self._default_source
941
943
 
944
+ def load_setup(self, setup_id: int = None, **kwargs):
945
+ source = kwargs.get("source") or self.get_default_source()
942
946
  for provider in self.providers:
943
947
  if provider.can_handle(source):
944
948
  return provider.load_setup(setup_id, **kwargs)
@@ -947,7 +951,7 @@ class SetupManager:
947
951
  return LocalSetupProvider().load_setup(setup_id, **kwargs)
948
952
 
949
953
  def submit_setup(self, setup: Setup, description: str, **kwargs):
950
- source = kwargs.get("source") or self._default_source
954
+ source = kwargs.get("source") or self.get_default_source()
951
955
  for provider in self.providers:
952
956
  if provider.can_handle(source):
953
957
  return provider.submit_setup(setup, description, **kwargs)
@@ -957,7 +961,6 @@ class SetupManager:
957
961
 
958
962
  _setup_manager = SetupManager()
959
963
 
960
-
961
964
  if __name__ == "__main__":
962
965
  from egse.env import setup_env
963
966