cgse 0.13.1__tar.gz → 0.14.0__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.13.1 → cgse-0.14.0}/PKG-INFO +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/cgse_common/cgse.py +1 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/calibration.py +2 -2
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/config.py +3 -27
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/counter.py +4 -8
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/decorators.py +11 -12
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/device.py +0 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/dicts.py +15 -14
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/env.py +2 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/heartbeat.py +0 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/hk.py +5 -6
- cgse-0.14.0/libs/cgse-common/src/egse/log.py +132 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/metrics.py +1 -4
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/plugin.py +14 -10
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/process.py +21 -23
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/resource.py +6 -9
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/scpi.py +1 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/settings.py +4 -5
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/setup.py +176 -127
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/signal.py +1 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/socketdevice.py +1 -4
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/state.py +5 -30
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/system.py +3 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/zmq_ser.py +5 -2
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/empty_process.py +3 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/process_with_children.py +4 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_decorators.py +7 -2
- cgse-0.14.0/libs/cgse-common/tests/test_log.py +46 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_plugin.py +14 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_process.py +10 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_setup.py +45 -21
- cgse-0.14.0/libs/cgse-common/tests/test_state.py +21 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/pyproject.toml +4 -1
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/_stop.py +30 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/services.py +3 -3
- cgse-0.14.0/libs/cgse-core/src/egse/_setup_core.py +154 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/command.py +1 -6
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/confman/__init__.py +28 -29
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/control.py +30 -34
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/dummy.py +79 -79
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/listener.py +4 -5
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/logger/__init__.py +8 -7
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/logger/log_cs.py +39 -20
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/mixin.py +11 -14
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/monitoring.py +14 -16
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/protocol.py +1 -3
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/proxy.py +8 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/registry/client.py +4 -3
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/services.py +14 -15
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/fixtures/helpers.py +7 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/fixtures/services.py +23 -5
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_async_control.py +2 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_client_server_interaction.py +41 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_cm_cs.py +18 -6
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_command.py +0 -1
- cgse-0.14.0/libs/cgse-core/tests/test_dummy.py +68 -0
- cgse-0.14.0/libs/cgse-core/tests/test_extensions.py +10 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_logger.py +10 -3
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_registry_service.py +128 -54
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_server_running.py +5 -8
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_server_running_with_fixture.py +5 -9
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_services.py +2 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-fits/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-hdf5/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-spw/pyproject.toml +1 -1
- {cgse-0.13.1 → cgse-0.14.0}/pyproject.toml +2 -2
- {cgse-0.13.1 → cgse-0.14.0}/service_registry.db +0 -0
- cgse-0.13.1/libs/cgse-common/tests/test_state.py +0 -9
- cgse-0.13.1/service_registry.db-shm +0 -0
- cgse-0.13.1/service_registry.db-wal +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/.github/workflows/ruff-format-check.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/.gitignore +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/bump.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/conftest.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/bits.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/calibration.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/command.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/config.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/control.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/counter.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/decorators.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/device.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/dicts.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/dummy.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/env.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/exceptions.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/heartbeat.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/hk.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/listener.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/metrics.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/mixin.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/monitoring.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/observer.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/obsid.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/persistence.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/plugin.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/process.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/reload.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/settings.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/setup.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/api/system.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/custom_theme/main.html +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/coding_style.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/docs.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/installation.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/monitoring.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/monorepo.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/nox.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/plugins.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/project-configuration.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/unit_testing.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/uv.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/dev_guide/versioning.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/getting_started.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/help.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/images/github-fork-clone-dark.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/images/github-fork-clone.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/images/grafana-queries.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/images/icons/cgse-logo-blue.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/images/icons/cgse-logo.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/initialize.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-common/images/load_methods.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-common/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-common/settings.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-common/setup.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-coordinates/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-core/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-core/registry.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/cgse-gui/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/libs/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/package_list.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/projects/cgse-tools.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/projects/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/projects/symetrie-hexapod.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/roadmap.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/stylesheets/custom.css +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/stylesheets/extra.css +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/tutorial.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/docs/user_guide/index.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/duckdb_metrics.db +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/duckdb_metrics.db.wal +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/identifier.sqlite +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/justfile +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/justfile +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/noxfile.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/service_registry.db +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/cgse_common/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/cgse_common/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/bits.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/exceptions.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/observer.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/obsid.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/persistence.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/plugins/metrics/duckdb.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/plugins/metrics/influxdb.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/plugins/metrics/timescaledb.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/py.typed +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/randomwalk.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/ratelimit.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/reload.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/response.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/task.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/src/egse/version.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/conftest.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/COPYING +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00028_201028_155259.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00029_201028_155331.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00030_210311_134043.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00080_210917_105245.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00081_210922_142259.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL/conf/SETUP_CSL_00082_210923_094458.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL1/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/CSL2/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/IAS/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/INTA/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/LAB23/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00027_211119_140441.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00028_211119_160406.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00029_211119_172918.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00030_211122_103604.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/SRON/conf/SETUP_SRON_00031_211123_124900.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/common/telemetry/tm-dictionary-default.csv +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/conf/SETUP_20250114_1519.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/conf/config-file.toml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/cal_coeff_1234.csv +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/calibration.csv +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/calibration.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/command.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/corrupt.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/data-file.txt +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/empty_data_file.txt +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/empty_yaml_file.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/local_settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/new_local_settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/data/test_setup.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/icons/hourglass.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/icons/keyboard.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/icons/soap_sponge.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/lib/dev1/shared-lib.so +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/data/lib/dev2/shared-lib.so +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/fixtures/default_env.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/fixtures/helpers.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/handle_sigterm.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/raise_value_error.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/void-0.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/scripts/void-1.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_bits.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_config.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_device.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_env.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_fixtures.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_hk.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_influxdb_plugin.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_metrics.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_ratelimit.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_resource.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_response.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_settings.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_signal.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_system.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_task.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-common/tests/test_zmq_ser.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/cgse_coordinates/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/cgse_coordinates/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/avoidance.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/cslmodel.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/laser_tracker_to_dict.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/point.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/pyplot.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/referenceFrame.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/refmodel.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/rotationMatrix.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/src/egse/coordinates/transform3d_addon.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_avoidance.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_coordinates_plot.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_coordinates_serialize.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_point.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_ref_model.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_reference_frames.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-coordinates/tests/test_refmodel.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/.envrc.disabled +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/service_registry.db +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/_start.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/_status.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/cgse_explore.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/cgse_core/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/async_control.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/async_control_claude.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/confman/__main__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/confman/confman.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/confman/confman_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/busy.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/operational-mode.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/pm_ui.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/simulator-mode.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/start-process-button.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/stop-process-button.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/icons/user-interface.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/logger/__main__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/metricshub/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/metricshub/server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/notifyhub/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/notifyhub/event.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/notifyhub/server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/notifyhub/services.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/notifyhub/test.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/procman/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/procman/procman.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/procman/procman_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/procman/procman_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/procman/procman_ui.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/registry/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/registry/backend.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/registry/server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/registry/service.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/src/egse/services.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/storage/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/storage/__main__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/storage/persistence.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/storage/storage.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/src/egse/storage/storage_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/conftest.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/data/local_settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/fixtures/default_env.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/script_test_async_registry_client.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/script_test_registry_client_server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/script_test_service_registry_server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/script_test_sync_registry_client.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/services.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/stress_test_registry_server.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_confman_setups.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_control.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_listener.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_mixin.py +0 -0
- {cgse-0.13.1/libs/cgse-common → cgse-0.14.0/libs/cgse-core}/tests/test_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_registry_backend.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_settings_core.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-core/tests/test_zmq_microservice.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/buttons.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-start.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs-stop.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu-cs.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-started.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs-stopped.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/aeu_cs.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/alert.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/arrow-double-left.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/arrow-double-right.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/arrow-up.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/backward.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/busy.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/cleaning.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/color-scheme.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected-alert.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/cs-connected.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/cs-not-connected.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/double-left-arrow.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/double-right-arrow.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/erase-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/erase.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen-start.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen-stop.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fitsgen.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/forward.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk-start.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk-stop.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/fov-hk.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/front-desk.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/home-actioned.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/home-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/home.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/info.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/invalid.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-green.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-grey.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-orange.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-red.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-square-green.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-square-grey.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-square-orange.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/led-square-red.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-green.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-all-red.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el+.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/limit-switch-el-.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/location-marker.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-dpu.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-gimbal.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-huber.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-ogse.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-puna.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-tcs.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/logo-zonda.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/maximize.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/meter.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/more.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-start.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk-stop.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/n-fee-hk.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/observing-off.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/observing-on.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/open-document-hdf5.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/ops-mode.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/play-green.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/plugged-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/plugged.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/pm_ui.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/power-button-green.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/power-button-red.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/power-button.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/radar.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/radioactive.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/reload.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/remote-control-off.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/remote-control-on.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/repeat-blue.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/repeat.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/settings.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/shrink.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/shutter.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/sign-off.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/sign-on.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/sim-mode.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-go.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-minus.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/small-buttons-plus.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/sponge.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/start-button-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/start-button.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/stop-button-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/stop-button.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/stop-red.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/stop.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-disabled-square.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-disabled.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-off-square.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-off.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-on-square.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/switch-on.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/temperature-control.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/th_ui_logo.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/unplugged.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/unvalid.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/user-interface.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/vacuum.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/valid.png +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-dark.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/icons/zoom-to-pixel-white.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/led.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/limitswitch.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/states.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/styles/dark.qss +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/styles/default.qss +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/styles.qss +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/libs/cgse-gui/src/egse/gui/switch.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/mkdocs.yml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/noxfile.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/overrides/.icons/custom/dbend-dark.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/overrides/.icons/custom/dbend-light.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/overrides/.icons/custom/gear.svg +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/src/cgse_tools/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_clock.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/src/cgse_tools/cgse_commands.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/cgse-tools/src/egse/tools/status.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/justfile +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/noxfile.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/service_registry.db +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_adev.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_dev.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_mon.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/egse/tempcontrol/keithley/daq6510_sim.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/cgse_services.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/src/keithley_tempcontrol/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/temperature_readings.log +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/tests/script_daq6510_mon.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/tests/test_adev.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/keithley-tempcontrol/tests/test_dev.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_devif.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/egse/tempcontrol/lakeshore/lakeshore336_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_explore.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/cgse_services.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/src/lakeshore_tempcontrol/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/lakeshore-tempcontrol/tests/test_lakeshore336_simulator.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/alpha.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/dynalpha.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/hexapod_ui.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/joran_ui.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/pmac_regex.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_sim.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/puna_ui.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/punaplus.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_devif.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_protocol.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/egse/hexapod/symetrie/zonda_ui.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/__init__.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_explore.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/cgse_services.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/src/symetrie_hexapod/settings.yaml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/tests/test_puna.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/tests/test_puna_cs.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/generic/symetrie-hexapod/tests/test_puna_simulator.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-fits/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-fits/src/egse/plugins/storage/fits.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-hdf5/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-hdf5/src/egse/plugins/storage/hdf5.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-spw/README.md +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/projects/plato/plato-spw/src/egse/spw.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/ruff.toml +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/scratch/advanced-process-monitoring.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/scratch/live-process-monitoring.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/scratch/match-case.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/scratch/processes.json +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/scratch/simple-process-monitoring.py +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/temperature_readings.log +0 -0
- {cgse-0.13.1 → cgse-0.14.0}/test_service_registry.db +0 -0
|
@@ -5,8 +5,8 @@ This module provides functions to calibrate sensor values.
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
|
-
|
|
9
|
-
from egse.setup import
|
|
8
|
+
from navdict import navdict
|
|
9
|
+
from egse.setup import Setup, SetupError
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def apply_gain_offset(counts: float, gain: float, offset: float) -> float:
|
|
@@ -3,27 +3,15 @@ This module provides convenience functions to properly configure the CGSE
|
|
|
3
3
|
and to find paths and resources.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
import errno
|
|
9
6
|
import fnmatch
|
|
10
|
-
import logging
|
|
11
7
|
import os
|
|
12
|
-
from functools import lru_cache
|
|
13
|
-
from os.path import exists
|
|
14
|
-
from os.path import join
|
|
15
8
|
from pathlib import Path
|
|
16
9
|
from pathlib import PurePath
|
|
17
|
-
from typing import
|
|
18
|
-
from typing import Optional
|
|
10
|
+
from typing import Generator
|
|
19
11
|
from typing import Tuple
|
|
20
12
|
from typing import Union
|
|
21
|
-
from typing import Generator
|
|
22
13
|
|
|
23
|
-
import
|
|
24
|
-
from egse.decorators import deprecate
|
|
25
|
-
|
|
26
|
-
_logger = logging.getLogger(__name__)
|
|
14
|
+
from egse.log import logger
|
|
27
15
|
|
|
28
16
|
|
|
29
17
|
def find_first_occurrence_of_dir(pattern: str, root: Path | str) -> Path | None:
|
|
@@ -252,18 +240,6 @@ def find_root(
|
|
|
252
240
|
return Path(default) if default is not None else None
|
|
253
241
|
|
|
254
242
|
|
|
255
|
-
def set_logger_levels(logger_levels: List[Tuple] = None):
|
|
256
|
-
"""
|
|
257
|
-
Set the logging level for the given loggers.
|
|
258
|
-
|
|
259
|
-
"""
|
|
260
|
-
logger_levels = logger_levels or []
|
|
261
|
-
|
|
262
|
-
for name, level in logger_levels:
|
|
263
|
-
a_logger = logging.getLogger(name)
|
|
264
|
-
a_logger.setLevel(level)
|
|
265
|
-
|
|
266
|
-
|
|
267
243
|
class WorkingDirectory:
|
|
268
244
|
"""
|
|
269
245
|
WorkingDirectory is a context manager to temporarily change the working directory while
|
|
@@ -301,7 +277,7 @@ class WorkingDirectory:
|
|
|
301
277
|
try:
|
|
302
278
|
os.chdir(self._current_dir)
|
|
303
279
|
except OSError as exc:
|
|
304
|
-
|
|
280
|
+
logger.warning(f"Change back to previous directory failed: {exc}")
|
|
305
281
|
|
|
306
282
|
@property
|
|
307
283
|
def path(self):
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
This module manages files that have a counter in their filename.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from __future__ import annotations
|
|
6
|
-
|
|
7
5
|
__all__ = [
|
|
8
6
|
"counter_exists",
|
|
9
7
|
"counter_filename",
|
|
@@ -11,12 +9,10 @@ __all__ = [
|
|
|
11
9
|
"new_counter",
|
|
12
10
|
]
|
|
13
11
|
|
|
14
|
-
import logging
|
|
15
12
|
from pathlib import Path
|
|
16
13
|
|
|
17
14
|
from egse.config import find_files
|
|
18
|
-
|
|
19
|
-
_LOGGER = logging.getLogger(__name__)
|
|
15
|
+
from egse.log import logger
|
|
20
16
|
|
|
21
17
|
|
|
22
18
|
def counter_filename(location: Path, filename: Path | str) -> Path:
|
|
@@ -133,7 +129,7 @@ def get_next_counter(filename: Path) -> int:
|
|
|
133
129
|
return counter
|
|
134
130
|
|
|
135
131
|
|
|
136
|
-
def determine_counter_from_dir_list(location: str, pattern: str, index: int = -1) -> int:
|
|
132
|
+
def determine_counter_from_dir_list(location: Path | str, pattern: str, index: int = -1) -> int:
|
|
137
133
|
"""
|
|
138
134
|
Determine counter for a new file at the given location and with the given pattern.
|
|
139
135
|
The next counter is determined from the sorted list of files that match the given pattern.
|
|
@@ -170,9 +166,9 @@ def determine_counter_from_dir_list(location: str, pattern: str, index: int = -1
|
|
|
170
166
|
# <anything here>_counter>.<extension>
|
|
171
167
|
|
|
172
168
|
counter = int(parts[index].split(".")[0]) + 1
|
|
173
|
-
|
|
169
|
+
logger.debug(f"{counter = }")
|
|
174
170
|
return counter
|
|
175
171
|
|
|
176
172
|
except ValueError:
|
|
177
|
-
|
|
173
|
+
logger.warning("ValueError", exc_info=True)
|
|
178
174
|
return 1
|
|
@@ -17,8 +17,7 @@ import rich
|
|
|
17
17
|
|
|
18
18
|
from egse.settings import Settings
|
|
19
19
|
from egse.system import get_caller_info
|
|
20
|
-
|
|
21
|
-
_LOGGER = logging.getLogger(__name__)
|
|
20
|
+
from egse.log import logger
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
def static_vars(**kwargs):
|
|
@@ -161,14 +160,14 @@ def average_time(*, name: str = "average_time", level: int = logging.INFO, preci
|
|
|
161
160
|
def _report_average_time():
|
|
162
161
|
if func._call_count:
|
|
163
162
|
average_time = func._run_time / func._call_count
|
|
164
|
-
|
|
163
|
+
logger.log(
|
|
165
164
|
level,
|
|
166
165
|
f"{name}: "
|
|
167
166
|
f"average runtime of {func.__name__!r} is {average_time:.{precision}f}s, "
|
|
168
167
|
f"#calls = {func._call_count}.",
|
|
169
168
|
)
|
|
170
169
|
else:
|
|
171
|
-
|
|
170
|
+
logger.log(level, f"{name}: function {func.__name__!r} was never called.")
|
|
172
171
|
|
|
173
172
|
return func._run_time, func._call_count
|
|
174
173
|
|
|
@@ -210,7 +209,7 @@ def timer(*, name: str = "timer", level: int = logging.INFO, precision: int = 4)
|
|
|
210
209
|
value = func(*args, **kwargs)
|
|
211
210
|
end_time = time.perf_counter()
|
|
212
211
|
run_time = end_time - start_time
|
|
213
|
-
|
|
212
|
+
logger.log(level, f"{name}: Finished {func.__name__!r} in {run_time:.{precision}f} secs")
|
|
214
213
|
return value
|
|
215
214
|
|
|
216
215
|
return wrapper_timer
|
|
@@ -235,7 +234,7 @@ def async_timer(*, name: str = "timer", level: int = logging.INFO, precision: in
|
|
|
235
234
|
value = await func(*args, **kwargs)
|
|
236
235
|
end_time = time.perf_counter()
|
|
237
236
|
run_time = end_time - start_time
|
|
238
|
-
|
|
237
|
+
logger.log(level, f"{name}: Finished {func.__name__!r} in {run_time:.{precision}f} secs")
|
|
239
238
|
return value
|
|
240
239
|
|
|
241
240
|
return wrapper_timer
|
|
@@ -307,9 +306,9 @@ def debug(func):
|
|
|
307
306
|
args_repr = [repr(a) for a in args]
|
|
308
307
|
kwargs_repr = [f"{k}={v!r}" for k, v in kwargs.items()]
|
|
309
308
|
signature = ", ".join(args_repr + kwargs_repr)
|
|
310
|
-
|
|
309
|
+
logger.debug(f"Calling {func.__name__}({signature})")
|
|
311
310
|
value = func(*args, **kwargs)
|
|
312
|
-
|
|
311
|
+
logger.debug(f"{func.__name__!r} returned {value!r}")
|
|
313
312
|
else:
|
|
314
313
|
value = func(*args, **kwargs)
|
|
315
314
|
return value
|
|
@@ -523,7 +522,7 @@ def to_be_implemented(func):
|
|
|
523
522
|
|
|
524
523
|
@functools.wraps(func)
|
|
525
524
|
def wrapper_tbi(*args, **kwargs):
|
|
526
|
-
|
|
525
|
+
logger.warning(f"The function/method {func.__name__} is not yet implemented.")
|
|
527
526
|
return func(*args, **kwargs)
|
|
528
527
|
|
|
529
528
|
return wrapper_tbi
|
|
@@ -736,12 +735,12 @@ def retry_with_exponential_backoff(
|
|
|
736
735
|
while attempt < max_attempts:
|
|
737
736
|
try:
|
|
738
737
|
response = func(*args, **kwargs) # Attempt to call the function
|
|
739
|
-
|
|
738
|
+
logger.info(f"{func.__name__} successfully executed.")
|
|
740
739
|
return response
|
|
741
740
|
except tuple(exceptions) as exc:
|
|
742
741
|
last_exception = exc
|
|
743
742
|
attempt += 1
|
|
744
|
-
|
|
743
|
+
logger.info(
|
|
745
744
|
f"Retry {attempt}: {func.__name__} will be executing again in {wait_time * backoff_factor}s. "
|
|
746
745
|
f"Received a {last_exception!r}."
|
|
747
746
|
)
|
|
@@ -805,7 +804,7 @@ def retry(times: int = 3, wait: float = 10.0, exceptions: List = None) -> Callab
|
|
|
805
804
|
except tuple(exceptions) as exc:
|
|
806
805
|
previous_exception = exc
|
|
807
806
|
if n < times:
|
|
808
|
-
|
|
807
|
+
logger.info(
|
|
809
808
|
f"Retry {n + 1}: {func.__name__} will be executing again in {wait}s. "
|
|
810
809
|
f"Received a {previous_exception!r}."
|
|
811
810
|
)
|
|
@@ -9,14 +9,14 @@ __all__ = [
|
|
|
9
9
|
]
|
|
10
10
|
import logging
|
|
11
11
|
|
|
12
|
-
from egse.system import capture_rich_output
|
|
13
|
-
from egse.system import flatten_dict
|
|
14
12
|
from rich.table import Table
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
from egse.log import logger
|
|
15
|
+
from egse.system import capture_rich_output
|
|
16
|
+
from egse.system import flatten_dict
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def log_differences(dict_1, dict_2):
|
|
19
|
+
def log_differences(dict_1, dict_2, log_level: int = logging.INFO):
|
|
20
20
|
"""
|
|
21
21
|
Takes two flattened dictionaries and compares them. This function only compares those
|
|
22
22
|
keys that are common to both dictionaries. The key-value pairs that are unique to one
|
|
@@ -49,13 +49,14 @@ def log_differences(dict_1, dict_2):
|
|
|
49
49
|
for name in sorted(mismatched):
|
|
50
50
|
table.add_row(name, str(dict_1[name]), str(dict_2[name]))
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
# rich.print(table)
|
|
52
|
+
logger.log(log_level, capture_rich_output(table))
|
|
54
53
|
else:
|
|
55
|
-
|
|
54
|
+
logger.log(
|
|
55
|
+
log_level, f"No differences between the two flattened dictionaries, {len(all_keys)} values compared."
|
|
56
|
+
)
|
|
56
57
|
|
|
57
58
|
|
|
58
|
-
def log_key_differences(dict_1, dict_2):
|
|
59
|
+
def log_key_differences(dict_1, dict_2, log_level: int = logging.INFO):
|
|
59
60
|
"""
|
|
60
61
|
Takes two dictionaries and compares the top-level keys. The differences are logged in a Rich Table at level=INFO.
|
|
61
62
|
Keys that are present on both dictionaries are not logged.
|
|
@@ -81,7 +82,7 @@ def log_key_differences(dict_1, dict_2):
|
|
|
81
82
|
not_in_s1 = s2 - s1
|
|
82
83
|
|
|
83
84
|
if not not_in_s1 and not not_in_s2:
|
|
84
|
-
|
|
85
|
+
logger.log(log_level, "Both dictionaries contains the same keys.")
|
|
85
86
|
|
|
86
87
|
table = Table("Dictionary 1", "Dictionary 2", title="Key differences", title_justify="left")
|
|
87
88
|
|
|
@@ -91,11 +92,11 @@ def log_key_differences(dict_1, dict_2):
|
|
|
91
92
|
for key in not_in_s1:
|
|
92
93
|
table.add_row("", str(key))
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
logger.log(log_level, capture_rich_output(table))
|
|
95
96
|
|
|
96
97
|
|
|
97
98
|
if __name__ == "__main__":
|
|
98
|
-
|
|
99
|
+
logging.basicConfig(level=logging.DEBUG)
|
|
99
100
|
|
|
100
101
|
d1 = {
|
|
101
102
|
"A": 1,
|
|
@@ -115,7 +116,7 @@ if __name__ == "__main__":
|
|
|
115
116
|
"C": 3,
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
log_differences(d1, d2)
|
|
119
|
-
log_key_differences(d1, d2)
|
|
119
|
+
log_differences(d1, d2, logging.DEBUG)
|
|
120
|
+
log_key_differences(d1, d2, logging.DEBUG)
|
|
120
121
|
|
|
121
|
-
log_differences(d1, d3)
|
|
122
|
+
log_differences(d1, d3, logging.DEBUG)
|
|
@@ -63,11 +63,11 @@ __all__ = [
|
|
|
63
63
|
]
|
|
64
64
|
|
|
65
65
|
import contextlib
|
|
66
|
-
import logging
|
|
67
66
|
import os
|
|
68
67
|
import warnings
|
|
69
68
|
from pathlib import Path
|
|
70
69
|
|
|
70
|
+
from egse.log import logger
|
|
71
71
|
from egse.system import all_logging_disabled
|
|
72
72
|
from egse.system import get_caller_info
|
|
73
73
|
from egse.system import ignore_m_warning
|
|
@@ -75,7 +75,6 @@ from egse.system import ignore_m_warning
|
|
|
75
75
|
from rich.console import Console
|
|
76
76
|
|
|
77
77
|
console = Console(width=100)
|
|
78
|
-
logger = logging.getLogger("egse.env")
|
|
79
78
|
|
|
80
79
|
# Every project shall have a PROJECT and a SITE_ID environment variable set. This variable will be used to
|
|
81
80
|
# create the other environment variables that are specific to the project.
|
|
@@ -484,7 +483,7 @@ def get_local_settings_path() -> str or None:
|
|
|
484
483
|
|
|
485
484
|
def has_conf_repo_location() -> bool:
|
|
486
485
|
location = _env.get("CONF_REPO_LOCATION")
|
|
487
|
-
return True if location else False
|
|
486
|
+
return True if location in (None, NoValue) else False
|
|
488
487
|
|
|
489
488
|
|
|
490
489
|
def get_conf_repo_location_env_name() -> str:
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
|
-
import logging
|
|
5
4
|
import pickle
|
|
6
5
|
import queue
|
|
7
6
|
import random
|
|
@@ -13,8 +12,6 @@ import zmq
|
|
|
13
12
|
from egse.system import format_datetime
|
|
14
13
|
from egse.zmq_ser import MessageIdentifier
|
|
15
14
|
|
|
16
|
-
_LOGGER = logging.getLogger(__name__)
|
|
17
|
-
|
|
18
15
|
|
|
19
16
|
def _g_tick(period: float):
|
|
20
17
|
"""Generator for ticks every period [s]."""
|
|
@@ -10,7 +10,6 @@ __all__ = [
|
|
|
10
10
|
]
|
|
11
11
|
import csv
|
|
12
12
|
import datetime
|
|
13
|
-
import logging
|
|
14
13
|
from enum import Enum
|
|
15
14
|
from pathlib import Path
|
|
16
15
|
from typing import Optional
|
|
@@ -19,9 +18,11 @@ from typing import Union
|
|
|
19
18
|
import dateutil.parser as date_parser
|
|
20
19
|
import numpy as np
|
|
21
20
|
import pandas as pd
|
|
21
|
+
|
|
22
22
|
from egse.config import find_files
|
|
23
23
|
from egse.env import get_data_storage_location
|
|
24
24
|
from egse.env import get_site_id
|
|
25
|
+
from egse.log import logger
|
|
25
26
|
from egse.obsid import ObservationIdentifier
|
|
26
27
|
from egse.obsid import obsid_from_storage
|
|
27
28
|
from egse.setup import Setup
|
|
@@ -33,8 +34,6 @@ from egse.system import read_last_lines
|
|
|
33
34
|
from egse.system import str_to_datetime
|
|
34
35
|
from egse.system import time_since_epoch_1958
|
|
35
36
|
|
|
36
|
-
_LOGGER = logging.getLogger(__name__)
|
|
37
|
-
|
|
38
37
|
|
|
39
38
|
class TmDictionaryColumns(str, Enum):
|
|
40
39
|
"""Enumeration of the relevant columns in the TM dictionary spreadsheet.
|
|
@@ -438,7 +437,7 @@ def _get_housekeeping_daily(hk_name: str, data_dir, time_window: int = None, set
|
|
|
438
437
|
# (those will have to be read entirely)
|
|
439
438
|
|
|
440
439
|
else:
|
|
441
|
-
|
|
440
|
+
logger.warning(f"No HK available for {origin} on {start_time.day}/{start_time.month}/{start_time.year}")
|
|
442
441
|
|
|
443
442
|
day = (start_time + datetime.timedelta(days=1)).date() # The day after the first day
|
|
444
443
|
last_day = datetime.date(now.year, now.month, now.day) # Today
|
|
@@ -463,7 +462,7 @@ def _get_housekeeping_daily(hk_name: str, data_dir, time_window: int = None, set
|
|
|
463
462
|
hk_array = np.append(hk_array, row[hk_index])
|
|
464
463
|
|
|
465
464
|
else:
|
|
466
|
-
|
|
465
|
+
logger.warning(f"No HK available for {origin} on {day.day}/{day.month}/{day.year}")
|
|
467
466
|
|
|
468
467
|
day += datetime.timedelta(days=1)
|
|
469
468
|
|
|
@@ -673,7 +672,7 @@ def read_conversion_dict(storage_mnemonic: str, use_site: bool = False, setup: O
|
|
|
673
672
|
|
|
674
673
|
else:
|
|
675
674
|
if len(original_name_col) != len(correct_name_col):
|
|
676
|
-
|
|
675
|
+
logger.error(
|
|
677
676
|
f"Name columns in TM dictionary have different length: "
|
|
678
677
|
f"{len(original_name_col)} != {len(correct_name_col)}"
|
|
679
678
|
)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Configure local logging for the CGSE.
|
|
3
|
+
|
|
4
|
+
I use 'local logging' here because the CGSE also has a Logger server which stores
|
|
5
|
+
all CGSE log messages in a rotated file. That server is part of the `cgse-core` package.
|
|
6
|
+
|
|
7
|
+
Environment variables that affect logging:
|
|
8
|
+
|
|
9
|
+
- LOG_FORMAT: full | FULL
|
|
10
|
+
- LOG_LEVEL: an integer [10, 50] or a level name DEBUG, INFO, WARNING, CRITICAL, ERROR
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"LOG_FORMAT_FULL",
|
|
16
|
+
"logger",
|
|
17
|
+
"root_logger",
|
|
18
|
+
"egse_logger",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
import logging
|
|
22
|
+
import os
|
|
23
|
+
import textwrap
|
|
24
|
+
|
|
25
|
+
import rich
|
|
26
|
+
|
|
27
|
+
LOG_FORMAT_STYLE = "{"
|
|
28
|
+
LOG_FORMAT_FULL = (
|
|
29
|
+
"{asctime:19s}.{msecs:03.0f} : {processName:20s} : {levelname:8s} : {name:^25s} : {lineno:6d} : {filename:20s} : {"
|
|
30
|
+
"message}"
|
|
31
|
+
)
|
|
32
|
+
LOG_FORMAT_CLEAN = "{asctime} [{levelname:>8s}] {message} ({filename}:{lineno:d})"
|
|
33
|
+
|
|
34
|
+
LOG_DATE_FORMAT_FULL = "%Y-%m-%d %H:%M:%S"
|
|
35
|
+
LOG_DATE_FORMAT_CLEAN = "%Y-%m-%d %H:%M:%S"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class EGSEFilter(logging.Filter):
|
|
39
|
+
def filter(self, record):
|
|
40
|
+
return record.name.startswith("egse")
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
egse_filter = EGSEFilter()
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class NonEGSEFilter(logging.Filter):
|
|
47
|
+
def filter(self, record):
|
|
48
|
+
return not record.name.startswith("egse")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
root_filter = NonEGSEFilter()
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_log_level_from_env(env_var: str = "LOG_LEVEL", default: int = logging.INFO):
|
|
55
|
+
"""Read the log level from an environment variable."""
|
|
56
|
+
log_level_str = os.getenv(env_var, default)
|
|
57
|
+
|
|
58
|
+
# Try to convert to integer first (for numeric levels)
|
|
59
|
+
try:
|
|
60
|
+
log_level = int(log_level_str)
|
|
61
|
+
|
|
62
|
+
if 10 <= log_level <= 50:
|
|
63
|
+
return log_level
|
|
64
|
+
else:
|
|
65
|
+
logging.warning(
|
|
66
|
+
f"Log level {log_level} outside standard range (10-50). Using {logging.getLevelName(default)}."
|
|
67
|
+
)
|
|
68
|
+
return default
|
|
69
|
+
|
|
70
|
+
except ValueError:
|
|
71
|
+
log_level_str = log_level_str.upper()
|
|
72
|
+
try:
|
|
73
|
+
return getattr(logging, log_level_str)
|
|
74
|
+
except AttributeError:
|
|
75
|
+
logging.error(f"Invalid LOG_LEVEL '{log_level_str}'. Using {logging.getLevelName(default)}.")
|
|
76
|
+
return default
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
egse_logger = logging.getLogger("egse")
|
|
80
|
+
egse_logger.level = get_log_level_from_env() # We might want to choose another env e.g. CGSE_LOG_LEVEL
|
|
81
|
+
|
|
82
|
+
root_logger = logging.getLogger()
|
|
83
|
+
root_logger.level = get_log_level_from_env()
|
|
84
|
+
|
|
85
|
+
egse_handler = logging.StreamHandler()
|
|
86
|
+
if os.getenv("LOG_FORMAT", "").lower() == "full":
|
|
87
|
+
egse_formatter = logging.Formatter(fmt=LOG_FORMAT_FULL, datefmt=LOG_DATE_FORMAT_FULL, style=LOG_FORMAT_STYLE)
|
|
88
|
+
else:
|
|
89
|
+
egse_formatter = logging.Formatter(fmt=LOG_FORMAT_CLEAN, datefmt=LOG_DATE_FORMAT_CLEAN, style=LOG_FORMAT_STYLE)
|
|
90
|
+
|
|
91
|
+
egse_handler.setFormatter(egse_formatter)
|
|
92
|
+
egse_handler.addFilter(egse_filter)
|
|
93
|
+
|
|
94
|
+
root_logger.addHandler(egse_handler)
|
|
95
|
+
|
|
96
|
+
for handler in root_logger.handlers:
|
|
97
|
+
if handler != egse_handler: # Don't filter our new handler
|
|
98
|
+
handler.addFilter(root_filter)
|
|
99
|
+
|
|
100
|
+
logger = egse_logger
|
|
101
|
+
|
|
102
|
+
if __name__ == "__main__":
|
|
103
|
+
logging.basicConfig(
|
|
104
|
+
level=get_log_level_from_env(), format=LOG_FORMAT_CLEAN, datefmt=LOG_DATE_FORMAT_CLEAN, style="{"
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
root_logger = logging.getLogger()
|
|
108
|
+
|
|
109
|
+
rich.print(
|
|
110
|
+
textwrap.dedent(
|
|
111
|
+
"""
|
|
112
|
+
Example logging statements
|
|
113
|
+
- logging level set to INFO
|
|
114
|
+
- fields are separated by a colon ':'
|
|
115
|
+
- fields: date & time: process name : level : logger name : lineno : filename : message
|
|
116
|
+
"""
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
if os.getenv("LOG_FORMAT_FULL") == "true":
|
|
121
|
+
rich.print(
|
|
122
|
+
f"[b]{'Date & Time':^23s} : {'Process Name':20s} : {'Level':8s} : {'Logger Name':^25s} : {' Line '} : "
|
|
123
|
+
f"{'Filename':20s} : {'Message'}[/]"
|
|
124
|
+
)
|
|
125
|
+
else:
|
|
126
|
+
rich.print(f"[b]{'Date & Time':^19s} [ Level ] Message (filename:lineno)[/]")
|
|
127
|
+
|
|
128
|
+
rich.print("-" * 150)
|
|
129
|
+
for name, level in logging.getLevelNamesMapping().items():
|
|
130
|
+
logger.log(level, f"{name} logging message")
|
|
131
|
+
|
|
132
|
+
root_logger.info("This should come out of the root logger, not the egse logger.")
|
|
@@ -5,8 +5,6 @@ __all__ = [
|
|
|
5
5
|
"get_metrics_repo",
|
|
6
6
|
]
|
|
7
7
|
|
|
8
|
-
import logging
|
|
9
|
-
from dataclasses import dataclass
|
|
10
8
|
from typing import Any
|
|
11
9
|
from typing import Optional
|
|
12
10
|
from typing import Protocol
|
|
@@ -16,6 +14,7 @@ import numpy as np
|
|
|
16
14
|
from prometheus_client import Gauge
|
|
17
15
|
|
|
18
16
|
from egse.hk import TmDictionaryColumns
|
|
17
|
+
from egse.log import logger
|
|
19
18
|
from egse.plugin import load_plugins_fn
|
|
20
19
|
from egse.settings import Settings
|
|
21
20
|
from egse.setup import Setup
|
|
@@ -24,8 +23,6 @@ from egse.setup import load_setup
|
|
|
24
23
|
from egse.system import format_datetime
|
|
25
24
|
from egse.system import str_to_datetime
|
|
26
25
|
|
|
27
|
-
logger = logging.getLogger("egse.metrics")
|
|
28
|
-
|
|
29
26
|
SITE_ID = Settings.load("SITE").ID
|
|
30
27
|
|
|
31
28
|
|
|
@@ -11,7 +11,6 @@ __all__ = [
|
|
|
11
11
|
]
|
|
12
12
|
|
|
13
13
|
import importlib.util
|
|
14
|
-
import logging
|
|
15
14
|
import os
|
|
16
15
|
import sys
|
|
17
16
|
import textwrap
|
|
@@ -20,6 +19,10 @@ import types
|
|
|
20
19
|
from functools import lru_cache
|
|
21
20
|
from pathlib import Path
|
|
22
21
|
|
|
22
|
+
import click
|
|
23
|
+
import rich
|
|
24
|
+
|
|
25
|
+
from egse.log import logger
|
|
23
26
|
from egse.system import type_name
|
|
24
27
|
|
|
25
28
|
if sys.version_info >= (3, 12): # Use the standard library version (Python 3.10+)
|
|
@@ -30,10 +33,7 @@ else:
|
|
|
30
33
|
from importlib_metadata import entry_points as lib_entry_points
|
|
31
34
|
from importlib_metadata import EntryPoint
|
|
32
35
|
|
|
33
|
-
import click
|
|
34
|
-
import rich
|
|
35
36
|
|
|
36
|
-
logger = logging.getLogger(__name__)
|
|
37
37
|
HERE = Path(__file__).parent
|
|
38
38
|
|
|
39
39
|
|
|
@@ -201,7 +201,7 @@ class HierarchicalEntryPoints:
|
|
|
201
201
|
def _discover_groups(self):
|
|
202
202
|
"""Discover all groups that match the base group pattern."""
|
|
203
203
|
all_eps = lib_entry_points()
|
|
204
|
-
#
|
|
204
|
+
# print(f"{type(all_eps) = }")
|
|
205
205
|
|
|
206
206
|
self.groups = {}
|
|
207
207
|
self.flat_entries = []
|
|
@@ -209,14 +209,18 @@ class HierarchicalEntryPoints:
|
|
|
209
209
|
for ep in all_eps:
|
|
210
210
|
# rich.print(f"{type(ep) = }, {dir(ep) = }")
|
|
211
211
|
if ep.group == self.base_group or ep.group.startswith(f"{self.base_group}."):
|
|
212
|
-
|
|
212
|
+
# print(f"{ep.group = }, {ep = }")
|
|
213
|
+
if ep.group in self.groups:
|
|
214
|
+
self.groups[ep.group].append(ep)
|
|
215
|
+
else:
|
|
216
|
+
self.groups[ep.group] = [ep]
|
|
213
217
|
self.flat_entries.append(ep)
|
|
214
218
|
|
|
215
|
-
def get_all_entry_points(self):
|
|
219
|
+
def get_all_entry_points(self) -> list:
|
|
216
220
|
"""Get all entry points as a flat list."""
|
|
217
221
|
return self.flat_entries
|
|
218
222
|
|
|
219
|
-
def get_by_subgroup(self, subgroup=None):
|
|
223
|
+
def get_by_subgroup(self, subgroup=None) -> list:
|
|
220
224
|
"""Get entry points from a specific subgroup."""
|
|
221
225
|
if subgroup is None:
|
|
222
226
|
return self.groups.get(self.base_group, [])
|
|
@@ -224,11 +228,11 @@ class HierarchicalEntryPoints:
|
|
|
224
228
|
full_group = f"{self.base_group}.{subgroup}"
|
|
225
229
|
return self.groups.get(full_group, [])
|
|
226
230
|
|
|
227
|
-
def get_all_groups(self):
|
|
231
|
+
def get_all_groups(self) -> list:
|
|
228
232
|
"""Get all discovered group names."""
|
|
229
233
|
return list(self.groups.keys())
|
|
230
234
|
|
|
231
|
-
def get_by_type(self, entry_type):
|
|
235
|
+
def get_by_type(self, entry_type) -> list:
|
|
232
236
|
"""Get entry points by type (assuming type is the subgroup name)."""
|
|
233
237
|
return self.get_by_subgroup(entry_type)
|
|
234
238
|
|