cgse 0.16.13__tar.gz → 0.16.14__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 (542) hide show
  1. {cgse-0.16.13 → cgse-0.16.14}/PKG-INFO +1 -1
  2. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/pyproject.toml +1 -1
  3. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/pyproject.toml +1 -1
  4. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/pyproject.toml +1 -1
  5. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/mixin.py +89 -42
  6. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_mixin.py +18 -13
  7. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/pyproject.toml +1 -1
  8. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/pyproject.toml +1 -1
  9. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
  10. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
  11. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
  12. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-fits/pyproject.toml +1 -1
  13. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-hdf5/pyproject.toml +1 -1
  14. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-spw/pyproject.toml +1 -1
  15. {cgse-0.16.13 → cgse-0.16.14}/pyproject.toml +1 -1
  16. {cgse-0.16.13 → cgse-0.16.14}/service_registry.db +0 -0
  17. {cgse-0.16.13 → cgse-0.16.14}/service_registry.db-shm +0 -0
  18. {cgse-0.16.13 → cgse-0.16.14}/service_registry.db-wal +0 -0
  19. {cgse-0.16.13 → cgse-0.16.14}/.github/workflows/ruff-format-check.yaml +0 -0
  20. {cgse-0.16.13 → cgse-0.16.14}/.gitignore +0 -0
  21. {cgse-0.16.13 → cgse-0.16.14}/README.md +0 -0
  22. {cgse-0.16.13 → cgse-0.16.14}/buffer_vat.log +0 -0
  23. {cgse-0.16.13 → cgse-0.16.14}/buffer_vat.png +0 -0
  24. {cgse-0.16.13 → cgse-0.16.14}/bump.py +0 -0
  25. {cgse-0.16.13 → cgse-0.16.14}/conftest.py +0 -0
  26. {cgse-0.16.13 → cgse-0.16.14}/docs/api/bits.md +0 -0
  27. {cgse-0.16.13 → cgse-0.16.14}/docs/api/calibration.md +0 -0
  28. {cgse-0.16.13 → cgse-0.16.14}/docs/api/command.md +0 -0
  29. {cgse-0.16.13 → cgse-0.16.14}/docs/api/config.md +0 -0
  30. {cgse-0.16.13 → cgse-0.16.14}/docs/api/control.md +0 -0
  31. {cgse-0.16.13 → cgse-0.16.14}/docs/api/counter.md +0 -0
  32. {cgse-0.16.13 → cgse-0.16.14}/docs/api/decorators.md +0 -0
  33. {cgse-0.16.13 → cgse-0.16.14}/docs/api/device.md +0 -0
  34. {cgse-0.16.13 → cgse-0.16.14}/docs/api/dicts.md +0 -0
  35. {cgse-0.16.13 → cgse-0.16.14}/docs/api/dummy.md +0 -0
  36. {cgse-0.16.13 → cgse-0.16.14}/docs/api/env.md +0 -0
  37. {cgse-0.16.13 → cgse-0.16.14}/docs/api/exceptions.md +0 -0
  38. {cgse-0.16.13 → cgse-0.16.14}/docs/api/heartbeat.md +0 -0
  39. {cgse-0.16.13 → cgse-0.16.14}/docs/api/hk.md +0 -0
  40. {cgse-0.16.13 → cgse-0.16.14}/docs/api/index.md +0 -0
  41. {cgse-0.16.13 → cgse-0.16.14}/docs/api/listener.md +0 -0
  42. {cgse-0.16.13 → cgse-0.16.14}/docs/api/metrics.md +0 -0
  43. {cgse-0.16.13 → cgse-0.16.14}/docs/api/mixin.md +0 -0
  44. {cgse-0.16.13 → cgse-0.16.14}/docs/api/monitoring.md +0 -0
  45. {cgse-0.16.13 → cgse-0.16.14}/docs/api/observer.md +0 -0
  46. {cgse-0.16.13 → cgse-0.16.14}/docs/api/obsid.md +0 -0
  47. {cgse-0.16.13 → cgse-0.16.14}/docs/api/persistence.md +0 -0
  48. {cgse-0.16.13 → cgse-0.16.14}/docs/api/plugin.md +0 -0
  49. {cgse-0.16.13 → cgse-0.16.14}/docs/api/process.md +0 -0
  50. {cgse-0.16.13 → cgse-0.16.14}/docs/api/reload.md +0 -0
  51. {cgse-0.16.13 → cgse-0.16.14}/docs/api/settings.md +0 -0
  52. {cgse-0.16.13 → cgse-0.16.14}/docs/api/setup.md +0 -0
  53. {cgse-0.16.13 → cgse-0.16.14}/docs/api/system.md +0 -0
  54. {cgse-0.16.13 → cgse-0.16.14}/docs/custom_theme/main.html +0 -0
  55. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/coding_style.md +0 -0
  56. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/docs.md +0 -0
  57. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/index.md +0 -0
  58. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/installation.md +0 -0
  59. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/monitoring.md +0 -0
  60. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/monorepo.md +0 -0
  61. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/nox.md +0 -0
  62. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/plugins.md +0 -0
  63. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/project-configuration.md +0 -0
  64. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/unit_testing.md +0 -0
  65. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/uv.md +0 -0
  66. {cgse-0.16.13 → cgse-0.16.14}/docs/dev_guide/versioning.md +0 -0
  67. {cgse-0.16.13 → cgse-0.16.14}/docs/getting_started.md +0 -0
  68. {cgse-0.16.13 → cgse-0.16.14}/docs/help.md +0 -0
  69. {cgse-0.16.13 → cgse-0.16.14}/docs/images/cli-cgse.png +0 -0
  70. {cgse-0.16.13 → cgse-0.16.14}/docs/images/github-fork-clone-dark.png +0 -0
  71. {cgse-0.16.13 → cgse-0.16.14}/docs/images/github-fork-clone.png +0 -0
  72. {cgse-0.16.13 → cgse-0.16.14}/docs/images/grafana-queries.png +0 -0
  73. {cgse-0.16.13 → cgse-0.16.14}/docs/images/icons/cgse-logo-blue.svg +0 -0
  74. {cgse-0.16.13 → cgse-0.16.14}/docs/images/icons/cgse-logo.svg +0 -0
  75. {cgse-0.16.13 → cgse-0.16.14}/docs/index.md +0 -0
  76. {cgse-0.16.13 → cgse-0.16.14}/docs/initialize.md +0 -0
  77. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-common/images/load_methods.png +0 -0
  78. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-common/index.md +0 -0
  79. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-common/settings.md +0 -0
  80. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-common/setup.md +0 -0
  81. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-coordinates/index.md +0 -0
  82. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-core/index.md +0 -0
  83. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-core/notifyhub.md +0 -0
  84. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-core/registry.md +0 -0
  85. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/cgse-gui/index.md +0 -0
  86. {cgse-0.16.13 → cgse-0.16.14}/docs/libs/index.md +0 -0
  87. {cgse-0.16.13 → cgse-0.16.14}/docs/package_list.md +0 -0
  88. {cgse-0.16.13 → cgse-0.16.14}/docs/projects/cgse-tools.md +0 -0
  89. {cgse-0.16.13 → cgse-0.16.14}/docs/projects/index.md +0 -0
  90. {cgse-0.16.13 → cgse-0.16.14}/docs/projects/symetrie-hexapod.md +0 -0
  91. {cgse-0.16.13 → cgse-0.16.14}/docs/roadmap.md +0 -0
  92. {cgse-0.16.13 → cgse-0.16.14}/docs/stylesheets/custom.css +0 -0
  93. {cgse-0.16.13 → cgse-0.16.14}/docs/stylesheets/extra.css +0 -0
  94. {cgse-0.16.13 → cgse-0.16.14}/docs/tutorial.md +0 -0
  95. {cgse-0.16.13 → cgse-0.16.14}/docs/user_guide/cli.md +0 -0
  96. {cgse-0.16.13 → cgse-0.16.14}/docs/user_guide/index.md +0 -0
  97. {cgse-0.16.13 → cgse-0.16.14}/duckdb_metrics.db +0 -0
  98. {cgse-0.16.13 → cgse-0.16.14}/duckdb_metrics.db.wal +0 -0
  99. {cgse-0.16.13 → cgse-0.16.14}/identifier.sqlite +0 -0
  100. {cgse-0.16.13 → cgse-0.16.14}/justfile +0 -0
  101. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/README.md +0 -0
  102. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/justfile +0 -0
  103. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/noxfile.py +0 -0
  104. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/service_registry.db +0 -0
  105. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
  106. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
  107. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
  108. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/bits.py +0 -0
  109. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/calibration.py +0 -0
  110. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/config.py +0 -0
  111. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/counter.py +0 -0
  112. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/decorators.py +0 -0
  113. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/device.py +0 -0
  114. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/dicts.py +0 -0
  115. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/env.py +0 -0
  116. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/exceptions.py +0 -0
  117. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/heartbeat.py +0 -0
  118. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/hk.py +0 -0
  119. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/log.py +0 -0
  120. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/metrics.py +0 -0
  121. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/observer.py +0 -0
  122. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/obsid.py +0 -0
  123. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/persistence.py +0 -0
  124. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/plugin.py +0 -0
  125. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
  126. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
  127. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
  128. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/process.py +0 -0
  129. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/py.typed +0 -0
  130. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/randomwalk.py +0 -0
  131. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/ratelimit.py +0 -0
  132. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/reload.py +0 -0
  133. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/resource.py +0 -0
  134. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/response.py +0 -0
  135. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/scpi.py +0 -0
  136. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/settings.py +0 -0
  137. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/settings.yaml +0 -0
  138. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/setup.py +0 -0
  139. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/signal.py +0 -0
  140. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/socketdevice.py +0 -0
  141. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/state.py +0 -0
  142. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/system.py +0 -0
  143. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/task.py +0 -0
  144. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/version.py +0 -0
  145. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
  146. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/conftest.py +0 -0
  147. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/COPYING +0 -0
  148. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
  149. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
  150. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
  151. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
  152. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
  153. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
  154. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
  155. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
  156. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/IAS/README.md +0 -0
  157. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/INTA/README.md +0 -0
  158. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
  159. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
  160. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
  161. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
  162. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
  163. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
  164. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
  165. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
  166. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
  167. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
  168. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
  169. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
  170. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/command.yaml +0 -0
  171. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
  172. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
  173. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
  174. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
  175. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
  176. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
  177. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
  178. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
  179. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
  180. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
  181. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
  182. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
  183. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
  184. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
  185. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
  186. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
  187. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
  188. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
  189. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/void-0.py +0 -0
  190. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/scripts/void-1.py +0 -0
  191. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_bits.py +0 -0
  192. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_config.py +0 -0
  193. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_decorators.py +0 -0
  194. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_device.py +0 -0
  195. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_env.py +0 -0
  196. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_fixtures.py +0 -0
  197. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_hk.py +0 -0
  198. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
  199. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_log.py +0 -0
  200. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_metrics.py +0 -0
  201. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_plugin.py +0 -0
  202. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_process.py +0 -0
  203. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_ratelimit.py +0 -0
  204. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_resource.py +0 -0
  205. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_response.py +0 -0
  206. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_settings.py +0 -0
  207. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_setup.py +0 -0
  208. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_signal.py +0 -0
  209. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_state.py +0 -0
  210. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_system.py +0 -0
  211. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_task.py +0 -0
  212. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
  213. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/README.md +0 -0
  214. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
  215. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
  216. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
  217. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
  218. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
  219. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
  220. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
  221. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
  222. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
  223. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
  224. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
  225. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
  226. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
  227. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
  228. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
  229. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_point.py +0 -0
  230. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
  231. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
  232. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
  233. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/.envrc.disabled +0 -0
  234. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/README.md +0 -0
  235. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/service_registry.db +0 -0
  236. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
  237. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/_start.py +0 -0
  238. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/_status.py +0 -0
  239. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
  240. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
  241. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/services.py +0 -0
  242. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
  243. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/_setup_core.py +0 -0
  244. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/async_control.py +0 -0
  245. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
  246. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/command.py +0 -0
  247. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
  248. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
  249. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
  250. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/confman/confman_acs.py +0 -0
  251. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
  252. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/connect-todo.py +0 -0
  253. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/connect.py +0 -0
  254. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/control.py +0 -0
  255. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/dummy.py +0 -0
  256. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
  257. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
  258. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
  259. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
  260. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
  261. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
  262. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
  263. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/listener.py +0 -0
  264. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
  265. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
  266. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
  267. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
  268. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
  269. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/monitoring.py +0 -0
  270. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
  271. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
  272. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
  273. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
  274. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
  275. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
  276. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
  277. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
  278. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
  279. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
  280. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
  281. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/protocol.py +0 -0
  282. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/proxy.py +0 -0
  283. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
  284. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/registry/backend.py +0 -0
  285. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/registry/client.py +0 -0
  286. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/registry/server.py +0 -0
  287. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/registry/service.py +0 -0
  288. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/services.py +0 -0
  289. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/services.yaml +0 -0
  290. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
  291. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
  292. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
  293. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
  294. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
  295. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/conftest.py +0 -0
  296. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
  297. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
  298. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
  299. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/fixtures/services.py +0 -0
  300. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/marimo/intro.py +0 -0
  301. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
  302. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
  303. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
  304. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
  305. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
  306. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/services.py +0 -0
  307. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
  308. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_async_control.py +0 -0
  309. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
  310. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_cm_cs.py +0 -0
  311. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_command.py +0 -0
  312. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_confman_setups.py +0 -0
  313. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_connect.py +0 -0
  314. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_control.py +0 -0
  315. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_dummy.py +0 -0
  316. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_event_notification.py +0 -0
  317. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_extensions.py +0 -0
  318. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_listener.py +0 -0
  319. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_logger.py +0 -0
  320. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_notify_hub.py +0 -0
  321. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_protocol.py +0 -0
  322. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_registry_backend.py +0 -0
  323. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_registry_service.py +0 -0
  324. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_server_running.py +0 -0
  325. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
  326. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_settings_core.py +0 -0
  327. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
  328. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/README.md +0 -0
  329. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
  330. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
  331. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
  332. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
  333. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
  334. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
  335. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
  336. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
  337. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
  338. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
  339. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
  340. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
  341. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
  342. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
  343. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
  344. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
  345. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
  346. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
  347. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
  348. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
  349. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
  350. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
  351. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
  352. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
  353. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
  354. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
  355. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
  356. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
  357. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
  358. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
  359. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
  360. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
  361. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
  362. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
  363. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
  364. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
  365. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
  366. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
  367. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
  368. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
  369. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
  370. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
  371. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
  372. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
  373. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
  374. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
  375. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
  376. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
  377. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
  378. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
  379. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
  380. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
  381. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
  382. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
  383. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
  384. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
  385. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
  386. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
  387. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
  388. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
  389. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
  390. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
  391. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
  392. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
  393. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
  394. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
  395. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
  396. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
  397. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
  398. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
  399. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
  400. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
  401. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
  402. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
  403. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
  404. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
  405. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
  406. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
  407. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
  408. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
  409. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
  410. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
  411. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
  412. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
  413. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
  414. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
  415. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
  416. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
  417. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
  418. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
  419. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
  420. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
  421. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
  422. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
  423. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
  424. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
  425. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
  426. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
  427. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
  428. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
  429. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
  430. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
  431. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
  432. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
  433. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
  434. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
  435. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
  436. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
  437. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
  438. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
  439. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
  440. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
  441. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
  442. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/led.py +0 -0
  443. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
  444. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/states.py +0 -0
  445. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
  446. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
  447. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
  448. {cgse-0.16.13 → cgse-0.16.14}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
  449. {cgse-0.16.13 → cgse-0.16.14}/mkdocs.yml +0 -0
  450. {cgse-0.16.13 → cgse-0.16.14}/noxfile.py +0 -0
  451. {cgse-0.16.13 → cgse-0.16.14}/overrides/.icons/custom/dbend-dark.svg +0 -0
  452. {cgse-0.16.13 → cgse-0.16.14}/overrides/.icons/custom/dbend-light.svg +0 -0
  453. {cgse-0.16.13 → cgse-0.16.14}/overrides/.icons/custom/gear.svg +0 -0
  454. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/README.md +0 -0
  455. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
  456. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
  457. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
  458. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
  459. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
  460. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/README.md +0 -0
  461. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/justfile +0 -0
  462. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
  463. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
  464. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
  465. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
  466. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
  467. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
  468. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
  469. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
  470. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
  471. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
  472. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
  473. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
  474. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
  475. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
  476. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
  477. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
  478. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
  479. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
  480. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
  481. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
  482. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
  483. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
  484. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
  485. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
  486. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
  487. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
  488. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
  489. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
  490. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
  491. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
  492. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
  493. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
  494. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
  495. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/README.md +0 -0
  496. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
  497. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
  498. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
  499. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
  500. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
  501. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
  502. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
  503. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
  504. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
  505. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
  506. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
  507. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
  508. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
  509. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
  510. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
  511. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
  512. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
  513. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
  514. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
  515. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
  516. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
  517. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
  518. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
  519. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
  520. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
  521. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
  522. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
  523. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
  524. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
  525. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
  526. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
  527. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
  528. {cgse-0.16.13 → cgse-0.16.14}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
  529. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-fits/README.md +0 -0
  530. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
  531. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-hdf5/README.md +0 -0
  532. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
  533. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-spw/README.md +0 -0
  534. {cgse-0.16.13 → cgse-0.16.14}/projects/plato/plato-spw/src/egse/spw.py +0 -0
  535. {cgse-0.16.13 → cgse-0.16.14}/ruff.toml +0 -0
  536. {cgse-0.16.13 → cgse-0.16.14}/scratch/advanced-process-monitoring.py +0 -0
  537. {cgse-0.16.13 → cgse-0.16.14}/scratch/live-process-monitoring.py +0 -0
  538. {cgse-0.16.13 → cgse-0.16.14}/scratch/match-case.py +0 -0
  539. {cgse-0.16.13 → cgse-0.16.14}/scratch/processes.json +0 -0
  540. {cgse-0.16.13 → cgse-0.16.14}/scratch/simple-process-monitoring.py +0 -0
  541. {cgse-0.16.13 → cgse-0.16.14}/temperature_readings.log +0 -0
  542. {cgse-0.16.13 → cgse-0.16.14}/test_service_registry.db +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cgse
