leaf-framework 0.10.2__tar.gz → 0.10.4__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.
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/PKG-INFO +1 -1
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/registry/registry.py +9 -4
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/utils.py +6 -1
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/pyproject.toml +1 -1
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/LICENSE +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/README.md +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/core_adapters/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/core_adapters/continuous_experiment_adapter.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/core_adapters/discrete_experiment_adapter.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/core_adapters/upload_adapter.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/equipment_adapter.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/config/configuration.yaml +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/data/marketplace.yaml +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/error_handler/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/error_handler/error_holder.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/error_handler/exceptions.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/measurement_handler/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/measurement_handler/handler.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/measurement_handler/measurements.yaml +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/measurement_handler/terms.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/.gitkeep +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/ble_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/db_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/event_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/external_api_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/external_event_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/file_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/http_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/modbus_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/mqtt_external_event_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/mqtt_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/opc_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/polling_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/simple_watcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/carbon_dioxide.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/dissolved_oxygen.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/fluorescence.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/measurement_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/optical_density.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/ph.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/temperature.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/file.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/keydb.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/mqtt.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/output_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/sql.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/topic_store.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/control.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/error.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/external_event_phase.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/initialisation.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/measure.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/phase.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/start.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/stop.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/continous_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/discrete_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/external_event_process.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/process_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/upload_module.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/abstract_leaf.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/equipment_actions.yaml +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/equipment_data.yaml +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/metadata.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/py.typed +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/register/topic_utilities.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/registry/discovery.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/registry/loader.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/registry/utils.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/start.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/adapter_ui_extension.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/components/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/components/header.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/constants.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/desktop_launcher.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/images/icon.icns +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/images/icon.ico +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/images/icon.svg +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/interface.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/markdown/configuration_help.md +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/markdown/documentation_main.md +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/markdown/documentation_protips.md +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/scripts.js +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/styles.css +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/adapters.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/configuration.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/documentation.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/logs.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/ui/tabs/monitoring.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/utility/config_utils.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/utility/logger/__init__.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/utility/logger/logger_utils.py +0 -0
- {leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/utility/running_utilities.py +0 -0
|
@@ -69,12 +69,17 @@ def discover_from_config(config: dict[str, Any], external_path: str = None) -> N
|
|
|
69
69
|
"""
|
|
70
70
|
from leaf.registry import discovery
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
# `.get(key, default)` only falls back when the key is absent -- a YAML
|
|
73
|
+
# section present but left empty (e.g. "OUTPUTS:" with nothing under it)
|
|
74
|
+
# parses to None, not the default, so that must be caught too.
|
|
75
|
+
outputs = config.get("OUTPUTS") or []
|
|
76
|
+
equipment_instances = config.get("EQUIPMENT_INSTANCES") or []
|
|
77
|
+
|
|
78
|
+
output_codes = _collect_output_codes(outputs)
|
|
79
|
+
equipment_codes = {instance["equipment"]["adapter"].lower() for instance in equipment_instances}
|
|
75
80
|
external_input_codes = {
|
|
76
81
|
instance["equipment"]["external_input"]["plugin"].lower()
|
|
77
|
-
for instance in
|
|
82
|
+
for instance in equipment_instances
|
|
78
83
|
if "external_input" in instance["equipment"]
|
|
79
84
|
}
|
|
80
85
|
|
|
@@ -51,8 +51,13 @@ def install_adapter(adapter: dict[Any, Any]) -> None:
|
|
|
51
51
|
# Show "installing" notification
|
|
52
52
|
ui.notify(f"Installing {adapter_name}... This may take a moment.", type="info", position="top", timeout=3000)
|
|
53
53
|
|
|
54
|
+
# --force-reinstall so a re-install always re-clones and re-checks the
|
|
55
|
+
# repo's default branch HEAD -- these adapters' pyproject.toml versions
|
|
56
|
+
# don't get bumped per commit, so a plain `pip install` would see the
|
|
57
|
+
# already-installed version as satisfying the requirement and skip
|
|
58
|
+
# fetching the newer commit entirely.
|
|
54
59
|
result = subprocess.run(
|
|
55
|
-
[sys.executable, "-m", "pip", "install", f"git+{repository}"],
|
|
60
|
+
[sys.executable, "-m", "pip", "install", "--upgrade", "--force-reinstall", f"git+{repository}"],
|
|
56
61
|
stdout=subprocess.PIPE,
|
|
57
62
|
stderr=subprocess.PIPE,
|
|
58
63
|
text=True,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/adapters/core_adapters/upload_adapter.py
RENAMED
|
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
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/external_api_watcher.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/external_event_watcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/modbus_watcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/polling_watcher.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/input_modules/simple_watcher.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/__init__.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/carbon_dioxide.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/dissolved_oxygen.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/fluorescence.py
RENAMED
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/optical_density.py
RENAMED
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/measurement_modules/temperature.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/output_modules/output_module.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/external_event_phase.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/phase_modules/initialisation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/continous_module.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/discrete_module.py
RENAMED
|
File without changes
|
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/process_module.py
RENAMED
|
File without changes
|
{leaf_framework-0.10.2 → leaf_framework-0.10.4}/leaf/modules/process_modules/upload_module.py
RENAMED
|
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
|