From 1f2ce747ea5cee1d4ebed88d89037722a3a9aa1a Mon Sep 17 00:00:00 2001 From: Jordao Bragantini Date: Wed, 19 Feb 2025 10:46:51 -0800 Subject: [PATCH 1/3] enabling widget testing and deprecated testing old widgets --- tox.ini | 2 +- ultrack/widgets/_test/test_division_annotation_widget.py | 2 ++ ultrack/widgets/_test/test_hypotheses_viz_widget.py | 2 ++ ultrack/widgets/_test/test_labels_to_edges_widget.py | 4 +++- ultrack/widgets/_test/test_node_annotation_widget.py | 3 +++ ultrack/widgets/_test/test_track_inspection_widget.py | 2 ++ ultrack/widgets/ultrackwidget/_legacy/_test/test_widgets.py | 3 +++ ultrack/widgets/ultrackwidget/data_forms.py | 2 +- 8 files changed, 17 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index e493fcb..f462510 100644 --- a/tox.ini +++ b/tox.ini @@ -36,7 +36,7 @@ deps = pyqt5 git+https://github.com/hadim/pytrackmate.git commands = - pytest -v --color=yes --cov=ultrack --cov-report=xml --durations=15 --ignore=ultrack/widgets + pytest -v --color=yes --cov=ultrack --cov-report=xml --durations=15 [testenv:lint] description = Runs all linting tasks diff --git a/ultrack/widgets/_test/test_division_annotation_widget.py b/ultrack/widgets/_test/test_division_annotation_widget.py index 9688fe9..e1f9caf 100644 --- a/ultrack/widgets/_test/test_division_annotation_widget.py +++ b/ultrack/widgets/_test/test_division_annotation_widget.py @@ -11,6 +11,8 @@ from ultrack.core.database import NodeDB, VarAnnotation from ultrack.widgets import DivisionAnnotationWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + @pytest.mark.parametrize( "config_content", diff --git a/ultrack/widgets/_test/test_hypotheses_viz_widget.py b/ultrack/widgets/_test/test_hypotheses_viz_widget.py index f352bc5..999360a 100644 --- a/ultrack/widgets/_test/test_hypotheses_viz_widget.py +++ b/ultrack/widgets/_test/test_hypotheses_viz_widget.py @@ -12,6 +12,8 @@ from ultrack.core.segmentation.node import Node from ultrack.widgets import HypothesesVizWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + def _is_sorted(nodes: Dict[int, Node]) -> bool: nodes = list(nodes.values()) diff --git a/ultrack/widgets/_test/test_labels_to_edges_widget.py b/ultrack/widgets/_test/test_labels_to_edges_widget.py index 5ed2deb..7159a50 100644 --- a/ultrack/widgets/_test/test_labels_to_edges_widget.py +++ b/ultrack/widgets/_test/test_labels_to_edges_widget.py @@ -2,10 +2,12 @@ import napari import numpy as np +import pytest -from ultrack.utils._test.test_edge import multiple_labels # noqa: F401 from ultrack.widgets import LabelsToContoursWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + def test_labels_to_contours_widget( make_napari_viewer: Callable[[], napari.Viewer], diff --git a/ultrack/widgets/_test/test_node_annotation_widget.py b/ultrack/widgets/_test/test_node_annotation_widget.py index bfed966..dd12570 100644 --- a/ultrack/widgets/_test/test_node_annotation_widget.py +++ b/ultrack/widgets/_test/test_node_annotation_widget.py @@ -2,6 +2,7 @@ from typing import Callable, Tuple import napari +import pytest import zarr from sqlalchemy import create_engine from sqlalchemy.orm import Session @@ -10,6 +11,8 @@ from ultrack.core.database import NodeDB, NodeSegmAnnotation from ultrack.widgets import NodeAnnotationWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + def test_node_annotation_widget( make_napari_viewer: Callable[[], napari.Viewer], diff --git a/ultrack/widgets/_test/test_track_inspection_widget.py b/ultrack/widgets/_test/test_track_inspection_widget.py index f04054b..aff7cca 100644 --- a/ultrack/widgets/_test/test_track_inspection_widget.py +++ b/ultrack/widgets/_test/test_track_inspection_widget.py @@ -9,6 +9,8 @@ from ultrack.config import MainConfig from ultrack.widgets import TrackInspectionWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + @pytest.mark.parametrize( "config_content,timelapse_mock_data", diff --git a/ultrack/widgets/ultrackwidget/_legacy/_test/test_widgets.py b/ultrack/widgets/ultrackwidget/_legacy/_test/test_widgets.py index 285cabd..ef12803 100644 --- a/ultrack/widgets/ultrackwidget/_legacy/_test/test_widgets.py +++ b/ultrack/widgets/ultrackwidget/_legacy/_test/test_widgets.py @@ -4,10 +4,13 @@ import higra as hg import napari +import pytest from ultrack.config import MainConfig from ultrack.widgets.ultrackwidget import UltrackWidget +pytest.skip(reason="DEPRECATED", allow_module_level=True) + def test_ultrack_widget( make_napari_viewer: Callable[[], napari.Viewer], diff --git a/ultrack/widgets/ultrackwidget/data_forms.py b/ultrack/widgets/ultrackwidget/data_forms.py index af87f9c..3d415dd 100644 --- a/ultrack/widgets/ultrackwidget/data_forms.py +++ b/ultrack/widgets/ultrackwidget/data_forms.py @@ -13,7 +13,7 @@ QWidget, ) -from ultrack.config import CFG_ALIAS_TO_ATTR, MainConfig +from ultrack.config.config import CFG_ALIAS_TO_ATTR, MainConfig from ultrack.widgets.ultrackwidget.components.blankable_number_edit import ( BlankableNumberEdit, ) From 9cb8bcf2c2687b4c2dbe7f6d304a47618e3a4e0a Mon Sep 17 00:00:00 2001 From: Jordao Bragantini Date: Wed, 19 Feb 2025 13:08:48 -0800 Subject: [PATCH 2/3] fixed deprecated features from pydantic --- ultrack/api/app.py | 4 ++-- ultrack/core/gt_matching.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ultrack/api/app.py b/ultrack/api/app.py index 09a6194..a5c4c77 100644 --- a/ultrack/api/app.py +++ b/ultrack/api/app.py @@ -130,7 +130,7 @@ async def start_experiment(ws: WebSocket, exp: Experiment) -> None: update_experiment(exp) await app.state.queue.join() await app.state.queue.put(exp) - await ws.send_json(json.loads(exp.json())) + await ws.send_json(json.loads(exp.model_dump_json())) UltrackWebsocketLogger.register_interruption_handler(exp.id) exp.status = ExperimentStatus.INITIALIZING update_experiment(exp) @@ -157,7 +157,7 @@ async def finish_experiment(ws: WebSocket, exp: Experiment) -> Experiment: app.state.queue.task_done() if ws.client_state == WebSocketState.CONNECTED: # send the final state - await ws.send_json(json.loads(exp.json())) + await ws.send_json(json.loads(exp.model_dump_json())) return exp diff --git a/ultrack/core/gt_matching.py b/ultrack/core/gt_matching.py index c4c5c4f..c10ef71 100644 --- a/ultrack/core/gt_matching.py +++ b/ultrack/core/gt_matching.py @@ -291,7 +291,7 @@ def match_to_ground_truth( return df_nodes # optimize configuration - opt_config = config.copy(deep=True) + opt_config = config.model_copy(deep=True) gt_df = df_nodes[df_nodes["gt_track_id"] > 0] if len(gt_df) == 0: From a00b2a606c17bae9cc1a878d54ba680803987429 Mon Sep 17 00:00:00 2001 From: Jordao Bragantini Date: Wed, 19 Feb 2025 13:37:22 -0800 Subject: [PATCH 3/3] another missing pydantic v2 update --- ultrack/api/utils/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ultrack/api/utils/api.py b/ultrack/api/utils/api.py index 9e13bed..b4f32c6 100644 --- a/ultrack/api/utils/api.py +++ b/ultrack/api/utils/api.py @@ -209,7 +209,7 @@ async def run_thread(): experiment.err_log = _mimic_carriage_return(self.stderr.getvalue()) if websocket.state == WebSocketState.DISCONNECTED: return False - await websocket.send_json(json.loads(experiment.json())) + await websocket.send_json(json.loads(experiment.model_dump_json())) return True def between_callback(stop_logger_event: threading.Event):