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.
- {cgse-0.17.4 → cgse-0.18.1}/.gitignore +6 -1
- cgse-0.18.1/.op/plugins/gh.json +15 -0
- {cgse-0.17.4 → cgse-0.18.1}/CHANGELOG.md +54 -3
- cgse-0.18.1/LICENSE +21 -0
- {cgse-0.17.4 → cgse-0.18.1}/PKG-INFO +2 -1
- cgse-0.18.1/duckdb_metrics.db +0 -0
- cgse-0.18.1/duckdb_metrics.db.wal +0 -0
- cgse-0.18.1/justfile +69 -0
- cgse-0.18.1/libs/cgse-common/justfile +20 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/pyproject.toml +1 -1
- cgse-0.18.1/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/device.py +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/env.py +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/log.py +8 -6
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/scpi.py +198 -10
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/setup.py +7 -4
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/socketdevice.py +25 -19
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/system.py +1 -1
- cgse-0.18.1/libs/cgse-common/tests/test_scpi.py +65 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_socketdevice.py +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/pyproject.toml +1 -1
- cgse-0.18.1/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/gear.svg +92 -92
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/pyproject.toml +2 -2
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/pyproject.toml +2 -2
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cs.py +6 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/digilent.py +77 -72
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/digilent_devif.py +4 -4
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.py +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_cs.py +6 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_protocol.py +1 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/justfile +25 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/pyproject.toml +3 -4
- cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db-shm +0 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/service_registry.db-wal +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -2
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +79 -242
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +13 -1
- 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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +27 -1
- cgse-0.18.1/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +154 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +313 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +29 -7
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +4 -4
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +32 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/script-test-a-scan.py +78 -0
- 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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/tests/test_adev.py +15 -11
- cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/test_controller.py +58 -0
- cgse-0.18.1/projects/generic/keithley-tempcontrol/tests/test_cs.py +89 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/tests/test_dev.py +30 -35
- cgse-0.18.1/projects/generic/kikusui-power-supply/README.md +9 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/pyproject.toml +82 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/__init__.py +10 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx.py +658 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/__init__.py +4 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a.py +135 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a.yaml +43 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a_cs.py +305 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_a/pmx_a_protocol.py +117 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/egse/power_supply/kikusui/pmx_devif.py +297 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/cgse_explore.py +19 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/cgse_services.py +129 -0
- cgse-0.18.1/projects/generic/kikusui-power-supply/src/kikusui_power_supply/settings.yaml +19 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/pyproject.toml +1 -1
- cgse-0.18.1/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- cgse-0.18.1/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.17.4 → cgse-0.18.1}/pyproject.toml +1 -1
- cgse-0.18.1/scratch/advanced-process-monitoring.py +111 -0
- cgse-0.18.1/scratch/live-process-monitoring.py +67 -0
- cgse-0.18.1/scratch/match-case.py +41 -0
- cgse-0.18.1/scratch/mock-version.py +3 -0
- cgse-0.18.1/scratch/processes.json +7680 -0
- cgse-0.18.1/scratch/simple-process-monitoring.py +72 -0
- cgse-0.18.1/scratch/test_version_behavior.py +35 -0
- cgse-0.18.1/scratch/understanding-the-mocking-library.py +82 -0
- cgse-0.18.1/scratch/understanding_the_with_statement.py +37 -0
- cgse-0.18.1/service_registry.db +0 -0
- cgse-0.18.1/test_service_registry.db +0 -0
- cgse-0.17.4/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -345
- {cgse-0.17.4 → cgse-0.18.1}/.env.example +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/bump.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/conftest.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/admin_guide/make-a-release.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/bits.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/calibration.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/command.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/config.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/control.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/counter.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/decorators.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/device.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/dicts.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/dummy.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/env.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/exceptions.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/heartbeat.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/hk.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/listener.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/metrics.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/mixin.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/monitoring.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/observer.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/obsid.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/persistence.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/plugin.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/process.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/reload.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/settings.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/setup.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/api/system.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/custom_theme/main.html +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/docs.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/dotenv.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/installation.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/nox.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/uv.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/getting_started.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/help.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/cli-cgse.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/grafana-queries.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/initialize.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/notifyhub.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/libs/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/package_list.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/projects/index.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/roadmap.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/stylesheets/custom.css +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/stylesheets/extra.css +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/tutorial.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/cli.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/env.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/docs/user_guide/index.md +0 -0
- /cgse-0.17.4/libs/cgse-common/src/egse/py.typed → /cgse-0.18.1/identifier.sqlite +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/counter.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/decorators.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/dicts.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/heartbeat.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/process.py +0 -0
- /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
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/settings.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/signal.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- /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
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- /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
- /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
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {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
- /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
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_log.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_metrics.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_plugin.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_process.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_state.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_version.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.17.4/libs/cgse-core/src/cgse_core → cgse-0.18.1/libs/cgse-coordinates/src/cgse_coordinates}/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/reference_frame.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/rotation_matrix.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/README.md +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/_setup_core.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/command.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/connect.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/control.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/dummy.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/listener.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/mixin.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/monitoring.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/proxy.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/client.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/server.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/registry/service.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/services.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/fixtures/services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_cm_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_command.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_connect.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_control.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_dummy.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_event_notification.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_extensions.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_listener.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_logger.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_mixin.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_notify_hub.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_registry_service.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_server_running.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/mkdocs.yml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/noxfile.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/overrides/.icons/custom/dbend-light.svg +0 -0
- /cgse-0.17.4/projects/ariel/ariel-facility/README.MD → /cgse-0.18.1/projects/ariel/ariel-facility/README.md +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/ariel_facility/settings.yaml +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/egse/ariel/facility/database.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-facility/src/egse/ariel/facility/hk.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/README.md +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/ariel_tcu/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cmd_utils.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_devif.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_ui.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/tests/test_tcu.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/ariel/ariel-tcu/tests/test_tcu_cmd_utils.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.17.4/projects/generic/digilent/src/digilent → cgse-0.18.1/projects/generic/cgse-tools/src/cgse_tools}/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/README.md +0 -0
- {cgse-0.17.4/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol → cgse-0.18.1/projects/generic/digilent/src/digilent}/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/digilent/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/digilent/src/egse/digilent/measurpoint/dt8874/dt8874_devif.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- /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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- /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
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.17.4 → cgse-0.18.1}/ruff.toml +0 -0
|
@@ -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
|
-
-
|
|
60
|
+
- Enable TCU CS to run without core services
|
|
16
61
|
- Maintenance on cgse-core
|
|
17
|
-
|
|
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.
|
|
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.
|
|
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
|
|
Binary file
|
|
@@ -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:
|
|
@@ -131,12 +131,14 @@ for handler in root_logger.handlers:
|
|
|
131
131
|
handler.addFilter(NonEGSEFilter())
|
|
132
132
|
handler.addFilter(PackageFilter())
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
940
|
-
|
|
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.
|
|
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
|
|