cgse 0.17.1__tar.gz → 0.17.2__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.1 → cgse-0.17.2}/.env.example +6 -1
- {cgse-0.17.1 → cgse-0.17.2}/.gitignore +5 -0
- cgse-0.17.2/.pylintrc +5 -0
- cgse-0.17.2/CHANGELOG.md +230 -0
- {cgse-0.17.1 → cgse-0.17.2}/PKG-INFO +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/pyproject.toml +14 -6
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/bits.py +14 -17
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/decorators.py +6 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/env.py +2 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/exceptions.py +3 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/log.py +7 -8
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/scpi.py +13 -7
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/settings.py +31 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/socketdevice.py +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/system.py +63 -24
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/version.py +24 -13
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/handle_sigterm.py +4 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_bits.py +3 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_process.py +8 -5
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_ratelimit.py +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_settings.py +27 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_system.py +99 -6
- cgse-0.17.2/libs/cgse-common/tests/test_version.py +262 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/pyproject.toml +17 -9
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.17.1 → cgse-0.17.2/libs/cgse-core}/service_registry.db-shm +0 -0
- cgse-0.17.2/libs/cgse-core/service_registry.db-wal +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/async_control.py +6 -5
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/connect.py +12 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/dummy.py +19 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/logger/__init__.py +2 -2
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/server.py +3 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/registry/client.py +9 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/registry/server.py +11 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/registry/service.py +11 -5
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/fixtures/helpers.py +61 -1
- cgse-0.17.2/libs/cgse-core/tests/fixtures/log_cs.start.out +13 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/fixtures/services.py +65 -16
- cgse-0.17.2/libs/cgse-core/tests/test_async_control.py +68 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_client_server_interaction.py +3 -8
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_cm_cs.py +3 -43
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_connect.py +27 -4
- cgse-0.17.2/libs/cgse-core/tests/test_dummy.py +153 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_event_notification.py +6 -2
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_logger.py +23 -10
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_proxy.py +4 -3
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_registry_service.py +8 -8
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_server_running.py +14 -8
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_server_running_with_fixture.py +12 -7
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_zmq_microservice.py +19 -7
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/make-a-release.md +1 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +98 -42
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/tests/test_adev.py +84 -9
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/pyproject.toml +5 -1
- cgse-0.17.2/scratch/mock-version.py +3 -0
- cgse-0.17.2/scratch/test_version_behavior.py +35 -0
- cgse-0.17.2/scratch/understanding-the-mocking-library.py +82 -0
- cgse-0.17.2/scratch/understanding_the_with_statement.py +37 -0
- {cgse-0.17.1 → cgse-0.17.2}/service_registry.db +0 -0
- cgse-0.17.1/CHANGELOG.md +0 -151
- cgse-0.17.1/libs/cgse-core/tests/test_async_control.py +0 -53
- cgse-0.17.1/libs/cgse-core/tests/test_dummy.py +0 -68
- cgse-0.17.1/service_registry.db-wal +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/bump.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/conftest.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/bits.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/calibration.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/command.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/config.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/control.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/counter.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/decorators.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/device.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/dicts.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/dummy.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/env.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/exceptions.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/heartbeat.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/hk.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/listener.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/metrics.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/mixin.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/monitoring.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/observer.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/obsid.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/persistence.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/plugin.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/process.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/reload.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/settings.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/setup.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/api/system.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/custom_theme/main.html +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/docs.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/dotenv.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/installation.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/nox.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/uv.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/getting_started.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/help.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/cli-cgse.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/grafana-queries.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/initialize.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-core/notifyhub.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/libs/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/package_list.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/projects/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/roadmap.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/stylesheets/custom.css +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/stylesheets/extra.css +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/tutorial.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/user_guide/cli.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/user_guide/env.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/docs/user_guide/index.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/duckdb_metrics.db +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/duckdb_metrics.db.wal +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/identifier.sqlite +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/justfile +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/justfile +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/counter.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/device.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/dicts.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/heartbeat.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/process.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/py.typed +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/ratelimit.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/setup.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/signal.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_log.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_metrics.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_plugin.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_socketdevice.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_state.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/_setup_core.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/command.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/confman/confman_acs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/control.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/listener.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/mixin.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/monitoring.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/proxy.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/services.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/marimo/intro.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/simple_server.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_command.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_confman_setups.py +1 -1
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_control.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_extensions.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_listener.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_mixin.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_notify_hub.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/mkdocs.yml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/noxfile.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/overrides/.icons/custom/dbend-light.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/overrides/.icons/custom/gear.svg +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/ariel_tcu/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_explore.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/ariel_tcu/cgse_services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/ariel_tcu/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cmd_utils.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_devif.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/src/egse/ariel/tcu/tcu_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/tests/test_tcu.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/ariel/ariel-tcu/tests/test_tcu_cmd_utils.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/justfile +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/ruff.toml +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/scratch/advanced-process-monitoring.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/scratch/live-process-monitoring.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/scratch/match-case.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/scratch/processes.json +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/scratch/simple-process-monitoring.py +0 -0
- {cgse-0.17.1 → cgse-0.17.2}/test_service_registry.db +0 -0
|
@@ -3,7 +3,12 @@ SITE_ID='VACUUM_LAB'
|
|
|
3
3
|
|
|
4
4
|
# The variable below all start with the project name.
|
|
5
5
|
|
|
6
|
+
# These variables point to folders.
|
|
7
|
+
|
|
6
8
|
ARIEL_DATA_STORAGE_LOCATION=~/data/ARIEL/VACUUM_LAB
|
|
7
9
|
ARIEL_CONF_DATA_LOCATION=~/data/ARIEL/VACUUM_LAB/conf
|
|
8
|
-
ARIEL_LOCAL_SETTINGS=~/data/ARIEL/VACUUM_LAB/local_settings.yaml
|
|
9
10
|
ARIEL_LOG_FILE_LOCATION=~/data/ARIEL/VACUUM_LAB/log
|
|
11
|
+
|
|
12
|
+
# This variable points to a file, not to a folder.
|
|
13
|
+
|
|
14
|
+
ARIEL_LOCAL_SETTINGS=~/data/ARIEL/VACUUM_LAB/local_settings.yaml
|
cgse-0.17.2/.pylintrc
ADDED
cgse-0.17.2/CHANGELOG.md
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
|
|
2
|
+
# Changelog
|
|
3
|
+
|
|
4
|
+
All notable changes to this project will be documented in this file.
|
|
5
|
+
|
|
6
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## [Unreleased]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## [0.17.2] - 2025-11-28
|
|
13
|
+
|
|
14
|
+
This release is mainly on maintenance and improvements to the `cgse-common` package.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Nothing needed to be really fixed.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- To improve readability, the CHANGELOG file now contains all [link titles](https://github.github.com/gfm/#links) at
|
|
21
|
+
the bottom, both for version comparison and for issue/pull request linking. [#215]
|
|
22
|
+
- The args in the function `bits_set(value, *args)` should always be unpacked. Previously, the `args` could also be a
|
|
23
|
+
list, but that made the function call needlessly confusing. This should not be a problem (not a breaking change)
|
|
24
|
+
since this function is apparently only used in the unit tests currently. [#215]
|
|
25
|
+
- The `egse.log` module exports the logging module, so, when users import logging from egse.log, the specific CGSE
|
|
26
|
+
loggers will be configured. [#215]
|
|
27
|
+
- Changed the type of the default argument in `get_log_level_from_env()` function (not a breaking change) [#215]
|
|
28
|
+
- Changed the return value of the different `get_version_*()` functions to return "0.0.0" when the version cannot
|
|
29
|
+
be determined. Previously, these functions returned None. [#215]
|
|
30
|
+
- Improvements to `redirect_output_to_log()`: the file can be an absolute path, added a guard to overwrite [#217]
|
|
31
|
+
- A warning message is now logged when you try to read the last few lines from a non-existing file
|
|
32
|
+
- InitializationError = InitialisationError, to be conform to the styling guide promoting the use of standard
|
|
33
|
+
American English for code, comments and docs
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- Added a `from_string()` class method to Settings. This is mainly for testing and when you need to load
|
|
37
|
+
Settings from a specific file. [#215]
|
|
38
|
+
- Added an example `.env` file [#215]
|
|
39
|
+
|
|
40
|
+
### Testing
|
|
41
|
+
- Added a test for the `round_up()` function in `egse.system` [#215]
|
|
42
|
+
- Added unit tests for `egse.version` and `egse.settings` [#215], [#216]
|
|
43
|
+
- Fixed the test `test_quit_process()` temporarily as it is not clear on macOS what is the actual return value
|
|
44
|
+
from a process when it is terminated or killed. [#215]
|
|
45
|
+
- Added unit test for `redirect_output_to_log()` [#217]
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## [0.17.1] - 2025-11-20
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
- Fixed a missing expanduser(). Apparently a `path.resolve()` doesn't handle the '`~`' character. [#210]
|
|
52
|
+
- Fixed `env_var()` which is a context manager for temporarily setting an environment variable. It uses `setup_env()`
|
|
53
|
+
to update the environment before and after the `yield`, but `setup_env()` only initializes once. [#210]
|
|
54
|
+
- Fixed unit tests for settings, setup, and env. [#210]
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
- Some of the debug messages in settings are now filtered behind the VERBOSE_DEBUG flag. [#210]
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## [0.17.0] - 2025-11-20
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
- Added this CHANGELOG file. [#209]
|
|
64
|
+
- Added an initial implementation of the ARIEL Telescope Control Unit (TCU). This is a separate package in this
|
|
65
|
+
monorepo that is located at `projects/ariel/ariel-tcu`. The package will be added to PyPI as `ariel-tcu`. [#178]
|
|
66
|
+
- Added a `read_string()` method to the `DeviceTransport` and `AsyncDeviceTransport` classes. [#209]
|
|
67
|
+
### Fixed
|
|
68
|
+
- Fixed the `sm_cs` for the missing `--full` cli argument. [#204]
|
|
69
|
+
- Fixed the configuration of the InfluxDB client. The client can now be fully configured with environment variables
|
|
70
|
+
if needed. [#206]
|
|
71
|
+
### Changed
|
|
72
|
+
- Improved initialization of the process environment with `setup_env()`. [#208]
|
|
73
|
+
- The configuration manager now also re-registers the obsid table to the storage. [#207]
|
|
74
|
+
- The `cgse` subcommand to start the notification hub is changed from `not` to `nh`. Use `cgse nh [start|stop|status]`. [#209]
|
|
75
|
+
- The environment variables that contain a path can start with a tilde '`~`' which will be expanded to the user's
|
|
76
|
+
home directory when used. [#204]
|
|
77
|
+
### Docs
|
|
78
|
+
- Documentation updates for the Python version, the CLI `cgse` subcommands, environment and the introduction of `dotenv`, ...
|
|
79
|
+
- Updated information on the use of `dotenv` in the developer guid.
|
|
80
|
+
- Added information on the environment variables to the user guide.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## [0.16.14] - 2025-10-24
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
- Added `cmd_string_func` parameter to the `@dynamic_command` interface. Use this parameter if you need to create a fancy command string from the arguments passed into the command function.
|
|
87
|
+
|
|
88
|
+
## [0.16.13] - 2025-10-23
|
|
89
|
+
|
|
90
|
+
### Changed
|
|
91
|
+
- Improved unit tests for the `mixin.py` module.
|
|
92
|
+
|
|
93
|
+
## [0.16.12] - 2025-10-21
|
|
94
|
+
|
|
95
|
+
### Fixed
|
|
96
|
+
- Fixed a bug in starting the puna proxy.
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
## [0.16.11] - 2025-10-21
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
- Fixed starting the hexapod GUI by specifying a device identifier.
|
|
103
|
+
- Fixed registration and connection of the notification hub.
|
|
104
|
+
### Added
|
|
105
|
+
- Added a dependency for the `dotenv` module.
|
|
106
|
+
### Changed
|
|
107
|
+
- The PUNA GUI script now starts as a Typer app.
|
|
108
|
+
- The `get_port_number()` in `zmq_ser.py` now returns 0 (zero) on error.
|
|
109
|
+
- Improved logging for the Symétrie hexapods.
|
|
110
|
+
- Introduced the `VERBOSE_DEBUG` environment variable that can be used to restrict debug logging messages only when
|
|
111
|
+
this environment variable is set. Use this for very verbose debug logging.
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## [0.16.10] - 2025-10-03
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
- Renamed Settings for external logger from `TEXTUALOG_*` to `EXTERN_LOG_*`.
|
|
118
|
+
- The heartbeat ZeroMQ protocol now uses ROUTER-DEALER instead of REQ-REP. This was needed because too often we got an invalid state for the REQ sockets after one of the services went down.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
## [0.16.9] - 2025-10-02
|
|
122
|
+
|
|
123
|
+
### Removed
|
|
124
|
+
- Removed caching from the async registry client.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
## [0.16.8] - 2025-10-02
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
- Fixed re-registration for the async registry client.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
## [0.16.7] - 2025-10-01
|
|
134
|
+
|
|
135
|
+
### Fixed
|
|
136
|
+
- Fixed re-registration problem in the service registry.
|
|
137
|
+
### Changed
|
|
138
|
+
- Read the Settings in the `__init__.py` files where possible. Do not spread Settings in all modules of a package.
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
## [0.16.6] - 2025-09-30
|
|
142
|
+
|
|
143
|
+
### Fixed
|
|
144
|
+
- Fixed timeouts for Proxy (sub)classes to seconds instead of milliseconds. We strive to have all timeout in seconds and only convert to milliseconds when needed for a library call.
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
## [0.16.5] - 2025-09-29
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
- The service type for the notification hub is now `NH_CS` instead of `NOTIFY_HUB`.
|
|
151
|
+
- Remove the leading dot '`.`' from all startup log filenames. Startup log files are log files per `cgse` subcommand that are located in the `LOG_FILE_LOCATION`. You will find a log file there for the `start` and the `stop` for each core service or device control server.
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
## [0.16.4] - 2025-09-29
|
|
155
|
+
|
|
156
|
+
### Added
|
|
157
|
+
- Added the `bool_env()` function in `env.py`.
|
|
158
|
+
### Changed
|
|
159
|
+
- The listeners functionality has been transferred to the notification hub and services subscribe to this notification service.
|
|
160
|
+
- Log messages to the `general.log` file now contain the logger name.
|
|
161
|
+
### Removed
|
|
162
|
+
- Remove the listener notification from the configuration manager.
|
|
163
|
+
- Remove listener registration from the storage manager and the process manager.
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## [0.16.3] - 2025-09-19
|
|
167
|
+
|
|
168
|
+
### Fixed
|
|
169
|
+
- Fixed a circular import problem in `system.py`.
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
## [0.16.2] - 2025-09-19
|
|
173
|
+
|
|
174
|
+
### Changed
|
|
175
|
+
- The output of startup scripts is now redirected to the log location.
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
## [0.16.1] - 2025-09-19
|
|
179
|
+
|
|
180
|
+
### Changed
|
|
181
|
+
- Use the `get_endpoint()` function in Proxy subclasses.
|
|
182
|
+
- Define constants from settings with proper defaults.
|
|
183
|
+
- Cleanup port numbers for core services in Settings. All core services now have a fixed port number, which can be
|
|
184
|
+
overwritten in the local settings file.
|
|
185
|
+
- When `port == 0` use the service registry to get the endpoint.
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
## [0.16.0] - 2025-09-17
|
|
189
|
+
|
|
190
|
+
### Added
|
|
191
|
+
- Added a `deregister` subcommand to the service registry. Usage: `cgse reg deregister <SERVICE_TYPE>`.
|
|
192
|
+
### Fixed
|
|
193
|
+
- Fixed proper sorting of cgse subcommands.
|
|
194
|
+
- Fixed port numbers for core services.
|
|
195
|
+
### Changed
|
|
196
|
+
- Proxies now handle fixed port numbers properly.
|
|
197
|
+
- Renamed `cgse` subcommands `registry` → `reg`, `notify` → `not`.
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
[Unreleased]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.1...HEAD
|
|
201
|
+
[0.17.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.17.0...v0.17.1
|
|
202
|
+
[0.17.0]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.14...v0.17.0
|
|
203
|
+
[0.16.14]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.13...v0.16.14
|
|
204
|
+
[0.16.13]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.12...v0.16.13
|
|
205
|
+
[0.16.12]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.11...v0.16.12
|
|
206
|
+
[0.16.11]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.10...v0.16.11
|
|
207
|
+
[0.16.10]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.9...v0.16.10
|
|
208
|
+
[0.16.9]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.8...v0.16.9
|
|
209
|
+
[0.16.8]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.7...v0.16.8
|
|
210
|
+
[0.16.7]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.6...v0.16.7
|
|
211
|
+
[0.16.6]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.5...v0.16.6
|
|
212
|
+
[0.16.5]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.4...v0.16.5
|
|
213
|
+
[0.16.4]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.3...v0.16.4
|
|
214
|
+
[0.16.3]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.2...v0.16.3
|
|
215
|
+
[0.16.2]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.1...v0.16.2
|
|
216
|
+
[0.16.1]: https://github.com/IvS-KULeuven/cgse/compare/v0.16.0...v0.16.1
|
|
217
|
+
[0.16.0]: https://github.com/IvS-KULeuven/cgse/compare/v0.15.1...v0.16.0
|
|
218
|
+
|
|
219
|
+
[#217]: https://github.com/IvS-KULeuven/cgse/pull/217
|
|
220
|
+
[#216]: https://github.com/IvS-KULeuven/cgse/pull/216
|
|
221
|
+
[#215]: https://github.com/IvS-KULeuven/cgse/pull/215
|
|
222
|
+
[#210]: https://github.com/IvS-KULeuven/cgse/pull/210
|
|
223
|
+
[#209]: https://github.com/IvS-KULeuven/cgse/pull/209
|
|
224
|
+
[#208]: https://github.com/IvS-KULeuven/cgse/pull/208
|
|
225
|
+
[#207]: https://github.com/IvS-KULeuven/cgse/pull/207
|
|
226
|
+
[#206]: https://github.com/IvS-KULeuven/cgse/pull/206
|
|
227
|
+
[#205]: https://github.com/IvS-KULeuven/cgse/pull/205
|
|
228
|
+
[#204]: https://github.com/IvS-KULeuven/cgse/pull/204
|
|
229
|
+
|
|
230
|
+
[#178]: https://github.com/IvS-KULeuven/cgse/pull/178
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cgse-common"
|
|
3
|
-
version = "0.17.
|
|
3
|
+
version = "0.17.2"
|
|
4
4
|
description = "Software framework to support hardware testing"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "IvS KU Leuven"}
|
|
@@ -68,19 +68,23 @@ markers = [
|
|
|
68
68
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')"
|
|
69
69
|
]
|
|
70
70
|
|
|
71
|
+
# Some of these omitted files are only temporary omitted until refactored
|
|
71
72
|
[tool.coverage.run]
|
|
72
73
|
omit = [
|
|
73
74
|
"tests/*",
|
|
74
75
|
"conftest.py",
|
|
76
|
+
"src/egse/ratelimit.py",
|
|
77
|
+
"src/egse/plugins/metrics/duckdb.py",
|
|
78
|
+
"src/egse/plugins/metrics/timescaledb.py",
|
|
75
79
|
]
|
|
76
80
|
|
|
77
81
|
[tool.hatch.build.targets.sdist]
|
|
78
82
|
exclude = [
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
83
|
+
"tests",
|
|
84
|
+
"pytest.ini",
|
|
85
|
+
".gitignore",
|
|
86
|
+
"*poetry*",
|
|
87
|
+
"*setuptools*",
|
|
84
88
|
]
|
|
85
89
|
|
|
86
90
|
[tool.hatch.build.targets.wheel]
|
|
@@ -90,8 +94,12 @@ packages = ["src/egse", "src/scripts", "src/cgse_common"]
|
|
|
90
94
|
line-length = 120
|
|
91
95
|
|
|
92
96
|
[tool.ruff.lint]
|
|
97
|
+
select = ["F", "I"]
|
|
93
98
|
extend-select = ["E", "W"]
|
|
94
99
|
|
|
100
|
+
[tool.ruff.lint.isort]
|
|
101
|
+
force-single-line = true
|
|
102
|
+
|
|
95
103
|
[build-system]
|
|
96
104
|
requires = ["hatchling"]
|
|
97
105
|
build-backend = "hatchling.build"
|
|
@@ -5,7 +5,6 @@ This module contains a number of convenience functions to work with bits, bytes
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import ctypes
|
|
8
|
-
from collections.abc import Iterable
|
|
9
8
|
from typing import Union
|
|
10
9
|
|
|
11
10
|
|
|
@@ -33,7 +32,7 @@ def extract_bits(value: int, start_position: int, num_bits: int) -> int:
|
|
|
33
32
|
return extracted_bits
|
|
34
33
|
|
|
35
34
|
|
|
36
|
-
def set_bit(value: int, bit) -> int:
|
|
35
|
+
def set_bit(value: int, bit: int) -> int:
|
|
37
36
|
"""
|
|
38
37
|
Set bit to 1 for the given value.
|
|
39
38
|
|
|
@@ -47,7 +46,7 @@ def set_bit(value: int, bit) -> int:
|
|
|
47
46
|
return value | (1 << bit)
|
|
48
47
|
|
|
49
48
|
|
|
50
|
-
def set_bits(value: int, bits: tuple) -> int:
|
|
49
|
+
def set_bits(value: int, bits: tuple[int, int]) -> int:
|
|
51
50
|
"""
|
|
52
51
|
Set the given bits in value to 1.
|
|
53
52
|
|
|
@@ -63,7 +62,7 @@ def set_bits(value: int, bits: tuple) -> int:
|
|
|
63
62
|
return value
|
|
64
63
|
|
|
65
64
|
|
|
66
|
-
def clear_bit(value: int, bit) -> int:
|
|
65
|
+
def clear_bit(value: int, bit: int) -> int:
|
|
67
66
|
"""
|
|
68
67
|
Set bit to 0 for the given value.
|
|
69
68
|
|
|
@@ -77,7 +76,7 @@ def clear_bit(value: int, bit) -> int:
|
|
|
77
76
|
return value & ~(1 << bit)
|
|
78
77
|
|
|
79
78
|
|
|
80
|
-
def clear_bits(value: int, bits: tuple) -> int:
|
|
79
|
+
def clear_bits(value: int, bits: tuple[int, int]) -> int:
|
|
81
80
|
"""
|
|
82
81
|
Set the given bits in value to 0.
|
|
83
82
|
|
|
@@ -93,7 +92,7 @@ def clear_bits(value: int, bits: tuple) -> int:
|
|
|
93
92
|
return value
|
|
94
93
|
|
|
95
94
|
|
|
96
|
-
def toggle_bit(value: int, bit) -> int:
|
|
95
|
+
def toggle_bit(value: int, bit: int) -> int:
|
|
97
96
|
"""
|
|
98
97
|
Toggle the bit in the given value.
|
|
99
98
|
|
|
@@ -107,7 +106,7 @@ def toggle_bit(value: int, bit) -> int:
|
|
|
107
106
|
return value ^ (1 << bit)
|
|
108
107
|
|
|
109
108
|
|
|
110
|
-
def bit_set(value: int, bit) -> bool:
|
|
109
|
+
def bit_set(value: int, bit: int) -> bool:
|
|
111
110
|
"""
|
|
112
111
|
Return True if the bit is set.
|
|
113
112
|
|
|
@@ -122,27 +121,25 @@ def bit_set(value: int, bit) -> bool:
|
|
|
122
121
|
return value & bit_value == bit_value
|
|
123
122
|
|
|
124
123
|
|
|
125
|
-
def bits_set(value: int, *args:
|
|
124
|
+
def bits_set(value: int, *args: int) -> bool:
|
|
126
125
|
"""
|
|
127
126
|
Return True if all the bits are set.
|
|
128
127
|
|
|
129
128
|
Args:
|
|
130
129
|
value (int): the value to check
|
|
131
130
|
args: a set of indices of the bits to check, starting from 0 at the LSB.
|
|
132
|
-
All the indices
|
|
133
|
-
|
|
131
|
+
All the indices shall be given as separate arguments, i.e. unpack a list
|
|
132
|
+
if needed.
|
|
134
133
|
|
|
135
134
|
Returns:
|
|
136
135
|
True if all the bits are set (1).
|
|
137
136
|
|
|
138
137
|
Examples:
|
|
139
|
-
>>> assert bits_set(0b0101_0000_1011,
|
|
140
|
-
>>> assert bits_set(0b0101_0000_1011,
|
|
141
|
-
>>> assert not bits_set(0b0101_0000_1011, [1, 2, 3])
|
|
138
|
+
>>> assert bits_set(0b0101_0000_1011, 0, 1, 3, 8, 10)
|
|
139
|
+
>>> assert bits_set(0b0101_0000_1011, 3, 8)
|
|
140
|
+
>>> assert not bits_set(0b0101_0000_1011, *[1, 2, 3])
|
|
142
141
|
"""
|
|
143
142
|
|
|
144
|
-
if len(args) == 1 and isinstance(args[0], list):
|
|
145
|
-
args = args[0]
|
|
146
143
|
return all([bit_set(value, bit) for bit in args])
|
|
147
144
|
|
|
148
145
|
|
|
@@ -506,7 +503,7 @@ def crc_calc(data: list[bytes | int], start: int, len_: int) -> int:
|
|
|
506
503
|
Reference:
|
|
507
504
|
The description of the CRC calculation for RMAP is given in the ECSS document
|
|
508
505
|
_Space Engineering: SpaceWire - Remote Memory Access Protocol_, section A.3
|
|
509
|
-
on page 80 [ECSS
|
|
506
|
+
on page 80 [ECSS-E-ST-50-52C].
|
|
510
507
|
|
|
511
508
|
"""
|
|
512
509
|
crc: int = 0
|
|
@@ -548,7 +545,7 @@ def s16(value: int) -> int:
|
|
|
548
545
|
>>> s16(0b1000_0000_0001_0001)
|
|
549
546
|
-32751
|
|
550
547
|
|
|
551
|
-
The 'bin()'
|
|
548
|
+
The 'bin()' function will return a strange representation of this number:
|
|
552
549
|
|
|
553
550
|
>>> bin(-32751)
|
|
554
551
|
'-0b111111111101111'
|
|
@@ -15,8 +15,8 @@ from typing import Optional
|
|
|
15
15
|
|
|
16
16
|
import rich
|
|
17
17
|
|
|
18
|
-
from egse.system import get_caller_info
|
|
19
18
|
from egse.log import logger
|
|
19
|
+
from egse.system import get_caller_info
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def static_vars(**kwargs):
|
|
@@ -316,7 +316,10 @@ def debug(func):
|
|
|
316
316
|
|
|
317
317
|
|
|
318
318
|
def profile_func(
|
|
319
|
-
output_file: str
|
|
319
|
+
output_file: str | None = None,
|
|
320
|
+
sort_by: str = "cumulative",
|
|
321
|
+
lines_to_print: int | None = None,
|
|
322
|
+
strip_dirs: bool = False,
|
|
320
323
|
) -> Callable:
|
|
321
324
|
"""A time profiler decorator.
|
|
322
325
|
|
|
@@ -346,7 +349,7 @@ def profile_func(
|
|
|
346
349
|
decorator](https://gist.github.com/ekhoda/2de44cf60d29ce24ad29758ce8635b78).
|
|
347
350
|
|
|
348
351
|
Inspired by and modified the profile decorator of Giampaolo Rodola:
|
|
349
|
-
[profile
|
|
352
|
+
[profile decorator](http://code.activestate.com/recipes/577817-profile-decorator/).
|
|
350
353
|
|
|
351
354
|
|
|
352
355
|
"""
|
|
@@ -72,8 +72,8 @@ import os
|
|
|
72
72
|
import warnings
|
|
73
73
|
from pathlib import Path
|
|
74
74
|
|
|
75
|
-
from dotenv import load_dotenv as _load_dotenv
|
|
76
75
|
from dotenv import find_dotenv
|
|
76
|
+
from dotenv import load_dotenv as _load_dotenv
|
|
77
77
|
from rich.console import Console
|
|
78
78
|
|
|
79
79
|
from egse.decorators import static_vars
|
|
@@ -697,6 +697,7 @@ def env_var(**kwargs: str | int | float | bool | None):
|
|
|
697
697
|
def main(args: list | None = None): # pragma: no cover
|
|
698
698
|
import argparse
|
|
699
699
|
import sys
|
|
700
|
+
|
|
700
701
|
import rich
|
|
701
702
|
|
|
702
703
|
parser = argparse.ArgumentParser()
|
|
@@ -18,6 +18,7 @@ __all__ = [
|
|
|
18
18
|
"LOG_DATE_FORMAT_FULL",
|
|
19
19
|
"LOG_DATE_FORMAT_CLEAN",
|
|
20
20
|
"logger",
|
|
21
|
+
"logging", # export to guarantee that this module is imported and initialized before users use logging
|
|
21
22
|
"root_logger",
|
|
22
23
|
"egse_logger",
|
|
23
24
|
"get_log_level_from_env",
|
|
@@ -84,7 +85,7 @@ class NonEGSEFilter(logging.Filter):
|
|
|
84
85
|
return not record.name.startswith("egse")
|
|
85
86
|
|
|
86
87
|
|
|
87
|
-
def get_log_level_from_env(env_var: str = "LOG_LEVEL", default:
|
|
88
|
+
def get_log_level_from_env(env_var: str = "LOG_LEVEL", default: str = "INFO") -> int:
|
|
88
89
|
"""Read the log level from an environment variable."""
|
|
89
90
|
log_level_str = os.getenv(env_var, default)
|
|
90
91
|
|
|
@@ -95,18 +96,16 @@ def get_log_level_from_env(env_var: str = "LOG_LEVEL", default: int = logging.IN
|
|
|
95
96
|
if 10 <= log_level <= 50:
|
|
96
97
|
return log_level
|
|
97
98
|
else:
|
|
98
|
-
logging.warning(
|
|
99
|
-
|
|
100
|
-
)
|
|
101
|
-
return default
|
|
99
|
+
logging.warning(f"Log level {log_level} outside standard range (10-50). Using {default.upper()}.")
|
|
100
|
+
return logging._nameToLevel[default.upper()]
|
|
102
101
|
|
|
103
102
|
except ValueError:
|
|
104
103
|
log_level_str = log_level_str.upper()
|
|
105
104
|
try:
|
|
106
105
|
return getattr(logging, log_level_str)
|
|
107
106
|
except AttributeError:
|
|
108
|
-
logging.error(f"Invalid LOG_LEVEL '{log_level_str}'. Using {
|
|
109
|
-
return default
|
|
107
|
+
logging.error(f"Invalid LOG_LEVEL '{log_level_str}'. Using {default.upper()}.")
|
|
108
|
+
return logging._nameToLevel[default.upper()]
|
|
110
109
|
|
|
111
110
|
|
|
112
111
|
egse_logger = logging.getLogger("egse")
|
|
@@ -145,7 +144,7 @@ if __name__ == "__main__":
|
|
|
145
144
|
Environment variables:
|
|
146
145
|
- LOG_LEVEL=debug|info|warning|critical
|
|
147
146
|
- LOG_FORMAT=full|clean
|
|
148
|
-
|
|
147
|
+
|
|
149
148
|
Example logging statements
|
|
150
149
|
- logging level set to INFO
|
|
151
150
|
- logging format set to full
|
|
@@ -9,12 +9,15 @@ from egse.device import AsyncDeviceTransport
|
|
|
9
9
|
from egse.device import DeviceConnectionError
|
|
10
10
|
from egse.device import DeviceError
|
|
11
11
|
from egse.device import DeviceTimeoutError
|
|
12
|
+
from egse.env import bool_env
|
|
12
13
|
from egse.log import logger
|
|
13
14
|
|
|
14
15
|
DEFAULT_READ_TIMEOUT = 1.0 # seconds
|
|
15
16
|
DEFAULT_CONNECT_TIMEOUT = 3.0 # seconds
|
|
16
17
|
IDENTIFICATION_QUERY = "*IDN?"
|
|
17
18
|
|
|
19
|
+
VERBOSE_DEBUG = bool_env("VERBOSE_DEBUG")
|
|
20
|
+
|
|
18
21
|
SEPARATOR = b"\n"
|
|
19
22
|
SEPARATOR_STR = SEPARATOR.decode()
|
|
20
23
|
|
|
@@ -75,8 +78,7 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
|
|
|
75
78
|
self._connect_lock = asyncio.Lock()
|
|
76
79
|
"""Prevents multiple, simultaneous connect or disconnect attempts."""
|
|
77
80
|
self._io_lock = asyncio.Lock()
|
|
78
|
-
"""Prevents multiple coroutines from attempting to read, write or query from the same stream
|
|
79
|
-
at the same time."""
|
|
81
|
+
"""Prevents multiple coroutines from attempting to read, write or query from the same stream at the same time."""
|
|
80
82
|
|
|
81
83
|
def is_simulator(self) -> bool:
|
|
82
84
|
return False
|
|
@@ -166,6 +168,10 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
|
|
|
166
168
|
|
|
167
169
|
self._is_connection_open = True
|
|
168
170
|
|
|
171
|
+
response = await self.read_string()
|
|
172
|
+
if VERBOSE_DEBUG:
|
|
173
|
+
logger.debug(f"Response after connection: {response}")
|
|
174
|
+
|
|
169
175
|
logger.debug(f"Successfully connected to {self._device_name}.")
|
|
170
176
|
|
|
171
177
|
except asyncio.TimeoutError as exc:
|
|
@@ -338,23 +344,23 @@ class AsyncSCPIInterface(AsyncDeviceInterface, AsyncDeviceTransport):
|
|
|
338
344
|
if not self._is_connection_open or self._writer is None:
|
|
339
345
|
raise DeviceConnectionError(self._device_name, "Device not connected, use connect() first")
|
|
340
346
|
|
|
341
|
-
# Ensure command ends with
|
|
347
|
+
# Ensure command ends with the required terminator
|
|
342
348
|
if not command.endswith(SEPARATOR_STR):
|
|
343
349
|
command += SEPARATOR_STR
|
|
344
350
|
|
|
345
|
-
logger.info(f"-----> {command}")
|
|
351
|
+
logger.info(f"-----> {command=}")
|
|
346
352
|
self._writer.write(command.encode())
|
|
347
353
|
await self._writer.drain()
|
|
348
354
|
|
|
349
|
-
# First, small delay to allow device to prepare response
|
|
355
|
+
# First, small delay to allow the device to prepare a response
|
|
350
356
|
await asyncio.sleep(0.01)
|
|
351
357
|
|
|
352
|
-
# Try to read until
|
|
358
|
+
# Try to read until the required separator (common SCPI terminator)
|
|
353
359
|
try:
|
|
354
360
|
response = await asyncio.wait_for(
|
|
355
361
|
self._reader.readuntil(separator=SEPARATOR), timeout=self.read_timeout
|
|
356
362
|
)
|
|
357
|
-
logger.info(f"<----- {response}")
|
|
363
|
+
logger.info(f"<----- {response=}")
|
|
358
364
|
return response
|
|
359
365
|
|
|
360
366
|
except asyncio.IncompleteReadError as exc:
|
|
@@ -380,6 +380,37 @@ class Settings:
|
|
|
380
380
|
|
|
381
381
|
return msg.rstrip()
|
|
382
382
|
|
|
383
|
+
@classmethod
|
|
384
|
+
def from_string(cls, yaml_string: str, group: str | None = None) -> attrdict:
|
|
385
|
+
"""
|
|
386
|
+
Creates a Settings object from a YAML string.
|
|
387
|
+
|
|
388
|
+
Args:
|
|
389
|
+
yaml_string (str): the YAML configuration as a string
|
|
390
|
+
|
|
391
|
+
Returns:
|
|
392
|
+
An attribute dictionary with all the settings from the given string.
|
|
393
|
+
"""
|
|
394
|
+
try:
|
|
395
|
+
yaml_document = yaml.load(yaml_string, Loader=SAFE_LOADER)
|
|
396
|
+
settings = attrdict({name: value for name, value in yaml_document.items()}, label="Settings")
|
|
397
|
+
except yaml.YAMLError as exc:
|
|
398
|
+
logger.error(exc)
|
|
399
|
+
raise SettingsError("Error loading YAML document from string") from exc
|
|
400
|
+
|
|
401
|
+
if not settings:
|
|
402
|
+
logger.warning(
|
|
403
|
+
"The Settings YAML string is empty. No local settings were loaded, an empty dictionary is returned."
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
if group:
|
|
407
|
+
if group in settings:
|
|
408
|
+
settings = attrdict({name: value for name, value in settings[group].items()}, label=group)
|
|
409
|
+
else:
|
|
410
|
+
raise SettingsError(f"Group name '{group}' is not defined in the provided YAML string.")
|
|
411
|
+
|
|
412
|
+
return settings
|
|
413
|
+
|
|
383
414
|
|
|
384
415
|
def main(args: list | None = None): # pragma: no cover
|
|
385
416
|
# We provide convenience to inspect the settings by calling this module directly from Python.
|
|
@@ -155,7 +155,7 @@ class SocketDevice(DeviceConnectionInterface, DeviceTransport):
|
|
|
155
155
|
|
|
156
156
|
try:
|
|
157
157
|
while True:
|
|
158
|
-
# compute remaining timeout for select, this is needed because we read in different parts
|
|
158
|
+
# compute the remaining timeout for select, this is needed because we read in different parts
|
|
159
159
|
# until ETX is received, and we want to receive the complete messages including ETX within
|
|
160
160
|
# the read timeout.
|
|
161
161
|
if end_time is None:
|