3
- Version: 0.16.13
3
+ Version: 0.16.14
4
4
  Summary: Generic Common-EGSE: Commanding and monitoring lab equipment
5
5
  Author: IvS KU Leuven
6
6
  Maintainer-email: Rik Huygen <rik.huygen@kuleuven.be>, Sara Regibo <sara.regibo@kuleuven.be>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-common"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Software framework to support hardware testing"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-coordinates"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Reference Frames and Coordinate Transofrmations for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-core"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Core services for the CGSE framework"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -121,6 +121,7 @@ def dynamic_command(
121
121
  *,
122
122
  cmd_type: str, # required keyword-only argument
123
123
  cmd_string: str = None,
124
+ cmd_string_func: Callable = None,
124
125
  process_response: Callable = None,
125
126
  process_cmd_string: Callable = None,
126
127
  process_kwargs: Callable = None,
@@ -179,6 +180,7 @@ def dynamic_command(
179
180
  Args:
180
181
  cmd_type (str): one of 'read', 'write', 'query', or 'transaction' [required keyword]
181
182
  cmd_string (str): format string for the generation of the instrument command
183
+ cmd_string_func (Callable): DIY function that will create a command string
182
184
  process_response (Callable): function to process the response
183
185
  process_cmd_string (Callable): function to process the command string after substitution
184
186
  process_kwargs (Callable): function to expand the kwargs after substitution
@@ -192,8 +194,8 @@ def dynamic_command(
192
194
  if cmd_type not in COMMAND_TYPES:
193
195
  raise ValueError(f"Unknown type passed into dynamic command decorator: {type=}")
194
196
 
195
- if cmd_type in ("write", "query", "transaction") and cmd_string is None:
196
- raise ValueError(f"No cmd_string was provided for {cmd_type=}.")
197
+ if cmd_type in ("write", "query", "transaction") and cmd_string is None and cmd_string_func is None:
198
+ raise ValueError(f"No cmd_string nor a cmd_string_func was provided for {cmd_type=}.")
197
199
 
198
200
  def func_wrapper(func: Callable):
199
201
  """Adds the different static attributes."""
@@ -205,6 +207,9 @@ def dynamic_command(
205
207
  if cmd_string is not None:
206
208
  setattr(func, "__cmd_string", cmd_string)
207
209
 
210
+ if cmd_string_func is not None:
211
+ setattr(func, "__cmd_string_func", cmd_string_func)
212
+
208
213
  if process_response is not None:
209
214
  setattr(func, "__process_response", process_response)
210
215
 
@@ -250,11 +255,31 @@ class DynamicCommandMixin:
250
255
  raise AttributeError("Transport was not defined in sub-class of DynamicInterfaceMixin")
251
256
 
252
257
  @staticmethod
253
- def create_command_string(func: Callable, template_str: str, *args, **kwargs):
258
+ def create_command_string(func: Callable, provider: str | Callable[..., str], *args, **kwargs) -> str:
254
259
  """
255
- Creates a command string that is understood by the instrument. This can be an SCPI
256
- command or a specific proprietary command string. The `cmd_str` can contain placeholders
257
- similar to what is used in string formatting.
260
+ Create the instrument command string from a template or from a provider callable.
261
+
262
+ The resulting string can be an SCPI command or a specific proprietary command string.
263
+
264
+ The `provider` argument controls how the raw command string is produced:
265
+
266
+ - If `provider` is a **callable**, it is invoked as `provider(*args, **kwargs)` and must
267
+ return the fully formed command string. This allows arbitrary construction logic
268
+ (e.g. conditional pieces, lookups, or complex formatting) outside the template
269
+ mechanics used below.
270
+
271
+ - If `provider` is a **string**, it is treated as a template and variables are
272
+ substituted from the bound arguments of `func`. Two string styles are supported:
273
+
274
+ - Template style using `string.Template` with `$name` placeholders (safe substitution).
275
+ - Format style using `str.format` with `{name}` placeholders, activated when
276
+ the wrapped `func` has the `__use_format` attribute set.
277
+
278
+ The code binds `args` and `kwargs` to `func`'s signature to produce a mapping of
279
+ parameter names to values. For parameters declared as `**kwargs` the mixin will
280
+ expand them with a `__process_kwargs` callable if present on `func`, otherwise
281
+ it uses the default `expand_kwargs`. When template substitution is used, enum
282
+ values are converted to their `.value`.
258
283
 
259
284
  As an example, we have a function with two positional arguments 'a', and 'b' and one keyword
260
285
  argument flag:
@@ -265,49 +290,67 @@ class DynamicCommandMixin:
265
290
  We have the following template string: `CREATE:FUN:${a} ${b} [${flag}]`.
266
291
 
267
292
  When we call the function as follows: `func("TEMP", 23)`, we would then expect
268
- the returned string to be "CREATE:FUN:TEMP 23 [True]"
293
+ the returned string to be "CREATE:FUN:TEMP 23 [True]".This function will be called as:
269
294
 
270
- DynamicCommandMixin.create_command_string(func, template, "TEMP", 23)
295
+ DynamicCommandMixin.create_command_string(func, provider, "TEMP", 23)
296
+
297
+ Note:
298
+ The processing attributes `__process_kwargs` and `__use_format` are only used when
299
+ `provider` is a string. The attribute `__process_cmd_string` is used when `provider`
300
+ is a template/format string or when it's a callable. The `__process_cmd_string` is
301
+ the last action taken before the result is returned.
271
302
 
272
303
  Args:
273
- func (Callable): a function or method that provides the signature
274
- template_str (str): a template for the command
304
+ func (Callable): a function or method that provides the signature which defines
305
+ the names available for substitution. The function may also carry processing
306
+ attributes (`__use_format`, `__process_kwargs`, `__process_cmd_string`).
307
+ provider (str | Callable): a template/format string or a function that returns a string
275
308
  args (tuple): positional arguments that will be used in the command string
276
309
  kwargs (dict): keywords arguments that will be used in the command string
277
- """
278
- try:
279
- process_kwargs = getattr(func, "__process_kwargs")
280
- except AttributeError:
281
- process_kwargs = expand_kwargs
282
310
 
283
- template = string.Template(template_str)
311
+ Returns:
312
+ the final command string ready to be sent to the transport.
284
313
 
285
- sig = inspect.signature(func)
286
- try:
287
- bound = sig.bind(*args, **kwargs)
288
- except TypeError as exc:
289
- raise CommandError(
290
- f"Arguments {args}, {kwargs} do not match function signature for {func.__name__}{sig}"
291
- ) from exc
292
-
293
- variables = {}
294
- for idx, par in enumerate(sig.parameters.values()):
295
- # if the argument is of signature '**kwargs' then expand the kwargs
296
- if par.kind == inspect.Parameter.VAR_KEYWORD:
297
- variables[par.name] = process_kwargs(bound.arguments[par.name])
298
- continue
299
-
300
- # otherwise, use the argument value or the default
301
- try:
302
- variables[par.name] = bound.arguments[par.name]
303
- except KeyError:
304
- variables[par.name] = par.default
314
+ Raises:
315
+ CommandError: if `args`/`kwargs` cannot be bound to `func`'s signature.
316
+ """
305
317
 
306
- if hasattr(func, "__use_format"):
307
- cmd_string = template_str.format(**variables)
318
+ if callable(provider):
319
+ cmd_string = provider(*args, **kwargs)
308
320
  else:
309
- variables = {k: v.value if isinstance(v, enum.Enum) else v for k, v in variables.items()}
310
- cmd_string = template.safe_substitute(variables)
321
+ try:
322
+ process_kwargs = getattr(func, "__process_kwargs")
323
+ except AttributeError:
324
+ process_kwargs = expand_kwargs
325
+
326
+ template = string.Template(template_str := provider)
327
+
328
+ sig = inspect.signature(func)
329
+ try:
330
+ bound = sig.bind(*args, **kwargs)
331
+ except TypeError as exc:
332
+ raise CommandError(
333
+ f"Arguments {args}, {kwargs} do not match function signature for {func.__name__}{sig}"
334
+ ) from exc
335
+
336
+ variables = {}
337
+ for idx, par in enumerate(sig.parameters.values()):
338
+ # if the argument is of signature '**kwargs' then expand the kwargs
339
+ if par.kind == inspect.Parameter.VAR_KEYWORD:
340
+ variables[par.name] = process_kwargs(bound.arguments[par.name])
341
+ continue
342
+
343
+ # otherwise, use the argument value or the default
344
+ try:
345
+ variables[par.name] = bound.arguments[par.name]
346
+ except KeyError:
347
+ variables[par.name] = par.default
348
+
349
+ if hasattr(func, "__use_format"):
350
+ cmd_string = template_str.format(**variables)
351
+ else:
352
+ variables = {k: v.value if isinstance(v, enum.Enum) else v for k, v in variables.items()}
353
+ cmd_string = template.safe_substitute(variables)
311
354
 
312
355
  try:
313
356
  process_cmd_string = getattr(func, "__process_cmd_string")
@@ -337,10 +380,14 @@ class DynamicCommandMixin:
337
380
  @functools.wraps(attr)
338
381
  def command_wrapper(*args, **kwargs):
339
382
  """Generates command strings and executes the transport functions."""
340
- try:
383
+
384
+ if hasattr(attr, "__cmd_string"):
341
385
  cmd_str = getattr(attr, "__cmd_string")
342
386
  cmd_str = self.create_command_string(attr, cmd_str, *args, **kwargs)
343
- except AttributeError:
387
+ elif hasattr(attr, "__cmd_string_func"):
388
+ func = getattr(attr, "__cmd_string_func")
389
+ cmd_str = self.create_command_string(attr, func, *args, **kwargs)
390
+ else:
344
391
  cmd_str = None
345
392
 
346
393
  response = None
@@ -205,6 +205,7 @@ def post_command(transport: DeviceTransport = None, response: bytes = None) -> b
205
205
  LOGGER.info(f"Inside post_command(transport={transport.__class__.__name__}, {response=})")
206
206
  return response
207
207
 
208
+
208
209
  def rewrite_kwargs(kwargs: dict) -> str:
209
210
  """Rewrite some of the keyword arguments according to device specs."""
210
211
 
@@ -222,6 +223,10 @@ def rewrite_kwargs(kwargs: dict) -> str:
222
223
  return f"{cmd} {calc_crc(cmd)}"
223
224
 
224
225
 
226
+ def create_fancy_cmd_string(a: str, b: int, *, c: float, d: str) -> str:
227
+ return f"FANCY {a}, {d} – {b:04d} {c=:.3f}"
228
+
229
+
225
230
  class NewStyleCommandInterface:
226
231
  """Interface definition for new style dynamic commands."""
227
232
 
@@ -267,11 +272,7 @@ class NewStyleCommandInterface:
267
272
  def test_cmd_enum_with_format(self, enumeration: MyEnum):
268
273
  """Returns the command string"""
269
274
 
270
- @dynamic_command(
271
- cmd_type="transaction",
272
- cmd_string="ARG_EXPANSION::{mode}::{crc:06x}",
273
- use_format=True
274
- )
275
+ @dynamic_command(cmd_type="transaction", cmd_string="ARG_EXPANSION::{mode}::{crc:06x}", use_format=True)
275
276
  def test_cmd_with_arg_expansion(self, *, mode, crc):
276
277
  """Return the command string, after processing the arguments in the overriding function."""
277
278
 
@@ -287,6 +288,11 @@ class NewStyleCommandInterface:
287
288
  def test_cmd_rewrite_kwargs(self, **kwargs):
288
289
  """Returns the command string with rewritten kwargs."""
289
290
 
291
+ @dynamic_command(cmd_type="transaction", cmd_string_func=create_fancy_cmd_string)
292
+ def test_cmd_string_func(self, a: str, b: int, *, c: float, d: str) -> bytes:
293
+ """Returns a command string based on the arguments."""
294
+
295
+
290
296
  class NewStyleCommand(DynamicCommandMixin, NewStyleCommandInterface):
291
297
  """Simple new style commanding interface."""
292
298
 
@@ -302,23 +308,19 @@ class NewStyleCommand(DynamicCommandMixin, NewStyleCommandInterface):
302
308
  mode = f"{mode:04x}"
303
309
 
304
310
  if "crc" in kwargs:
305
- crc = kwargs['crc']
311
+ crc = kwargs["crc"]
306
312
  else:
307
313
  # 'calculate' the checksum
308
314
  crc = 0x1234
309
315
 
310
316
  # pass the method as defined in the NewStyleCommandInterface, to the handle_dynamic_command method of
311
317
  # the mixin class. Provide the expected parameters as if the decorated function would have been called.
312
- return DynamicCommandMixin.handle_dynamic_command(
313
- self,
314
- super().test_cmd_with_arg_expansion
315
- )(
316
- mode=mode, crc=crc
317
- )
318
+ return DynamicCommandMixin.handle_dynamic_command(self, super().test_cmd_with_arg_expansion)(mode=mode, crc=crc)
318
319
 
319
320
  # Note that the following doesn't work, I didn't really figure out why yet...
320
321
  # return super().test_cmd_with_mode_expansion(mode, crc)
321
322
 
323
+
322
324
  def test_new_style(caplog):
323
325
  caplog.set_level(logging.INFO)
324
326
 
@@ -380,11 +382,14 @@ def test_new_style(caplog):
380
382
  # This tests the expansion of kwargs in the function's signature, by the default `expand_kwargs`
381
383
  assert ns.test_cmd_process_kwargs(a=5, b=2, c=3) == b"TRANS 5 b=2 c=3"
382
384
 
383
- tcu_mode=42 # == 0x2A
385
+ tcu_mode = 42 # == 0x2A
384
386
  assert ns.test_cmd_rewrite_kwargs(address=5, identifier=2, cargo2=f"{hex(int(tcu_mode))[2:].zfill(4)}") == (
385
387
  b"TRANS 000005 0x000002 DEV_07463 CARGO1=0001 CARGO2=002a 49"
386
388
  )
387
389
 
390
+ assert ns.test_cmd_string_func("Hello!", 5, c=3.14, d="World!").decode() == "FANCY Hello!, World! – 0005 c=3.140"
391
+
392
+
388
393
  def test_interface_definition():
389
394
  with pytest.raises(TypeError):
390
395
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-gui"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "GUI components for CGSE"
5
5
  authors = [
6
6
  {name = "Rik Huygen", email = "rik.huygen@kuleuven.be"},
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse-tools"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Tools for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "keithley-tempcontrol"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Keithley Temperature Control for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lakeshore-tempcontrol"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Lakeshore Temperature Control for CGSE"
5
5
  authors = [
6
6
  {name = "IVS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "symetrie-hexapod"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Symetrie Hexapod implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-fits"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "FITS Persistence implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-hdf5"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "HDF5 Persistence sub-class for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plato-spw"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "SpaceWire implementation for CGSE"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cgse"
3
- version = "0.16.13"
3
+ version = "0.16.14"
4
4
  description = "Generic Common-EGSE: Commanding and monitoring lab equipment"
5
5
  authors = [
6
6
  {name = "IvS KU Leuven"}
index 563ad6b..cf0d803 100644
Binary file
index 0f4029d..8ba4405 100644
Binary file
index 4b17179..46bd6a9 100644
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes