cgse 0.16.8__tar.gz → 0.16.9__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.16.8 → cgse-0.16.9}/PKG-INFO +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/registry/client.py +9 -115
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/storage/storage_cs.py +2 -7
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_registry_service.py +0 -67
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/pyproject.toml +1 -1
- {cgse-0.16.8 → cgse-0.16.9}/service_registry.db +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/service_registry.db-shm +0 -0
- cgse-0.16.9/service_registry.db-wal +0 -0
- cgse-0.16.8/service_registry.db-wal +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/.gitignore +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/buffer_vat.log +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/buffer_vat.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/bump.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/conftest.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/bits.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/calibration.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/command.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/config.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/control.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/counter.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/decorators.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/device.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/dicts.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/dummy.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/env.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/exceptions.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/heartbeat.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/hk.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/listener.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/metrics.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/mixin.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/monitoring.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/observer.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/obsid.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/persistence.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/plugin.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/process.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/reload.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/settings.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/setup.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/api/system.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/custom_theme/main.html +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/docs.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/installation.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/nox.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/uv.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/getting_started.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/help.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/cli-cgse.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/grafana-queries.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/initialize.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-core/notifyhub.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/libs/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/package_list.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/projects/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/roadmap.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/stylesheets/custom.css +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/stylesheets/extra.css +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/tutorial.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/user_guide/cli.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/docs/user_guide/index.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/duckdb_metrics.db +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/duckdb_metrics.db.wal +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/identifier.sqlite +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/justfile +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/justfile +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/cgse_common/cgse.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/calibration.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/config.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/counter.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/decorators.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/device.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/dicts.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/env.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/heartbeat.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/hk.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/log.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/metrics.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/plugin.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/process.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/py.typed +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/ratelimit.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/resource.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/scpi.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/settings.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/setup.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/signal.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/socketdevice.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/state.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/system.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/src/egse/zmq_ser.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/empty_process.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/process_with_children.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_decorators.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_log.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_metrics.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_plugin.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_process.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_ratelimit.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_setup.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_state.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/.envrc.disabled +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/_stop.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/_setup_core.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/async_control.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/async_control_claude.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/command.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/confman/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/connect-todo.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/connect.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/control.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/dummy.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/listener.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/logger/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/logger/log_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/mixin.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/monitoring.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/client.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/proxy.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/registry/server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/registry/service.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/services.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/fixtures/helpers.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/fixtures/services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/script_subscribe_to_notifyhub.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_async_control.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_client_server_interaction.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_cm_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_command.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_connect.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_control.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_dummy.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_event_notification.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_extensions.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_listener.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_logger.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_mixin.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_notify_hub.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_server_running.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_server_running_with_fixture.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/mkdocs.yml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/noxfile.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/overrides/.icons/custom/dbend-light.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/overrides/.icons/custom/gear.svg +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/justfile +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_acs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/tests/script_daq6510_central_heating.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/tests/script_plot_readings.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/ruff.toml +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/scratch/advanced-process-monitoring.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/scratch/live-process-monitoring.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/scratch/match-case.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/scratch/processes.json +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/scratch/simple-process-monitoring.py +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/temperature_readings.log +0 -0
- {cgse-0.16.8 → cgse-0.16.9}/test_service_registry.db +0 -0
|
@@ -329,7 +329,7 @@ class RegistryClient:
|
|
|
329
329
|
metadata=self._service_info["metadata"],
|
|
330
330
|
)
|
|
331
331
|
|
|
332
|
-
def discover_service(self, service_type: str
|
|
332
|
+
def discover_service(self, service_type: str) -> dict[str, Any] | None:
|
|
333
333
|
"""
|
|
334
334
|
Discover a service of the specified type. The service is guaranteed to be healthy at the time of discovery.
|
|
335
335
|
|
|
@@ -341,15 +341,10 @@ class RegistryClient:
|
|
|
341
341
|
|
|
342
342
|
Args:
|
|
343
343
|
service_type: Type of service to discover
|
|
344
|
-
use_cache: Whether to use cached service information
|
|
345
344
|
|
|
346
345
|
Returns:
|
|
347
346
|
Service information if found, None otherwise
|
|
348
347
|
"""
|
|
349
|
-
# Try to use cache first if enabled
|
|
350
|
-
if use_cache:
|
|
351
|
-
self.logger.info("Cache not yet implemented.")
|
|
352
|
-
|
|
353
348
|
request = {"action": "discover", "service_type": service_type}
|
|
354
349
|
|
|
355
350
|
response = self._send_request(MessageType.REQUEST_WITH_REPLY, request)
|
|
@@ -363,14 +358,13 @@ class RegistryClient:
|
|
|
363
358
|
self.logger.warning(f"Service discovery failed: {response.get('error')}")
|
|
364
359
|
return None
|
|
365
360
|
|
|
366
|
-
def get_service(self, service_id: str | None = None
|
|
361
|
+
def get_service(self, service_id: str | None = None) -> dict[str, Any] | None:
|
|
367
362
|
"""
|
|
368
363
|
Get information about a specific service. When no service_id is given,
|
|
369
364
|
the service_id known to this client will be used.
|
|
370
365
|
|
|
371
366
|
Args:
|
|
372
367
|
service_id: ID of the service to get [default=None]
|
|
373
|
-
use_cache: Whether to use cached service information
|
|
374
368
|
|
|
375
369
|
Returns:
|
|
376
370
|
Service information if found, None otherwise.
|
|
@@ -582,10 +576,6 @@ class AsyncRegistryClient:
|
|
|
582
576
|
|
|
583
577
|
self._event_handlers = {}
|
|
584
578
|
|
|
585
|
-
# Service cache (for discovery)
|
|
586
|
-
self._service_cache = {}
|
|
587
|
-
self._service_cache_lock = None
|
|
588
|
-
|
|
589
579
|
self.req_socket: zmq.asyncio.Socket | None = None
|
|
590
580
|
self.sub_socket: zmq.asyncio.Socket | None = None
|
|
591
581
|
self.hb_socket: zmq.asyncio.Socket | None = None
|
|
@@ -634,11 +624,6 @@ class AsyncRegistryClient:
|
|
|
634
624
|
self.hb_socket.close()
|
|
635
625
|
self.hb_socket = None
|
|
636
626
|
|
|
637
|
-
def _get_service_cache_lock(self):
|
|
638
|
-
if self._service_cache_lock is None:
|
|
639
|
-
self._service_cache_lock = asyncio.Lock()
|
|
640
|
-
return self._service_cache_lock
|
|
641
|
-
|
|
642
627
|
async def _send_request(
|
|
643
628
|
self, msg_type: MessageType, request: dict[str, Any], timeout: float = None
|
|
644
629
|
) -> dict[str, Any]:
|
|
@@ -992,9 +977,6 @@ class AsyncRegistryClient:
|
|
|
992
977
|
|
|
993
978
|
self.logger.debug(f"Received event: {event_type}")
|
|
994
979
|
|
|
995
|
-
# Update service cache based on events
|
|
996
|
-
await self._update_cache_from_event(event_type, event)
|
|
997
|
-
|
|
998
980
|
# Call registered handlers
|
|
999
981
|
handlers = self._event_handlers.get(event_type, [])
|
|
1000
982
|
for handler in handlers:
|
|
@@ -1022,30 +1004,7 @@ class AsyncRegistryClient:
|
|
|
1022
1004
|
self.logger.info("Started event listener task")
|
|
1023
1005
|
return task
|
|
1024
1006
|
|
|
1025
|
-
async def
|
|
1026
|
-
"""
|
|
1027
|
-
Update the service cache based on registry events.
|
|
1028
|
-
|
|
1029
|
-
Args:
|
|
1030
|
-
event_type: Type of the event.
|
|
1031
|
-
event: Event data
|
|
1032
|
-
"""
|
|
1033
|
-
async with self._get_service_cache_lock():
|
|
1034
|
-
data = event.get("data", {})
|
|
1035
|
-
service_id = data.get("service_id")
|
|
1036
|
-
|
|
1037
|
-
if not service_id:
|
|
1038
|
-
return
|
|
1039
|
-
|
|
1040
|
-
if event_type == "register":
|
|
1041
|
-
service_info = data.get("service_info", {})
|
|
1042
|
-
if service_info:
|
|
1043
|
-
self._service_cache[service_id] = service_info
|
|
1044
|
-
elif event_type in ("deregister", "expire"):
|
|
1045
|
-
if service_id in self._service_cache:
|
|
1046
|
-
del self._service_cache[service_id]
|
|
1047
|
-
|
|
1048
|
-
async def discover_service(self, service_type: str, use_cache: bool = True) -> dict[str, Any] | None:
|
|
1007
|
+
async def discover_service(self, service_type: str) -> dict[str, Any] | None:
|
|
1049
1008
|
"""
|
|
1050
1009
|
Discover a service of the specified type. The service is guaranteed to be healthy at the time of discovery.
|
|
1051
1010
|
|
|
@@ -1057,27 +1016,11 @@ class AsyncRegistryClient:
|
|
|
1057
1016
|
|
|
1058
1017
|
Args:
|
|
1059
1018
|
service_type: Type of service to discover
|
|
1060
|
-
use_cache: Whether to use cached service information
|
|
1061
1019
|
|
|
1062
1020
|
Returns:
|
|
1063
1021
|
Service information if found, None otherwise
|
|
1064
1022
|
"""
|
|
1065
|
-
|
|
1066
|
-
if use_cache:
|
|
1067
|
-
async with self._get_service_cache_lock():
|
|
1068
|
-
# Find services of the specified type
|
|
1069
|
-
matching_services = []
|
|
1070
|
-
for service_id, service_info in self._service_cache.items():
|
|
1071
|
-
if service_info.get("type") == service_type or service_type in service_info.get("tags", []):
|
|
1072
|
-
matching_services.append(service_info)
|
|
1073
|
-
|
|
1074
|
-
if matching_services:
|
|
1075
|
-
# Simple load balancing - random selection
|
|
1076
|
-
import random
|
|
1077
|
-
|
|
1078
|
-
return random.choice(matching_services)
|
|
1079
|
-
|
|
1080
|
-
# If not found in cache or cache disabled, ask the registry
|
|
1023
|
+
|
|
1081
1024
|
request = {"action": "discover", "service_type": service_type}
|
|
1082
1025
|
|
|
1083
1026
|
response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request)
|
|
@@ -1087,34 +1030,25 @@ class AsyncRegistryClient:
|
|
|
1087
1030
|
if response.get("success"):
|
|
1088
1031
|
service = response.get("service")
|
|
1089
1032
|
|
|
1090
|
-
# Update cache
|
|
1091
|
-
if service and "id" in service:
|
|
1092
|
-
async with self._get_service_cache_lock():
|
|
1093
|
-
self._service_cache[service["id"]] = service
|
|
1094
|
-
|
|
1095
1033
|
return service
|
|
1096
1034
|
else:
|
|
1097
1035
|
self.logger.warning(f"Service discovery failed: {response.get('error')}")
|
|
1098
1036
|
return None
|
|
1099
1037
|
|
|
1100
|
-
async def get_service(self, service_id: str
|
|
1038
|
+
async def get_service(self, service_id: str | None = None) -> dict[str, Any] | None:
|
|
1101
1039
|
"""
|
|
1102
|
-
Get information about a specific service.
|
|
1040
|
+
Get information about a specific service. When no service_id is given,
|
|
1041
|
+
the service_id known to this client will be used.
|
|
1103
1042
|
|
|
1104
1043
|
Args:
|
|
1105
1044
|
service_id: ID of the service to get
|
|
1106
|
-
use_cache: Whether to use cached service information
|
|
1107
1045
|
|
|
1108
1046
|
Returns:
|
|
1109
1047
|
Service information if found, None otherwise
|
|
1110
1048
|
"""
|
|
1111
|
-
# Try to use cache first if enabled
|
|
1112
|
-
if use_cache:
|
|
1113
|
-
async with self._get_service_cache_lock():
|
|
1114
|
-
if service_id in self._service_cache:
|
|
1115
|
-
return self._service_cache[service_id]
|
|
1116
1049
|
|
|
1117
|
-
|
|
1050
|
+
service_id = service_id or self._service_id
|
|
1051
|
+
|
|
1118
1052
|
request = {"action": "get", "service_id": service_id}
|
|
1119
1053
|
|
|
1120
1054
|
response = await self._send_request(MessageType.REQUEST_WITH_REPLY, request)
|
|
@@ -1122,11 +1056,6 @@ class AsyncRegistryClient:
|
|
|
1122
1056
|
if response.get("success"):
|
|
1123
1057
|
service = response.get("service")
|
|
1124
1058
|
|
|
1125
|
-
# Update cache
|
|
1126
|
-
if service:
|
|
1127
|
-
async with self._get_service_cache_lock():
|
|
1128
|
-
self._service_cache[service_id] = service
|
|
1129
|
-
|
|
1130
1059
|
return service
|
|
1131
1060
|
else:
|
|
1132
1061
|
self.logger.warning(f"Get service failed: {response.get('error')}")
|
|
@@ -1149,12 +1078,6 @@ class AsyncRegistryClient:
|
|
|
1149
1078
|
if response.get("success"):
|
|
1150
1079
|
services = response.get("services", [])
|
|
1151
1080
|
|
|
1152
|
-
# Update cache
|
|
1153
|
-
async with self._get_service_cache_lock():
|
|
1154
|
-
for service in services:
|
|
1155
|
-
if "id" in service:
|
|
1156
|
-
self._service_cache[service["id"]] = service
|
|
1157
|
-
|
|
1158
1081
|
return services
|
|
1159
1082
|
else:
|
|
1160
1083
|
self.logger.warning(f"List services failed: {response.get('error')}")
|
|
@@ -1224,35 +1147,6 @@ class AsyncRegistryClient:
|
|
|
1224
1147
|
except Exception as exc:
|
|
1225
1148
|
self.logger.error(f"Error during cleanup: {exc}")
|
|
1226
1149
|
|
|
1227
|
-
@asynccontextmanager
|
|
1228
|
-
async def register_context(self, *args, **kwargs):
|
|
1229
|
-
"""
|
|
1230
|
-
Async context manager for service registration.
|
|
1231
|
-
|
|
1232
|
-
Example:
|
|
1233
|
-
async with client.register_context("my-service", "localhost", 8080):
|
|
1234
|
-
# Service is registered
|
|
1235
|
-
await app.start()
|
|
1236
|
-
# Service is automatically deregistered
|
|
1237
|
-
"""
|
|
1238
|
-
service_id = await self.register(*args, **kwargs)
|
|
1239
|
-
|
|
1240
|
-
if not service_id:
|
|
1241
|
-
raise RuntimeError("Failed to register service")
|
|
1242
|
-
|
|
1243
|
-
# Start heartbeat and event listener
|
|
1244
|
-
await self.start_heartbeat()
|
|
1245
|
-
await self.start_event_listener()
|
|
1246
|
-
|
|
1247
|
-
try:
|
|
1248
|
-
yield service_id
|
|
1249
|
-
finally:
|
|
1250
|
-
# Clean up
|
|
1251
|
-
await self.stop_event_listener()
|
|
1252
|
-
await self.stop_heartbeat()
|
|
1253
|
-
await self.deregister()
|
|
1254
|
-
# await self.close() # client shall not be closed by this context manager !!
|
|
1255
|
-
|
|
1256
1150
|
|
|
1257
1151
|
def is_service_registered(service_type: str):
|
|
1258
1152
|
"""Convenience function to check if a service is registered."""
|
|
@@ -62,6 +62,8 @@ class StorageControlServer(ControlServer):
|
|
|
62
62
|
|
|
63
63
|
multiprocessing.current_process().name = PROCESS_NAME
|
|
64
64
|
|
|
65
|
+
self.scheduler: BackgroundScheduler | None = None
|
|
66
|
+
|
|
65
67
|
self.logger = logger
|
|
66
68
|
self.service_name = PROCESS_NAME
|
|
67
69
|
self.service_type = SERVICE_TYPE
|
|
@@ -76,13 +78,6 @@ class StorageControlServer(ControlServer):
|
|
|
76
78
|
|
|
77
79
|
self.register_service(service_type=SERVICE_TYPE)
|
|
78
80
|
|
|
79
|
-
# NOTE:
|
|
80
|
-
# Since the CM CS is started after the SM CS in the normal startup sequence, delay the task to load
|
|
81
|
-
# the Setup until after the CM CS has been properly started. We do that now with a delay time of 30s,
|
|
82
|
-
# but we might in the future use a function returning a boolean, until...
|
|
83
|
-
# from egse.confman import is_configuration_manager_active
|
|
84
|
-
# self.schedule_task(self.device_protocol.controller.load_setup, after=10.0, when=is_configuration_manager_active)
|
|
85
|
-
|
|
86
81
|
def before_serve(self):
|
|
87
82
|
self.scheduler = BackgroundScheduler(timezone=utc)
|
|
88
83
|
self.scheduler.start()
|
|
@@ -787,70 +787,3 @@ async def test_client_health_check(client, server):
|
|
|
787
787
|
"""Test health check."""
|
|
788
788
|
health = await client.health_check()
|
|
789
789
|
assert health is True
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
@pytest.mark.asyncio
|
|
793
|
-
async def test_client_caching(client, server):
|
|
794
|
-
"""Test client's service caching."""
|
|
795
|
-
|
|
796
|
-
service_id = await client.register("cache-test-service", "localhost", 8080, service_type="cache-test")
|
|
797
|
-
|
|
798
|
-
# Look up the service (should populate cache)
|
|
799
|
-
service = await client.get_service(service_id)
|
|
800
|
-
assert service is not None
|
|
801
|
-
|
|
802
|
-
# Check if it's in the cache
|
|
803
|
-
async with client._service_cache_lock:
|
|
804
|
-
assert service_id in client._service_cache
|
|
805
|
-
|
|
806
|
-
# Look up by type (should use cache when use_cache=True)
|
|
807
|
-
with patch.object(client, "_send_request", new_callable=AsyncMock) as mock_send:
|
|
808
|
-
# First call with use_cache=True should check cache
|
|
809
|
-
service = await client.discover_service("cache-test", use_cache=True)
|
|
810
|
-
assert service is not None
|
|
811
|
-
assert service["id"] == service_id
|
|
812
|
-
|
|
813
|
-
# Configure the mock to return a dictionary that matches what _send_request would return
|
|
814
|
-
mock_send.return_value = {
|
|
815
|
-
"success": True,
|
|
816
|
-
"service": {
|
|
817
|
-
"id": service_id,
|
|
818
|
-
"name": "cache-test-service",
|
|
819
|
-
"host": "localhost",
|
|
820
|
-
"port": 8080,
|
|
821
|
-
"type": "cache-test",
|
|
822
|
-
},
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
# Second call with use_cache=False should make a request
|
|
826
|
-
service = await client.discover_service("cache-test", use_cache=False)
|
|
827
|
-
assert service is not None
|
|
828
|
-
assert mock_send.called
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
@pytest.mark.asyncio
|
|
832
|
-
async def test_client_register_context(client, server, req_socket):
|
|
833
|
-
"""Test the register_context context manager."""
|
|
834
|
-
|
|
835
|
-
# Use the context manager
|
|
836
|
-
async with client.register_context(
|
|
837
|
-
"context-test-service", "localhost", 8080, service_type="context-test"
|
|
838
|
-
) as service_id:
|
|
839
|
-
# Verify the service was registered
|
|
840
|
-
response = await send_request(
|
|
841
|
-
MessageType.REQUEST_WITH_REPLY, req_socket, {"action": "get", "service_id": service_id}
|
|
842
|
-
)
|
|
843
|
-
|
|
844
|
-
logger.info(f"----- In test_client_register_context: {response}")
|
|
845
|
-
|
|
846
|
-
assert response["success"] is True
|
|
847
|
-
assert response["service"]["name"] == "context-test-service"
|
|
848
|
-
|
|
849
|
-
logger.info("----- In test_client_register_context: after context...")
|
|
850
|
-
|
|
851
|
-
# After exiting the context, the service should be deregistered
|
|
852
|
-
response = await send_request(
|
|
853
|
-
MessageType.REQUEST_WITH_REPLY, req_socket, {"action": "get", "service_id": service_id}
|
|
854
|
-
)
|
|
855
|
-
|
|
856
|
-
assert response["success"] is False
|
|
index 80cc010..6227ca3 100644
|
|
|
Binary file
|
|
index 0b174f0..b2f077b 100644
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|