Coverage report: 96%

Files Functions Classes

coverage.py v7.15.0, created at 2026-07-03 15:51 +0000

File function   statements missing excluded   coverage
main/__init__.py (no function)   0 0 0   100%
main/components/circular_progress_bar.py CircularProgress.__init__   4 0 0   100%
main/components/circular_progress_bar.py CircularProgress.setValue   2 0 0   100%
main/components/circular_progress_bar.py CircularProgress.setColor   4 0 0   100%
main/components/circular_progress_bar.py CircularProgress.sizeHint   1 0 0   100%
main/components/circular_progress_bar.py CircularProgress.paintEvent   23 0 0   100%
main/components/circular_progress_bar.py (no function)   9 0 0   100%
main/components/collapsible_info_frame.py CollapsibleInfoFrame.__init__   23 0 0   100%
main/components/collapsible_info_frame.py CollapsibleInfoFrame.toggle_content   2 2 0   0%
main/components/collapsible_info_frame.py CollapsibleInfoFrame._translate_ui   2 0 0   100%
main/components/collapsible_info_frame.py (no function)   6 0 0   100%
main/components/collapsible_patient_frame.py ClickableFrame.mousePressEvent   2 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame.__init__   22 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._apply_style   5 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._build_ui   32 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._populate_content   53 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._add_pet4d_json_display   15 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._update_pet4d_json_display   16 1 0   94%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._on_header_clicked   3 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._toggle_expand   5 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._save_patient   8 0 0   100%
main/components/collapsible_patient_frame.py CollapsiblePatientFrame._translate_ui   7 0 0   100%
main/components/collapsible_patient_frame.py (no function)   19 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.__init__   9 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.setup_crosshairs   6 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.mouseMoveEvent   8 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.wheelEvent   3 3 0   0%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.mousePressEvent   7 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.update_crosshairs   8 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.set_crosshair_position   8 0 0   100%
main/components/crosshair_graphic_view.py CrosshairGraphicsView.leaveEvent   3 0 0   100%
main/components/crosshair_graphic_view.py (no function)   14 0 0   100%
main/components/file_role_dialog.py FileRoleDialog.__init__   98 0 0   100%
main/components/file_role_dialog.py FileRoleDialog.filter_subjects   4 0 0   100%
main/components/file_role_dialog.py FileRoleDialog.get_selections   16 2 0   88%
main/components/file_role_dialog.py FileRoleDialog.get_relative_path   18 0 0   100%
main/components/file_role_dialog.py FileRoleDialog._find_patient_dirs   9 0 0   100%
main/components/file_role_dialog.py FileRoleDialog.first_level_toggled   8 0 0   100%
main/components/file_role_dialog.py FileRoleDialog.update_ok_button   11 1 0   91%
main/components/file_role_dialog.py (no function)   12 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.__init__   33 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.open_tree_dialog   5 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.clear_selected_files   6 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.set_selected_files   13 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.get_selected_files   1 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget.set_processing_mode   5 0 0   100%
main/components/file_selector_widget.py FileSelectorWidget._translate_ui   4 0 0   100%
main/components/file_selector_widget.py (no function)   14 0 0   100%
main/components/folder_card.py FolderCard.__init__   10 0 0   100%
main/components/folder_card.py FolderCard._setup_ui   28 0 0   100%
main/components/folder_card.py FolderCard.add_files   11 1 0   91%
main/components/folder_card.py FolderCard.start_pulse_animation   16 0 0   100%
main/components/folder_card.py FolderCard.reset_state   11 0 0   100%
main/components/folder_card.py FolderCard.show_files_dialog   41 0 0   100%
main/components/folder_card.py FolderCard.check_new_files   9 1 0   89%
main/components/folder_card.py FolderCard._list_all_files   8 0 0   100%
main/components/folder_card.py FolderCard.set_finished_state   11 11 0   0%
main/components/folder_card.py (no function)   15 0 0   100%
main/components/info_label.py InfoLabel.__init__   8 0 0   100%
main/components/info_label.py InfoLabel.enterEvent   2 2 0   0%
main/components/info_label.py (no function)   5 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog.__init__   14 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog.get_files   4 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._build_ui   54 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._populate_files   41 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._populate_file_list   8 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._update_info_label   5 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._apply_filters   31 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._connect_signals   16 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._connect_signals.on_no_flag_toggled   2 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._connect_signals.on_with_flag_toggled   2 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._reset_filters   7 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._select_all_visible   4 0 0   100%
main/components/nifti_file_dialog.py NiftiFileDialog._accept   36 1 0   97%
main/components/nifti_file_dialog.py NiftiFileDialog._apply_forced_filters   15 2 0   87%
main/components/nifti_file_dialog.py NiftiFileDialog._apply_forced_filters.safe_set_combo_value   8 2 0   75%
main/components/nifti_file_dialog.py (no function)   21 0 0   100%
main/controller.py Controller.__init__   26 0 0   100%
main/controller.py Controller._show_current_page   3 0 0   100%
main/controller.py Controller.go_to_next_page   5 0 0   100%
main/controller.py Controller.go_to_previous_page   5 0 0   100%
main/controller.py Controller.return_to_import   6 0 0   100%
main/controller.py Controller.update_buttons_state   2 0 0   100%
main/controller.py Controller.create_buttons   5 0 0   100%
main/controller.py Controller.start   1 0 0   100%
main/controller.py Controller.open_nifti_viewer   2 0 0   100%
main/controller.py Controller.set_language   4 0 0   100%
main/controller.py Controller.save_language   1 0 0   100%
main/controller.py (no function)   28 0 0   100%
main/logger.py CompressedRotatingFileHandler.__init__   5 0 0   100%
main/logger.py CompressedRotatingFileHandler.shouldRollover   8 1 0   88%
main/logger.py CompressedRotatingFileHandler.doRollover   15 2 0   87%
main/logger.py setup_logger   20 0 0   100%
main/logger.py get_logger   1 0 0   100%
main/logger.py set_log_level   1 0 0   100%
main/logger.py (no function)   16 0 0   100%
main/main.py (no function)   21 21 0   0%
main/page.py Page._setup_ui   1 1 0   0%
main/page.py Page.is_ready_to_advance   1 1 0   0%
main/page.py Page.is_ready_to_go_back   1 1 0   0%
main/page.py Page.reset_page   1 1 0   0%
main/page.py Page.on_enter   1 1 0   0%
main/page.py Page.next   1 1 0   0%
main/page.py Page.back   1 1 0   0%
main/page.py Page._translate_ui   1 1 0   0%
main/page.py (no function)   10 0 0   100%
main/threads/dl_worker.py DlWorker.__init__   32 3 0   91%
main/threads/dl_worker.py DlWorker.update_progress   8 0 0   100%
main/threads/dl_worker.py DlWorker.start   9 0 0   100%
main/threads/dl_worker.py DlWorker.process_single_file   7 0 0   100%
main/threads/dl_worker.py DlWorker.run_synthstrip   15 1 0   93%
main/threads/dl_worker.py DlWorker.on_synthstrip_finished   13 0 0   100%
main/threads/dl_worker.py DlWorker.run_coregistration   13 13 0   0%
main/threads/dl_worker.py DlWorker.on_coregistration_finished   13 7 0   46%
main/threads/dl_worker.py DlWorker.run_reorientation   20 20 0   0%
main/threads/dl_worker.py DlWorker.on_reorientation_finished   13 13 0   0%
main/threads/dl_worker.py DlWorker.run_preprocess   12 12 0   0%
main/threads/dl_worker.py DlWorker.on_preprocess_finished   13 13 0   0%
main/threads/dl_worker.py DlWorker.run_deep_learning   10 10 0   0%
main/threads/dl_worker.py DlWorker.on_dl_finished   13 13 0   0%
main/threads/dl_worker.py DlWorker.run_postprocess   10 10 0   0%
main/threads/dl_worker.py DlWorker.on_postprocess_finished   17 7 0   59%
main/threads/dl_worker.py DlWorker.cancel   12 0 0   100%
main/threads/dl_worker.py DlWorker.on_stdout   8 2 0   75%
main/threads/dl_worker.py DlWorker.on_stderr   8 2 0   75%
main/threads/dl_worker.py DlWorker.on_error   6 2 0   67%
main/threads/dl_worker.py (no function)   35 0 0   100%
main/threads/import_thread.py ImportThread.__init__   7 0 0   100%
main/threads/import_thread.py ImportThread.run   116 15 0   87%
main/threads/import_thread.py ImportThread._handle_import   52 9 0   83%
main/threads/import_thread.py ImportThread._are_dicom_series_of_same_patient   38 4 0   89%
main/threads/import_thread.py ImportThread._subfolders_look_like_different_patients   7 0 0   100%
main/threads/import_thread.py ImportThread._process_single_patient_folder   49 14 0   71%
main/threads/import_thread.py ImportThread._convert_dicom_folder_to_nifti   37 9 0   76%
main/threads/import_thread.py ImportThread._convert_to_bids_structure   62 9 0   85%
main/threads/import_thread.py ImportThread._is_bids_folder   14 2 0   86%
main/threads/import_thread.py ImportThread._get_next_sub_id   4 0 0   100%
main/threads/import_thread.py ImportThread._rename_bids_files   19 11 0   42%
main/threads/import_thread.py ImportThread._is_dicom_file   5 0 0   100%
main/threads/import_thread.py ImportThread._is_nifti_file   1 0 0   100%
main/threads/import_thread.py ImportThread._subfolders_belong_to_single_subject   49 12 0   76%
main/threads/import_thread.py ImportThread.cancel   6 0 0   100%
main/threads/import_thread.py (no function)   33 0 0   100%
main/threads/nifti_utils_threads.py SaveNiftiThread.__init__   7 0 0   100%
main/threads/nifti_utils_threads.py SaveNiftiThread.run   12 0 0   100%
main/threads/nifti_utils_threads.py ImageLoadThread.__init__   3 0 0   100%
main/threads/nifti_utils_threads.py ImageLoadThread.run   22 1 0   95%
main/threads/nifti_utils_threads.py ImageLoadThread.normalize_data_matplotlib_style   9 0 0   100%
main/threads/nifti_utils_threads.py ImageLoadThread.normalize_data_matplotlib_style.normalize_volume   7 0 0   100%
main/threads/nifti_utils_threads.py (no function)   23 0 0   100%
main/threads/skull_strip_thread.py SkullStripThread.__init__   9 0 0   100%
main/threads/skull_strip_thread.py SkullStripThread.cancel   7 0 0   100%
main/threads/skull_strip_thread.py SkullStripThread.run   92 9 0   90%
main/threads/skull_strip_thread.py (no function)   22 0 0   100%
main/threads/utils_threads.py CopyDeleteThread.__init__   6 0 0   100%
main/threads/utils_threads.py CopyDeleteThread.run   17 0 0   100%
main/threads/utils_threads.py (no function)   10 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.__init__   12 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage._setup_ui   63 2 0   97%
main/ui/dl_execution_page.py DlExecutionPage.on_enter   6 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.start_processing   22 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.update_progress   1 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.add_log_message   11 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.update_file_status   5 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.cancel_processing   3 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.processing_finished   20 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.reset_processing_state   10 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.back   10 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.next   1 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.is_ready_to_advance   1 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage.is_ready_to_go_back   1 0 0   100%
main/ui/dl_execution_page.py DlExecutionPage._translate_ui   14 1 0   93%
main/ui/dl_execution_page.py (no function)   28 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.__init__   8 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage._setup_ui   12 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.has_existing_segmentation   15 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.back   4 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.next   8 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.on_enter   1 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.is_ready_to_advance   1 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.is_ready_to_go_back   1 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage.reset_page   4 0 0   100%
main/ui/dl_selection_page.py DlNiftiSelectionPage._translate_ui   1 0 0   100%
main/ui/dl_selection_page.py (no function)   20 0 0   100%
main/ui/import_page.py ImportPage.__init__   20 0 0   100%
main/ui/import_page.py ImportPage.is_ready_to_advance   2 0 0   100%
main/ui/import_page.py ImportPage.is_ready_to_go_back   1 0 0   100%
main/ui/import_page.py ImportPage.next   6 0 0   100%
main/ui/import_page.py ImportPage.back   1 0 0   100%
main/ui/import_page.py ImportPage.dragEnterEvent   2 0 0   100%
main/ui/import_page.py ImportPage.dropEvent   4 0 0   100%
main/ui/import_page.py ImportPage.mousePressEvent   2 0 0   100%
main/ui/import_page.py ImportPage.open_folder_dialog   11 4 0   64%
main/ui/import_page.py ImportPage._handle_import   9 0 0   100%
main/ui/import_page.py ImportPage.on_import_error   8 0 0   100%
main/ui/import_page.py ImportPage.on_import_finished   10 2 0   80%
main/ui/import_page.py ImportPage.on_import_canceled   8 0 0   100%
main/ui/import_page.py ImportPage.closeEvent   8 0 0   100%
main/ui/import_page.py ImportPage._translate_ui   1 0 0   100%
main/ui/import_page.py (no function)   26 0 0   100%
main/ui/main_window.py MainWindow.__init__   12 0 0   100%
main/ui/main_window.py MainWindow._setup_ui   7 0 0   100%
main/ui/main_window.py MainWindow._setup_splitter   2 0 0   100%
main/ui/main_window.py MainWindow._setup_footer   8 0 0   100%
main/ui/main_window.py MainWindow._setup_menus   39 1 0   97%
main/ui/main_window.py MainWindow._add_language_option   7 0 0   100%
main/ui/main_window.py MainWindow.set_language   3 0 0   100%
main/ui/main_window.py MainWindow.clear_folder   14 0 0   100%
main/ui/main_window.py MainWindow.set_widgets   11 3 0   73%
main/ui/main_window.py MainWindow.copydelete_thread_error   6 0 0   100%
main/ui/main_window.py MainWindow.copydelete_thread_success   8 0 0   100%
main/ui/main_window.py MainWindow.closeEvent   16 4 0   75%
main/ui/main_window.py MainWindow.export_file_info   1 0 0   100%
main/ui/main_window.py MainWindow.new_thread   4 0 0   100%
main/ui/main_window.py MainWindow.toggle_debug_log   4 0 0   100%
main/ui/main_window.py MainWindow._translate_ui   15 0 0   100%
main/ui/main_window.py (no function)   26 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.__init__   22 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.has_existing_mask   24 4 0   83%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.is_ready_to_advance   1 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.is_ready_to_go_back   1 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.on_enter   1 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.open_nifti_viewer   5 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.back   4 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage.reset_page   3 0 0   100%
main/ui/nifti_mask_selection_page.py MaskNiftiSelectionPage._translate_ui   2 0 0   100%
main/ui/nifti_mask_selection_page.py (no function)   17 0 0   100%
main/ui/nifti_viewer.py compute_mask_numba_mm   13 13 0   0%
main/ui/nifti_viewer.py apply_overlay_numba   9 9 0   0%
main/ui/nifti_viewer.py _slice   12 1 0   92%
main/ui/nifti_viewer.py NiftiViewer.__init__   76 1 0   99%
main/ui/nifti_viewer.py NiftiViewer.init_ui   17 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.create_control_panel   336 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.format_info_text   17 4 0   76%
main/ui/nifti_viewer.py NiftiViewer.create_image_display   49 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.setup_crosshairs   2 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.setup_connections   22 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.show_workspace_nii_dialog   5 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.open_file   21 3 0   86%
main/ui/nifti_viewer.py NiftiViewer.on_file_loaded   57 2 0   96%
main/ui/nifti_viewer.py NiftiViewer.on_load_error   7 7 0   0%
main/ui/nifti_viewer.py NiftiViewer.on_load_canceled   2 2 0   0%
main/ui/nifti_viewer.py NiftiViewer.initialize_display   22 1 0   95%
main/ui/nifti_viewer.py NiftiViewer.toggle_overlay   11 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.update_overlay_alpha   3 3 0   0%
main/ui/nifti_viewer.py NiftiViewer.update_overlay_threshold   6 1 0   83%
main/ui/nifti_viewer.py NiftiViewer.update_overlay_settings   5 1 0   80%
main/ui/nifti_viewer.py NiftiViewer.slice_changed   12 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.time_changed   5 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.toggle_time_controls   6 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.colormap_changed   3 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.handle_click_coordinates   15 15 0   0%
main/ui/nifti_viewer.py NiftiViewer.screen_to_image_coords   20 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.update_coordinates   13 5 0   62%
main/ui/nifti_viewer.py NiftiViewer.update_coordinate_displays   14 3 0   79%
main/ui/nifti_viewer.py NiftiViewer.update_cross_view_lines   17 1 0   94%
main/ui/nifti_viewer.py NiftiViewer.update_display   45 5 0   89%
main/ui/nifti_viewer.py NiftiViewer.setup_time_series_plot   10 1 0   90%
main/ui/nifti_viewer.py NiftiViewer.hide_time_series_plot   9 6 0   33%
main/ui/nifti_viewer.py NiftiViewer.update_time_series_plot   36 14 0   61%
main/ui/nifti_viewer.py NiftiViewer.apply_colormap_matplotlib   7 3 0   57%
main/ui/nifti_viewer.py NiftiViewer.update_all_displays   10 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.create_overlay_composite   15 3 0   80%
main/ui/nifti_viewer.py NiftiViewer.resizeEvent   2 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.fit_all_views   3 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.update_automaticROI   3 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.automaticROI_clicked   20 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.toggle_automaticROI   12 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.automaticROI_drawing   13 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.ROI_save   63 17 0   73%
main/ui/nifti_viewer.py NiftiViewer._on_ROI_saved   2 2 0   0%
main/ui/nifti_viewer.py NiftiViewer._on_ROI_saving_error   2 2 0   0%
main/ui/nifti_viewer.py NiftiViewer._get_next_file_id   13 5 0   62%
main/ui/nifti_viewer.py NiftiViewer.addOrigin_clicked   8 8 0   0%
main/ui/nifti_viewer.py NiftiViewer.toggle_incrementalROI   10 2 0   80%
main/ui/nifti_viewer.py NiftiViewer.closeEvent   11 2 0   82%
main/ui/nifti_viewer.py NiftiViewer.reset_overlay   12 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.resetROI   16 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.pad_volume_to_shape   8 0 0   100%
main/ui/nifti_viewer.py NiftiViewer.handle_scroll   31 31 0   0%
main/ui/nifti_viewer.py NiftiViewer._translate_ui   38 7 0   82%
main/ui/nifti_viewer.py (no function)   83 3 0   96%
main/ui/patient_selection_page.py PatientSelectionPage.__init__   36 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._update_column_count   6 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.resizeEvent   2 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._reload_patient_grid   9 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.on_enter   7 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.is_ready_to_advance   1 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.is_ready_to_go_back   1 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.next   30 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.back   4 1 0   75%
main/ui/patient_selection_page.py PatientSelectionPage._load_patients   34 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._select_all_patients   7 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._deselect_all_patients   7 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._find_patient_dirs   10 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._toggle_patient   7 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.get_selected_patients   1 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage.reset_page   9 0 0   100%
main/ui/patient_selection_page.py PatientSelectionPage._translate_ui   4 0 0   100%
main/ui/patient_selection_page.py (no function)   29 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.__init__   28 3 0   89%
main/ui/pipeline_execution_page.py PipelineExecutionPage._find_latest_config   20 1 0   95%
main/ui/pipeline_execution_page.py PipelineExecutionPage._setup_ui   44 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._setup_folder_cards   8 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._start_pipeline   16 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_process_finished   3 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_process_error   3 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_stdout_ready   6 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_stderr_ready   6 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._process_pipeline_output   18 3 0   83%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_pipeline_finished   10 1 0   90%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_pipeline_error   8 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._update_progress   21 14 0   33%
main/ui/pipeline_execution_page.py PipelineExecutionPage._update_current_operation   11 1 0   91%
main/ui/pipeline_execution_page.py PipelineExecutionPage._extract_patient_id_from_log   3 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._log_message   6 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.check_new_files   2 1 0   50%
main/ui/pipeline_execution_page.py PipelineExecutionPage._on_stop_clicked   12 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._return_to_import   4 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.on_enter   17 6 0   65%
main/ui/pipeline_execution_page.py PipelineExecutionPage.back   5 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.next   11 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.is_ready_to_go_back   1 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.is_ready_to_advance   1 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.get_sub_list   3 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage.reset_page   17 5 0   71%
main/ui/pipeline_execution_page.py PipelineExecutionPage.__del__   3 0 0   100%
main/ui/pipeline_execution_page.py PipelineExecutionPage._translate_ui   4 0 0   100%
main/ui/pipeline_execution_page.py (no function)   42 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.__init__   12 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._setup_ui   32 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._create_summary_widget   18 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._create_stat_pill   19 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._check_patient_requirements   36 2 0   94%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._load_patients   15 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._create_patient_frame   64 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._update_summary   3 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._select_all_eligible_patients   7 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._deselect_all_patients   7 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._refresh_patient_status   16 4 0   75%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._toggle_patient   7 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._find_patient_dirs   12 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._update_column_count   6 6 0   0%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._reload_patient_grid   16 16 0   0%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._build_pipeline_config   61 10 0   84%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._get_next_config_id   16 3 0   81%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.on_enter   1 1 0   0%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.is_ready_to_advance   1 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.is_ready_to_go_back   1 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.next   8 2 0   75%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.back   4 1 0   75%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.get_selected_patients   1 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.get_eligible_patients   1 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.get_patient_status_summary   4 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.reset_page   10 0 0   100%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage.resizeEvent   26 26 0   0%
main/ui/pipeline_patient_selection_page.py PipelinePatientSelectionPage._translate_ui   9 0 0   100%
main/ui/pipeline_patient_selection_page.py (no function)   41 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage.__init__   12 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage._find_latest_config   20 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage._load_config_from_path   9 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage._load_config   1 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage._setup_ui   40 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage._save_single_patient   3 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage.on_enter   9 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage.next   15 0 0   100%
main/ui/pipeline_review_page.py PipelineReviewPage.back   17 2 0   88%
main/ui/pipeline_review_page.py PipelineReviewPage._translate_ui   3 0 0   100%
main/ui/pipeline_review_page.py (no function)   23 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.__init__   12 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage._setup_ui   57 2 0   96%
main/ui/skull_stripping_page.py SkullStrippingPage._setup_bet_options   68 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.has_existing_skull_strip   8 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.toggle_advanced   3 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.run_bet   24 3 0   88%
main/ui/skull_stripping_page.py SkullStrippingPage.cancel_processing   5 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.set_processing_mode   10 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.on_progress_updated   2 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.on_progress_value_updated   1 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.on_file_started   1 1 0   0%
main/ui/skull_stripping_page.py SkullStrippingPage.on_file_completed   2 2 0   0%
main/ui/skull_stripping_page.py SkullStrippingPage.on_all_completed   14 1 0   93%
main/ui/skull_stripping_page.py SkullStrippingPage.on_worker_finished   6 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.back   8 1 0   88%
main/ui/skull_stripping_page.py SkullStrippingPage.on_enter   1 1 0   0%
main/ui/skull_stripping_page.py SkullStrippingPage.is_ready_to_advance   1 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.is_ready_to_go_back   1 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage.reset_page   22 0 0   100%
main/ui/skull_stripping_page.py SkullStrippingPage._translate_ui   15 0 0   100%
main/ui/skull_stripping_page.py (no function)   32 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage.__init__   53 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage.on_selection   3 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage.is_ready_to_advance   1 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage.is_ready_to_go_back   1 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage.next   16 1 0   94%
main/ui/tool_selection_page.py ToolSelectionPage.back   4 1 0   75%
main/ui/tool_selection_page.py ToolSelectionPage.reset_page   5 0 0   100%
main/ui/tool_selection_page.py ToolSelectionPage._translate_ui   7 0 0   100%
main/ui/tool_selection_page.py (no function)   20 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.__init__   14 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.handle_workspace_click   4 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.handle_double_click   10 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.adjust_tree_columns   6 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.open_tree_context_menu   24 24 0   0%
main/ui/workspace_tree_view.py WorkspaceTreeView._add_workspace_actions   7 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView._add_folder_actions   6 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView._add_file_actions   11 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView._add_multi_file_actions   3 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.add_file_to_workspace   32 25 0   22%
main/ui/workspace_tree_view.py WorkspaceTreeView.open_role_dialog   8 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView._including_json   6 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView.export_files   29 14 0   52%
main/ui/workspace_tree_view.py WorkspaceTreeView.export_files._get_file_filter   7 2 0   71%
main/ui/workspace_tree_view.py WorkspaceTreeView.export_files._get_json_file   9 9 0   0%
main/ui/workspace_tree_view.py WorkspaceTreeView.remove_from_workspace   14 2 0   86%
main/ui/workspace_tree_view.py WorkspaceTreeView._open_in_explorer   10 0 0   100%
main/ui/workspace_tree_view.py WorkspaceTreeView._open_nifti   5 0 0   100%
main/ui/workspace_tree_view.py (no function)   29 0 0   100%
main/utils.py get_bin_path   14 0 0   100%
main/utils.py get_app_dir   10 4 0   60%
main/utils.py resource_path   3 0 0   100%
main/utils.py get_shell_path   15 0 0   100%
main/utils.py setup_fsl_env   6 0 0   100%
main/utils.py get_dl_python_executable   5 5 0   0%
main/utils.py get_script_path   3 0 0   100%
main/utils.py (no function)   14 0 0   100%
tests/__init__.py (no function)   0 0 0   100%
tests/components/test_circular_progress_bar.py TestCircularProgressInitialization.test_initialization_default   4 0 0   100%
tests/components/test_circular_progress_bar.py TestCircularProgressInitialization.test_initialization_custom_color   4 0 0   100%
tests/components/test_circular_progress_bar.py TestCircularProgressInitialization.test_initialization_color_variations   9 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_basic   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_zero   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_hundred   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_negative_clamped   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_over_hundred_clamped   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_extreme_negative   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_extreme_positive   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_sequence   6 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_triggers_update   5 0 0   100%
tests/components/test_circular_progress_bar.py TestSetValue.test_set_value_float_converted_to_int   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_string   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_qcolor   5 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_named   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_rgb_hex   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_triggers_update   5 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_multiple_times   6 0 0   100%
tests/components/test_circular_progress_bar.py TestSetColor.test_set_color_invalid_string   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSizeHint.test_size_hint_with_parent   7 0 0   100%
tests/components/test_circular_progress_bar.py TestSizeHint.test_size_hint_without_parent   4 0 0   100%
tests/components/test_circular_progress_bar.py TestSizeHint.test_size_hint_parent_resized   10 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_called   7 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_creates_painter   8 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_different_values   9 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_different_colors   9 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_small_size   7 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_large_size   7 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_rectangular_shape   7 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_wide_rectangle   7 0 0   100%
tests/components/test_circular_progress_bar.py TestPaintEvent.test_paint_event_tall_rectangle   7 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_very_small_widget   7 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_zero_width   7 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_zero_height   7 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_rapid_value_changes   7 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_rapid_color_changes   9 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_simultaneous_value_and_color_change   8 0 0   100%
tests/components/test_circular_progress_bar.py TestEdgeCases.test_unicode_in_existing_files   5 0 0   100%
tests/components/test_circular_progress_bar.py TestIntegration.test_full_progress_cycle   10 0 0   100%
tests/components/test_circular_progress_bar.py TestIntegration.test_progress_with_color_change   11 0 0   100%
tests/components/test_circular_progress_bar.py TestIntegration.test_multiple_complete_cycles   9 0 0   100%
tests/components/test_circular_progress_bar.py TestIntegration.test_widget_in_parent_container   8 0 0   100%
tests/components/test_circular_progress_bar.py TestRenderingCalculations.test_square_widget_centering   9 0 0   100%
tests/components/test_circular_progress_bar.py TestRenderingCalculations.test_rectangular_widget_centering   9 0 0   100%
tests/components/test_circular_progress_bar.py TestRenderingCalculations.test_pen_width_calculation   9 0 0   100%
tests/components/test_circular_progress_bar.py TestRenderingCalculations.test_font_size_calculation   9 0 0   100%
tests/components/test_circular_progress_bar.py TestValueBoundaries.test_boundary_value_zero   6 0 0   100%
tests/components/test_circular_progress_bar.py TestValueBoundaries.test_boundary_value_hundred   6 0 0   100%
tests/components/test_circular_progress_bar.py TestValueBoundaries.test_all_integer_values   5 0 0   100%
tests/components/test_circular_progress_bar.py TestColorFormats.test_hex_color_3_digits   4 0 0   100%
tests/components/test_circular_progress_bar.py TestColorFormats.test_hex_color_6_digits   4 0 0   100%
tests/components/test_circular_progress_bar.py TestColorFormats.test_named_colors   6 0 0   100%
tests/components/test_circular_progress_bar.py TestColorFormats.test_qcolor_from_rgb   5 0 0   100%
tests/components/test_circular_progress_bar.py TestMemoryAndPerformance.test_no_memory_leak_on_repeated_updates   7 0 0   100%
tests/components/test_circular_progress_bar.py TestMemoryAndPerformance.test_rapid_repaints   8 0 0   100%
tests/components/test_circular_progress_bar.py (no function)   73 0 0   100%
tests/components/test_collapsible_patient_frame.py TestClickableFrame.test_clickable_frame_initialization   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestClickableFrame.test_clickable_frame_emits_signal   6 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCollapsiblePatientFrameInitialization.test_init_locked_single_choice   11 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCollapsiblePatientFrameInitialization.test_init_unlocked_multiple_choice   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCollapsiblePatientFrameInitialization.test_init_with_save_callback   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCollapsiblePatientFrameInitialization.test_workspace_path_assignment   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCollapsiblePatientFrameInitialization.test_category_widgets_initialized_empty   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestUIBuilding.test_header_widgets_created   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestUIBuilding.test_toggle_button_configuration   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestUIBuilding.test_content_frame_created   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestUIBuilding.test_animation_setup   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestStyleApplication.test_locked_style   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestStyleApplication.test_unlocked_style   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestStyleApplication.test_style_changes_after_lock   8 0 0   100%
tests/components/test_collapsible_patient_frame.py TestExpandCollapse.test_initial_state_collapsed   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestExpandCollapse.test_toggle_expand_programmatically   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestExpandCollapse.test_toggle_collapse_programmatically   6 0 0   100%
tests/components/test_collapsible_patient_frame.py TestExpandCollapse.test_header_click_toggles_expansion   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestContentPopulation.test_populate_single_file_locked   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestContentPopulation.test_populate_multiple_files_unlocked   9 0 0   100%
tests/components/test_collapsible_patient_frame.py TestContentPopulation.test_populate_no_files_found   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestContentPopulation.test_populate_saves_button_in_unlocked_mode   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestPET4DJSONDetection.test_pet4d_json_found_locked_mode   10 0 0   100%
tests/components/test_collapsible_patient_frame.py TestPET4DJSONDetection.test_pet4d_json_not_found_locked_mode   8 0 0   100%
tests/components/test_collapsible_patient_frame.py TestPET4DJSONDetection.test_pet4d_json_dynamic_update_unlocked   12 0 0   100%
tests/components/test_collapsible_patient_frame.py TestSaveConfiguration.test_save_patient_calls_callback   11 0 0   100%
tests/components/test_collapsible_patient_frame.py TestSaveConfiguration.test_save_patient_marks_not_needing_revision   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestSaveConfiguration.test_save_patient_locks_frame   8 0 0   100%
tests/components/test_collapsible_patient_frame.py TestSaveConfiguration.test_save_patient_updates_files_from_combos   9 0 0   100%
tests/components/test_collapsible_patient_frame.py TestTranslation.test_translate_ui_called_on_init   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestTranslation.test_language_changed_signal_connected   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestTranslation.test_patient_label_translation   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestTranslation.test_save_button_translation   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_empty_patterns_dict   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_empty_files_dict   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_single_file_in_multiple_choice_mode   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_patient_id_with_special_characters   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_no_save_callback_provided   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestEdgeCases.test_context_without_language_changed   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestFilePatternMatching.test_glob_called_with_correct_patterns   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestFilePatternMatching.test_relative_path_conversion   10 0 0   100%
tests/components/test_collapsible_patient_frame.py TestFilePatternMatching.test_multiple_patterns_per_category   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestFilePatternMatching.test_multiple_patterns_per_category.glob_side_effect   5 1 0   80%
tests/components/test_collapsible_patient_frame.py TestComboBoxBehavior.test_combo_current_index_set_from_files   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestComboBoxBehavior.test_combo_default_to_first_if_no_match   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestComboBoxBehavior.test_combo_minimum_height   6 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAnimationBehavior.test_animation_duration   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAnimationBehavior.test_animation_easing_curve   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAnimationBehavior.test_animation_target_property   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestCategoryLabels.test_category_label_formatting   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestIntegrationScenarios.test_complete_workflow_locked_patient   13 0 0   100%
tests/components/test_collapsible_patient_frame.py TestIntegrationScenarios.test_complete_workflow_locked_patient.glob_side_effect   5 1 0   80%
tests/components/test_collapsible_patient_frame.py TestIntegrationScenarios.test_complete_workflow_unlocked_patient   17 0 0   100%
tests/components/test_collapsible_patient_frame.py TestIntegrationScenarios.test_complete_workflow_unlocked_patient.glob_side_effect   5 1 0   80%
tests/components/test_collapsible_patient_frame.py TestIntegrationScenarios.test_expand_select_save_workflow   11 0 0   100%
tests/components/test_collapsible_patient_frame.py TestMemoryAndCleanup.test_repopulate_content_cleans_old_widgets   8 0 0   100%
tests/components/test_collapsible_patient_frame.py TestMemoryAndCleanup.test_widget_deletion_on_repopulate   7 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAccessibility.test_toggle_button_cursor   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAccessibility.test_toggle_button_checkable   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestAccessibility.test_save_button_minimum_height   5 0 0   100%
tests/components/test_collapsible_patient_frame.py TestVisualEffects.test_drop_shadow_applied   3 0 0   100%
tests/components/test_collapsible_patient_frame.py TestVisualEffects.test_frame_shape   4 0 0   100%
tests/components/test_collapsible_patient_frame.py TestVisualEffects.test_object_name_set   3 0 0   100%
tests/components/test_collapsible_patient_frame.py test_locked_state_by_multiple_choice   3 0 0   100%
tests/components/test_collapsible_patient_frame.py test_arrow_type_by_expansion_state   4 0 0   100%
tests/components/test_collapsible_patient_frame.py test_various_patient_id_formats   4 0 0   100%
tests/components/test_collapsible_patient_frame.py (no function)   124 1 0   99%
tests/components/test_crosshair_graphic_view.py mock_parent_viewer   5 0 0   100%
tests/components/test_crosshair_graphic_view.py graphics_scene   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_initialization_basic   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_initialization_with_parent   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_initialization_different_view_indices   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_mouse_tracking_enabled   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_drag_mode_set   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestCrosshairGraphicsViewInitialization.test_render_hints_set   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetupCrosshairs.test_setup_crosshairs_with_scene   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetupCrosshairs.test_setup_crosshairs_without_scene   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetupCrosshairs.test_setup_crosshairs_color   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetupCrosshairs.test_setup_crosshairs_multiple_calls   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_emits_coordinate_changed   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_updates_crosshairs   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_without_scene   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_without_parent_viewer   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_without_img_data   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_out_of_bounds   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMouseMoveEvent.test_mouse_move_negative_coordinates   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_left_click_calls_handle_click_coordinates   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_right_click_ignored   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_middle_click_ignored   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_click_without_scene   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_click_without_parent_viewer   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_click_without_img_data   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_click_out_of_bounds   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMousePressEvent.test_click_at_scene_edges   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_basic   14 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_different_positions   11 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_without_scene   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_without_setup   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_makes_visible   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestUpdateCrosshairs.test_update_crosshairs_spans_full_scene   11 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_basic   12 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_out_of_bounds   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_without_scene   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_without_setup   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_at_origin   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSetCrosshairPosition.test_set_crosshair_position_at_max   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestLeaveEvent.test_leave_event_calls_update_cross_view_lines   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestLeaveEvent.test_leave_event_without_crosshairs   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestLeaveEvent.test_leave_event_without_parent_viewer   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSignals.test_coordinate_changed_signal_exists   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestSignals.test_coordinate_changed_signal_parameters   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_very_small_scene   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_very_large_scene   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_rectangular_scene   11 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_rapid_mouse_movements   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_rapid_clicks   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_scene_change   12 0 0   100%
tests/components/test_crosshair_graphic_view.py TestEdgeCases.test_coordinate_precision   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestIntegration.test_full_interaction_flow   11 0 0   100%
tests/components/test_crosshair_graphic_view.py TestIntegration.test_multiple_views_interaction   20 0 0   100%
tests/components/test_crosshair_graphic_view.py TestIntegration.test_crosshair_synchronization   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestBoundaryConditions.test_click_at_zero_zero   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestBoundaryConditions.test_click_at_max_coordinates   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestBoundaryConditions.test_click_just_outside_bounds   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestViewIndexHandling.test_different_view_indices_in_signals   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestViewIndexHandling.test_view_idx_persists   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMemoryAndCleanup.test_scene_items_cleanup   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestMemoryAndCleanup.test_multiple_setup_doesnt_leak   6 0 0   100%
tests/components/test_crosshair_graphic_view.py TestRenderHints.test_antialiasing_enabled   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestRenderHints.test_smooth_pixmap_transform_enabled   4 0 0   100%
tests/components/test_crosshair_graphic_view.py TestRenderHints.test_render_hints_persist   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestErrorHandling.test_mapToScene_with_invalid_point   5 0 0   100%
tests/components/test_crosshair_graphic_view.py TestErrorHandling.test_operations_without_initialization   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestStateConsistency.test_crosshair_visible_state_consistency   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestStateConsistency.test_crosshair_position_consistency   9 0 0   100%
tests/components/test_crosshair_graphic_view.py TestDocumentation.test_class_docstring   2 0 0   100%
tests/components/test_crosshair_graphic_view.py TestDocumentation.test_setup_crosshairs_docstring   3 0 0   100%
tests/components/test_crosshair_graphic_view.py TestAccessibility.test_crosshair_color_visible   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestAccessibility.test_crosshair_width_appropriate   8 0 0   100%
tests/components/test_crosshair_graphic_view.py TestPerformance.test_many_coordinate_updates   7 0 0   100%
tests/components/test_crosshair_graphic_view.py TestPerformance.test_signal_emission_performance   10 0 0   100%
tests/components/test_crosshair_graphic_view.py TestPerformance.test_signal_emission_performance.count_signal   1 0 0   100%
tests/components/test_crosshair_graphic_view.py (no function)   101 0 0   100%
tests/components/test_file_role_dialog.py workspace_with_subjects   16 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_initialization_full_dialog   10 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_initialization_with_main_derivatives   6 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_initialization_with_subject   5 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_initialization_with_role   5 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_initialization_partial_params   5 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_ok_button_initially_disabled   3 0 0   100%
tests/components/test_file_role_dialog.py TestFileRoleDialogInitialization.test_window_title_set   3 0 0   100%
tests/components/test_file_role_dialog.py TestFindPatientDirs.test_find_patient_dirs_basic   6 0 0   100%
tests/components/test_file_role_dialog.py TestFindPatientDirs.test_find_patient_dirs_excludes_derivatives   5 0 0   100%
tests/components/test_file_role_dialog.py TestFindPatientDirs.test_find_patient_dirs_empty_workspace   6 0 0   100%
tests/components/test_file_role_dialog.py TestFindPatientDirs.test_find_patient_dirs_nested_subjects   9 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_main_selected   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_derivatives_selected   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_derivatives_shows_extra_frame   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_main_hides_extra_frame   6 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_derivative_type_selection   6 0 0   100%
tests/components/test_file_role_dialog.py TestLevel1MainDerivatives.test_all_derivative_types   8 0 0   100%
tests/components/test_file_role_dialog.py TestLevel2Subject.test_subject_combo_populated   7 0 0   100%
tests/components/test_file_role_dialog.py TestLevel2Subject.test_subject_selection   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel2Subject.test_subject_combo_default_selection   4 0 0   100%
tests/components/test_file_role_dialog.py TestLevel2Subject.test_subject_not_shown_when_provided   4 0 0   100%
tests/components/test_file_role_dialog.py TestLevel3Role.test_anat_role_selection   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel3Role.test_ses01_role_selection   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel3Role.test_ses02_role_selection   5 0 0   100%
tests/components/test_file_role_dialog.py TestLevel3Role.test_role_not_shown_when_provided   4 0 0   100%
tests/components/test_file_role_dialog.py TestGetSelections.test_get_selections_all_levels   9 0 0   100%
tests/components/test_file_role_dialog.py TestGetSelections.test_get_selections_derivatives   11 0 0   100%
tests/components/test_file_role_dialog.py TestGetSelections.test_get_selections_partial   6 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_main_anat   7 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_main_session   7 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_derivatives   8 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_derivatives_with_session   8 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_empty   4 0 0   100%
tests/components/test_file_role_dialog.py TestGetRelativePath.test_relative_path_session_pattern_matching   13 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_disabled_initially   3 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_enabled_all_selected   6 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_disabled_no_main   5 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_disabled_no_subject   4 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_disabled_no_role   5 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_disabled_derivatives_no_type   6 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_enabled_derivatives_complete   7 0 0   100%
tests/components/test_file_role_dialog.py TestUpdateOkButton.test_ok_button_updates_on_change   9 0 0   100%
tests/components/test_file_role_dialog.py TestDialogButtons.test_accept_button_exists   3 0 0   100%
tests/components/test_file_role_dialog.py TestDialogButtons.test_cancel_button_exists   7 0 0   100%
tests/components/test_file_role_dialog.py TestEdgeCases.test_empty_workspace   4 0 0   100%
tests/components/test_file_role_dialog.py TestEdgeCases.test_workspace_with_single_subject   6 0 0   100%
tests/components/test_file_role_dialog.py TestEdgeCases.test_workspace_with_many_subjects   6 0 0   100%
tests/components/test_file_role_dialog.py TestEdgeCases.test_subject_with_special_characters   6 0 0   100%
tests/components/test_file_role_dialog.py TestIntegration.test_full_workflow_main_anat   12 0 0   100%
tests/components/test_file_role_dialog.py TestIntegration.test_full_workflow_derivatives   15 0 0   100%
tests/components/test_file_role_dialog.py TestIntegration.test_change_selections_multiple_times   13 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.test_only_role_missing   7 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.test_only_role_missing.test_only_subject_missing   6 6 0   0%
tests/components/test_file_role_dialog.py TestPartialInitialization.test_only_role_missing.test_only_main_missing   6 6 0   0%
tests/components/test_file_role_dialog.py TestPartialInitialization.TestFilterSubjects.test_filter_subjects_with_list_widget   16 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.TestFilterSubjects.test_filter_subjects_no_subj_list   3 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.TestRegressionAndEdgeCases.test_get_relative_path_returns_none_when_no_selection   6 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.TestRegressionAndEdgeCases.test_get_relative_path_handles_unset_buttons   5 0 0   100%
tests/components/test_file_role_dialog.py TestPartialInitialization.TestRegressionAndEdgeCases.test_find_patient_dirs_ignores_non_sub_dirs   10 0 0   100%
tests/components/test_file_role_dialog.py (no function)   80 0 0   100%
tests/components/test_file_selector_widget.py mock_context_selector   2 0 0   100%
tests/components/test_file_selector_widget.py mock_has_existing_function   1 0 0   100%
tests/components/test_file_selector_widget.py test_nifti_files   14 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_initialization_basic   7 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_initialization_single_file_mode   3 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_initialization_with_processing_signal   5 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_initialization_with_forced_filters   4 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_ui_elements_created   5 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_clear_button_initially_disabled   3 0 0   100%
tests/components/test_file_selector_widget.py TestFileSelectorWidgetInitialization.test_file_list_widget_config   5 0 0   100%
tests/components/test_file_selector_widget.py TestSetSelectedFiles.test_set_selected_files_multiple_valid   4 0 0   100%
tests/components/test_file_selector_widget.py TestSetSelectedFiles.test_many_files   11 0 0   100%
tests/components/test_file_selector_widget.py TestSetSelectedFiles.test_unicode_in_filenames   8 0 0   100%
tests/components/test_file_selector_widget.py TestSetSelectedFiles.test_mixed_nii_and_nii_gz   14 0 0   100%
tests/components/test_file_selector_widget.py TestSetSelectedFiles.test_duplicate_files   7 0 0   100%
tests/components/test_file_selector_widget.py TestIntegration.test_full_workflow_select_clear   10 0 0   100%
tests/components/test_file_selector_widget.py TestIntegration.test_full_workflow_multiple_selections   10 0 0   100%
tests/components/test_file_selector_widget.py TestIntegration.test_full_workflow_with_processing   11 0 0   100%
tests/components/test_file_selector_widget.py TestContextHandling.test_context_without_update_main_buttons   5 0 0   100%
tests/components/test_file_selector_widget.py TestContextHandling.test_context_without_language_changed   4 0 0   100%
tests/components/test_file_selector_widget.py TestButtonClicks.test_file_button_click   7 0 0   100%
tests/components/test_file_selector_widget.py TestButtonClicks.test_clear_button_click   8 0 0   100%
tests/components/test_file_selector_widget.py TestFileExtensions.test_accepts_nii   7 0 0   100%
tests/components/test_file_selector_widget.py TestFileExtensions.test_accepts_nii_gz   7 0 0   100%
tests/components/test_file_selector_widget.py TestFileExtensions.test_rejects_other_extensions   8 0 0   100%
tests/components/test_file_selector_widget.py TestFileExtensions.test_case_sensitive_extensions   7 0 0   100%
tests/components/test_file_selector_widget.py TestMemoryAndPerformance.test_no_memory_leak_repeated_selections   7 0 0   100%
tests/components/test_file_selector_widget.py TestMemoryAndPerformance.test_performance_many_items   10 0 0   100%
tests/components/test_file_selector_widget.py TestStateConsistency.test_state_after_set_and_get   6 0 0   100%
tests/components/test_file_selector_widget.py TestStateConsistency.test_ui_state_consistency   13 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_buttons_have_text   4 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_list_items_have_tooltips   9 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_single_mode   4 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_filters_non_nifti   11 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_filters_directories   6 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_filters_nonexistent   4 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_updates_list_widget   4 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_enables_clear_button   5 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_emits_has_file_signal   5 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_calls_update_main_buttons   4 0 0   100%
tests/components/test_file_selector_widget.py TestAccessibility.test_set_selected_files_with_tooltips   6 0 0   100%
tests/components/test_file_selector_widget.py TestClearSelectedFiles.test_clear_selected_files_basic   8 0 0   100%
tests/components/test_file_selector_widget.py TestClearSelectedFiles.test_clear_selected_files_emits_signal   6 0 0   100%
tests/components/test_file_selector_widget.py TestClearSelectedFiles.test_clear_selected_files_calls_update_main_buttons   6 0 0   100%
tests/components/test_file_selector_widget.py TestClearSelectedFiles.test_clear_when_already_empty   4 0 0   100%
tests/components/test_file_selector_widget.py TestGetSelectedFiles.test_get_selected_files_with_files   6 0 0   100%
tests/components/test_file_selector_widget.py TestGetSelectedFiles.test_get_selected_files_empty   4 0 0   100%
tests/components/test_file_selector_widget.py TestOpenTreeDialog.test_open_tree_dialog_called   6 0 0   100%
tests/components/test_file_selector_widget.py TestOpenTreeDialog.test_open_tree_dialog_with_results_multiple   6 0 0   100%
tests/components/test_file_selector_widget.py TestOpenTreeDialog.test_open_tree_dialog_with_results_single   6 0 0   100%
tests/components/test_file_selector_widget.py TestOpenTreeDialog.test_open_tree_dialog_parameters   11 0 0   100%
tests/components/test_file_selector_widget.py TestSetProcessingMode.test_set_processing_mode_true   5 0 0   100%
tests/components/test_file_selector_widget.py TestSetProcessingMode.test_set_processing_mode_false_with_files   6 0 0   100%
tests/components/test_file_selector_widget.py TestSetProcessingMode.test_set_processing_mode_false_without_files   5 0 0   100%
tests/components/test_file_selector_widget.py TestSetProcessingMode.test_set_processing_mode_toggle   7 0 0   100%
tests/components/test_file_selector_widget.py TestSignals.test_has_file_signal_exists   3 0 0   100%
tests/components/test_file_selector_widget.py TestSignals.test_selected_files_signal_connection   4 0 0   100%
tests/components/test_file_selector_widget.py TestTranslations.test_translate_ui_called_on_init   4 0 0   100%
tests/components/test_file_selector_widget.py TestTranslations.test_translate_ui_updates_buttons   5 0 0   100%
tests/components/test_file_selector_widget.py TestTranslations.test_language_changed_signal   6 0 0   100%
tests/components/test_file_selector_widget.py TestEdgeCases.test_empty_file_list   5 0 0   100%
tests/components/test_file_selector_widget.py TestEdgeCases.test_very_long_file_paths   8 0 0   100%
tests/components/test_file_selector_widget.py (no function)   87 0 0   100%
tests/components/test_folder_card.py test_folder_with_files   7 0 0   100%
tests/components/test_folder_card.py empty_folder   3 0 0   100%
tests/components/test_folder_card.py mock_context_card   1 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_initialization_existing_folder   8 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_initialization_empty_folder   4 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_initialization_nonexistent_folder   5 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_ui_elements_created   7 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_fixed_height_set   3 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_folder_name_display   3 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_initial_status   4 0 0   100%
tests/components/test_folder_card.py TestFolderCardInitialization.test_initial_icon   3 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_basic   7 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_updates_status   4 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_enables_button   5 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_changes_icon   6 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_multiple_times   6 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_empty_list   4 0 0   100%
tests/components/test_folder_card.py TestAddFiles.test_add_files_starts_animation   5 0 0   100%
tests/components/test_folder_card.py TestStartPulseAnimation.test_start_pulse_animation_creates_animation   4 0 0   100%
tests/components/test_folder_card.py TestStartPulseAnimation.test_start_pulse_animation_stops_existing   6 0 0   100%
tests/components/test_folder_card.py TestStartPulseAnimation.test_start_pulse_animation_multiple_calls   5 0 0   100%
tests/components/test_folder_card.py TestResetState.test_reset_state_basic   6 0 0   100%
tests/components/test_folder_card.py TestResetState.test_reset_state_stops_animation   5 0 0   100%
tests/components/test_folder_card.py TestResetState.test_reset_state_restores_status_text   5 0 0   100%
tests/components/test_folder_card.py TestResetState.test_reset_state_without_prior_changes   4 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_detects_new   10 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_no_changes   4 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_updates_existing   9 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_nonexistent_folder   5 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_multiple_new   8 0 0   100%
tests/components/test_folder_card.py TestCheckNewFiles.test_check_new_files_calls_add_files   8 0 0   100%
tests/components/test_folder_card.py TestShowFilesDialog.test_show_files_dialog_with_files   6 0 0   100%
tests/components/test_folder_card.py TestShowFilesDialog.test_show_files_dialog_empty   5 0 0   100%
tests/components/test_folder_card.py TestShowFilesDialog.test_show_files_dialog_clears_files   6 0 0   100%
tests/components/test_folder_card.py TestShowFilesDialog.test_show_files_dialog_resets_state   6 0 0   100%
tests/components/test_folder_card.py TestOpenFolderSignal.test_open_folder_signal_exists   3 0 0   100%
tests/components/test_folder_card.py TestOpenFolderSignal.test_open_folder_signal_emitted   7 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_very_long_folder_name   6 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_unicode_folder_name   6 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_many_files   5 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_special_characters_in_filename   6 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_rapid_file_additions   5 0 0   100%
tests/components/test_folder_card.py TestEdgeCases.test_folder_deleted_after_init   6 0 0   100%
tests/components/test_folder_card.py TestIntegration.test_full_workflow   14 0 0   100%
tests/components/test_folder_card.py TestIntegration.test_multiple_check_cycles   11 0 0   100%
tests/components/test_folder_card.py TestStateConsistency.test_state_after_add_files   6 0 0   100%
tests/components/test_folder_card.py TestStateConsistency.test_state_after_reset   6 0 0   100%
tests/components/test_folder_card.py TestMemoryAndPerformance.test_no_memory_leak_repeated_operations   6 0 0   100%
tests/components/test_folder_card.py TestMemoryAndPerformance.test_performance_many_checks   5 0 0   100%
tests/components/test_folder_card.py TestAccessibility.test_button_has_text   3 0 0   100%
tests/components/test_folder_card.py TestAccessibility.test_status_label_has_text   3 0 0   100%
tests/components/test_folder_card.py (no function)   72 0 0   100%
tests/components/test_nifti_file_dialog.py nifti_workspace   20 0 0   100%
tests/components/test_nifti_file_dialog.py mock_context_nifti   1 0 0   100%
tests/components/test_nifti_file_dialog.py mock_has_existing   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestNiftiFileDialogInitialization.test_initialization_basic   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestNiftiFileDialogInitialization.test_initialization_single_selection   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestNiftiFileDialogInitialization.test_initialization_without_has_existing_func   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestNiftiFileDialogInitialization.test_initialization_with_forced_filters   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestNiftiFileDialogInitialization.test_ui_elements_created   11 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_finds_nifti   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_extracts_subjects   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_extracts_sessions   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_extracts_modalities   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_extracts_datatypes   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_calls_has_existing   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestPopulateFiles.test_populate_files_list_widget   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_search   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_subject   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_session   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_modality   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_datatype   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_no_flag   8 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_no_flag.mock_has_existing_selective   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_with_flag   8 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_with_flag.mock_has_existing_selective   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestApplyFilters.test_apply_filters_combined   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestCheckboxBehavior.test_no_flag_unchecks_with_flag   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestCheckboxBehavior.test_with_flag_unchecks_no_flag   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestResetFilters.test_reset_filters_basic   9 0 0   100%
tests/components/test_nifti_file_dialog.py TestSelectAllVisible.test_select_all_visible_basic   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestSelectAllVisible.test_select_all_visible_with_filters   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_with_selection   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_without_selection   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_with_existing_flag_warning   11 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_with_existing_flag_warning.mock_has_existing_selective   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_warning_cancelled   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccept.test_accept_warning_cancelled.mock_has_existing_selective   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestGetFilesStaticMethod.test_get_files_accepted   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestGetFilesStaticMethod.test_get_files_rejected   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestForcedFilters.test_forced_filters_search   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestForcedFilters.test_forced_filters_subject   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestForcedFilters.test_forced_filters_modality   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestForcedFilters.test_forced_filters_no_flag   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestForcedFilters.test_forced_filters_multiple   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestFileListBehavior.test_file_list_selection_mode_multiple   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestFileListBehavior.test_file_list_selection_mode_single   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestFileListBehavior.test_file_list_tooltips   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestEdgeCases.test_empty_workspace   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestEdgeCases.test_workspace_with_non_nifti   8 0 0   100%
tests/components/test_nifti_file_dialog.py TestEdgeCases.test_unicode_in_filenames   11 0 0   100%
tests/components/test_nifti_file_dialog.py TestEdgeCases.test_very_deep_directory_structure   8 0 0   100%
tests/components/test_nifti_file_dialog.py TestEdgeCases.test_label_none_hides_checkboxes   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestInfoLabel.test_info_label_shows_count   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestInfoLabel.test_info_label_updates_with_filters   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestRelativeToAbsolute.test_relative_to_absolute_mapping   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestFilesWithFlag.test_files_with_flag_populated   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestFilesWithFlag.test_files_with_flag_populated.mock_has_existing_some   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestFilesWithFlag.test_files_with_flag_color   9 0 0   100%
tests/components/test_nifti_file_dialog.py TestFilesWithFlag.test_files_with_flag_color.mock_has_existing_some   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestButtonConnections.test_reset_button_connected   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestButtonConnections.test_select_all_button_connected   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestButtonConnections.test_deselect_all_button_connected   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestIntegration.test_full_workflow_filter_select_accept   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestIntegration.test_full_workflow_with_warning   12 0 0   100%
tests/components/test_nifti_file_dialog.py TestIntegration.test_full_workflow_with_warning.mock_has_existing_some   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestStateConsistency.test_state_after_filter_changes   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestStateConsistency.test_state_after_reset   7 0 0   100%
tests/components/test_nifti_file_dialog.py TestMemoryAndPerformance.test_many_files_performance   10 0 0   100%
tests/components/test_nifti_file_dialog.py TestMemoryAndPerformance.test_rapid_filter_changes   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccessibility.test_buttons_have_text   5 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccessibility.test_labels_have_text   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestAccessibility.test_search_bar_placeholder   3 0 0   100%
tests/components/test_nifti_file_dialog.py TestTranslations.test_window_title_includes_label   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestErrorHandling.test_has_existing_func_exception   6 1 0   83%
tests/components/test_nifti_file_dialog.py TestErrorHandling.test_has_existing_func_exception.mock_has_existing_error   1 0 0   100%
tests/components/test_nifti_file_dialog.py TestErrorHandling.test_invalid_workspace_path   4 0 0   100%
tests/components/test_nifti_file_dialog.py TestComboBoxBehavior.test_combo_boxes_have_all_option   6 0 0   100%
tests/components/test_nifti_file_dialog.py TestComboBoxBehavior.test_combo_boxes_sorted   5 0 0   100%
tests/components/test_nifti_file_dialog.py (no function)   102 0 0   100%
tests/conftest.py signal_emitter   1 0 0   100%
tests/conftest.py temp_workspace   27 0 0   100%
tests/conftest.py mock_context   3 0 0   100%
tests/conftest.py mock_context.create_buttons   1 1 0   0%
tests/conftest.py clean_settings   4 0 0   100%
tests/conftest.py mock_logger   7 0 0   100%
tests/conftest.py DummySignal.connect   1 0 0   100%
tests/conftest.py DummyFileSelectorWidget.__init__   4 0 0   100%
tests/conftest.py DummyFileSelectorWidget.get_selected_files   1 0 0   100%
tests/conftest.py DummyFileSelectorWidget.reset   1 1 0   0%
tests/conftest.py DummyFileSelectorWidget.setEnabled   1 1 0   0%
tests/conftest.py mock_file_selector   2 0 0   100%
tests/conftest.py mock_file_selector_mask   2 0 0   100%
tests/conftest.py mock_file_selector_dl   2 0 0   100%
tests/conftest.py pytest_configure   3 0 0   100%
tests/conftest.py (no function)   36 0 0   100%
tests/core/test_controller.py TestControllerInitialization.mock_components   9 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_controller_initialization   4 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_context_contains_required_keys   4 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_components_created   5 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_workspace_directory_created   3 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_start_page_set   3 0 0   100%
tests/core/test_controller.py TestControllerInitialization.test_history_initialized   3 0 0   100%
tests/core/test_controller.py TestControllerNavigation.controller   6 0 0   100%
tests/core/test_controller.py TestControllerNavigation.test_go_to_next_page   5 0 0   100%
tests/core/test_controller.py TestControllerNavigation.test_go_to_next_page_none   5 0 0   100%
tests/core/test_controller.py TestControllerNavigation.test_go_to_previous_page   5 0 0   100%
tests/core/test_controller.py TestControllerNavigation.test_go_to_previous_page_none   5 0 0   100%
tests/core/test_controller.py TestControllerNavigation.test_return_to_import   9 0 0   100%
tests/core/test_controller.py TestControllerButtons.controller   6 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_create_buttons   5 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_buttons_connected   3 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_update_buttons_state_ready   6 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_update_buttons_state_not_ready   6 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_button_click_next   6 0 0   100%
tests/core/test_controller.py TestControllerButtons.test_button_click_back   6 0 0   100%
tests/core/test_controller.py TestControllerLanguage.controller   6 0 0   100%
tests/core/test_controller.py TestControllerLanguage.test_set_language   3 0 0   100%
tests/core/test_controller.py TestControllerLanguage.test_save_language   3 0 0   100%
tests/core/test_controller.py TestControllerLanguage.test_language_changed_signal   3 0 0   100%
tests/core/test_controller.py TestControllerLanguage.test_translator_load_called   5 0 0   100%
tests/core/test_controller.py TestControllerNiftiViewer.controller   8 0 0   100%
tests/core/test_controller.py TestControllerNiftiViewer.test_open_nifti_viewer   4 0 0   100%
tests/core/test_controller.py TestControllerStart.controller   8 0 0   100%
tests/core/test_controller.py TestControllerStart.test_start_shows_main_window   2 0 0   100%
tests/core/test_controller.py TestControllerSettings.clean_settings   4 0 0   100%
tests/core/test_controller.py TestControllerSettings.test_loads_saved_language   7 0 0   100%
tests/core/test_controller.py TestControllerSettings.test_default_language_en   6 0 0   100%
tests/core/test_controller.py TestControllerSettings.test_debug_log_setting   8 0 0   100%
tests/core/test_controller.py TestControllerIntegration.controller   10 0 0   100%
tests/core/test_controller.py TestControllerIntegration.test_full_navigation_flow   9 0 0   100%
tests/core/test_controller.py TestControllerIntegration.test_navigation_with_button_updates   8 0 0   100%
tests/core/test_controller.py TestControllerIntegration.test_return_to_import_resets_all   8 0 0   100%
tests/core/test_controller.py MockPath.__init__   1 0 0   100%
tests/core/test_controller.py MockPath.__str__   1 0 0   100%
tests/core/test_controller.py MockPath.__truediv__   1 0 0   100%
tests/core/test_controller.py MockPath.__repr__   1 1 0   0%
tests/core/test_controller.py (no function)   69 1 0   99%
tests/core/test_logger.py TestCompressedRotatingFileHandler.temp_log_dir   3 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.log_file   1 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_handler_initialization   4 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_log_dir_created   3 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_should_rollover_small_file   5 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_should_rollover_large_file   7 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_do_rollover_creates_compressed_file   6 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_do_rollover_maintains_backup_count   7 0 0   100%
tests/core/test_logger.py TestCompressedRotatingFileHandler.test_compressed_file_readable   10 0 0   100%
tests/core/test_logger.py TestSetupLogger.temp_log_dir   3 0 0   100%
tests/core/test_logger.py TestSetupLogger.clean_logger   5 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_creates_logger   5 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_creates_log_file   4 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_with_console   5 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_without_console   4 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_custom_logfile   5 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_clears_existing_handlers   6 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_max_bytes   5 0 0   100%
tests/core/test_logger.py TestSetupLogger.test_setup_logger_backup_count   5 0 0   100%
tests/core/test_logger.py TestGetLogger.test_get_logger_returns_logger   2 0 0   100%
tests/core/test_logger.py TestGetLogger.test_get_logger_default_name   2 0 0   100%
tests/core/test_logger.py TestGetLogger.test_get_logger_custom_name   2 0 0   100%
tests/core/test_logger.py TestGetLogger.test_get_logger_same_instance   3 0 0   100%
tests/core/test_logger.py TestSetLogLevel.test_logger   5 0 0   100%
tests/core/test_logger.py TestSetLogLevel.test_set_log_level_debug   3 0 0   100%
tests/core/test_logger.py TestSetLogLevel.test_set_log_level_info   3 0 0   100%
tests/core/test_logger.py TestSetLogLevel.test_set_log_level_error   3 0 0   100%
tests/core/test_logger.py TestSetLogLevel.test_set_log_level_default_logger   3 0 0   100%
tests/core/test_logger.py TestLoggerFormatting.temp_log_dir   3 0 0   100%
tests/core/test_logger.py TestLoggerFormatting.test_file_formatter   8 0 0   100%
tests/core/test_logger.py TestLoggerFormatting.test_console_formatter   5 0 0   100%
tests/core/test_logger.py TestLoggerIntegration.temp_log_dir   3 0 0   100%
tests/core/test_logger.py TestLoggerIntegration.test_full_logging_workflow   10 0 0   100%
tests/core/test_logger.py TestLoggerIntegration.test_logger_persistence   6 0 0   100%
tests/core/test_logger.py TestEdgeCases.temp_log_dir   3 0 0   100%
tests/core/test_logger.py TestEdgeCases.test_empty_log_message   4 0 0   100%
tests/core/test_logger.py TestEdgeCases.test_very_long_message   4 0 0   100%
tests/core/test_logger.py TestEdgeCases.test_special_characters_in_message   4 0 0   100%
tests/core/test_logger.py TestEdgeCases.test_zero_backup_count   4 0 0   100%
tests/core/test_logger.py TestEdgeCases.test_permission_error_handling   10 0 0   100%
tests/core/test_logger.py (no function)   67 1 0   99%
tests/core/test_page_contract.py get_method_signatures   5 0 0   100%
tests/core/test_page_contract.py test_page_subclass_contract   6 0 0   100%
tests/core/test_page_contract.py (no function)   17 0 0   100%
tests/core/test_utils.py TestGetBinPath.temp_bin_dir   11 0 0   100%
tests/core/test_utils.py TestGetBinPath.test_get_bin_path_pyinstaller   4 0 0   100%
tests/core/test_utils.py TestGetBinPath.test_get_bin_path_local   6 1 0   83%
tests/core/test_utils.py TestGetBinPath.test_get_bin_path_system_path   6 1 0   83%
tests/core/test_utils.py TestGetBinPath.test_get_bin_path_not_found   6 1 0   83%
tests/core/test_utils.py TestGetBinPath.test_get_bin_path_windows   7 0 0   100%
tests/core/test_utils.py TestGetAppDir.test_get_app_dir_creates_directory   9 0 0   100%
tests/core/test_utils.py TestGetAppDir.test_get_app_dir_returns_path_object   7 0 0   100%
tests/core/test_utils.py TestGetAppDir.test_get_app_dir_idempotent   8 0 0   100%
tests/core/test_utils.py TestResourcePath.test_resource_path_pyinstaller   4 0 0   100%
tests/core/test_utils.py TestResourcePath.test_resource_path_development   7 1 0   86%
tests/core/test_utils.py TestResourcePath.test_resource_path_absolute   2 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_macos   5 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_linux   6 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_linux_default_shell   4 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_windows   4 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_error_fallback   4 0 0   100%
tests/core/test_utils.py TestGetShellPath.test_get_shell_path_unknown_system   4 0 0   100%
tests/core/test_utils.py TestSetupFSLEnv.test_setup_fsl_env_success   5 0 0   100%
tests/core/test_utils.py TestSetupFSLEnv.test_setup_fsl_env_uses_zsh   5 0 0   100%
tests/core/test_utils.py TestSetupFSLEnv.test_setup_fsl_env_insufficient_output   4 0 0   100%
tests/core/test_utils.py TestSetupFSLEnv.test_setup_fsl_env_empty_output   3 0 0   100%
tests/core/test_utils.py TestSetupFSLEnv.test_setup_fsl_env_command_fails   2 0 0   100%
tests/core/test_utils.py TestPlatformSpecificBehavior.test_windows_executable_extension   7 2 0   71%
tests/core/test_utils.py TestPlatformSpecificBehavior.test_linux_no_extension   7 2 0   71%
tests/core/test_utils.py TestEdgeCases.test_get_bin_path_empty_name   2 0 0   100%
tests/core/test_utils.py TestEdgeCases.test_resource_path_empty_relative   2 0 0   100%
tests/core/test_utils.py TestEdgeCases.test_resource_path_absolute_input   3 0 0   100%
tests/core/test_utils.py TestEdgeCases.test_setup_fsl_env_whitespace_output   4 0 0   100%
tests/core/test_utils.py TestEdgeCases.test_get_shell_path_empty_environ   4 0 0   100%
tests/core/test_utils.py TestIntegrationScenarios.test_macos_full_setup   7 0 0   100%
tests/core/test_utils.py TestIntegrationScenarios.test_development_mode_paths   13 1 0   92%
tests/core/test_utils.py TestErrorHandling.test_shell_not_found_fallback   3 0 0   100%
tests/core/test_utils.py TestErrorHandling.test_app_dir_permission_error   3 0 0   100%
tests/core/test_utils.py TestErrorHandling.test_setup_fsl_malformed_output   3 0 0   100%
tests/core/test_utils.py (no function)   80 1 0   99%
tests/threads/test_dl_worker.py test_input_files   7 0 0   100%
tests/threads/test_dl_worker.py mock_external_dependencies   17 0 0   100%
tests/threads/test_dl_worker.py TestDlWorkerInitialization.test_initialization_basic   10 0 0   100%
tests/threads/test_dl_worker.py TestDlWorkerInitialization.test_initialization_signals_exist   6 0 0   100%
tests/threads/test_dl_worker.py TestDlWorkerInitialization.test_initialization_process_instances_none   7 0 0   100%
tests/threads/test_dl_worker.py TestUpdateProgress.test_update_progress_basic   8 0 0   100%
tests/threads/test_dl_worker.py TestUpdateProgress.test_update_progress_zero_files   5 0 0   100%
tests/threads/test_dl_worker.py TestUpdateProgress.test_update_progress_calculation   9 0 0   100%
tests/threads/test_dl_worker.py TestUpdateProgress.test_update_progress_max_100   7 0 0   100%
tests/threads/test_dl_worker.py TestStart.test_start_initializes_counters   8 0 0   100%
tests/threads/test_dl_worker.py TestStart.test_start_calls_process_single_file   4 0 0   100%
tests/threads/test_dl_worker.py TestStart.test_start_emits_initial_progress   4 0 0   100%
tests/threads/test_dl_worker.py TestProcessSingleFile.test_process_single_file_creates_temp_dir   6 0 0   100%
tests/threads/test_dl_worker.py TestProcessSingleFile.test_process_single_file_sets_current_file   7 0 0   100%
tests/threads/test_dl_worker.py TestProcessSingleFile.test_process_single_file_calls_run_synthstrip   5 0 0   100%
tests/threads/test_dl_worker.py TestProcessSingleFile.test_process_single_file_emits_log   5 0 0   100%
tests/threads/test_dl_worker.py TestRunSynthstrip.test_run_synthstrip_creates_process   6 0 0   100%
tests/threads/test_dl_worker.py TestRunSynthstrip.test_run_synthstrip_connects_signals   7 0 0   100%
tests/threads/test_dl_worker.py TestRunSynthstrip.test_run_synthstrip_starts_process   6 0 0   100%
tests/threads/test_dl_worker.py TestRunSynthstrip.test_run_synthstrip_emits_signals   6 0 0   100%
tests/threads/test_dl_worker.py TestOnSynthstripFinished.test_on_synthstrip_finished_success   8 0 0   100%
tests/threads/test_dl_worker.py TestOnSynthstripFinished.test_on_synthstrip_finished_failure   7 0 0   100%
tests/threads/test_dl_worker.py TestOnSynthstripFinished.test_on_synthstrip_finished_cancelled   5 0 0   100%
tests/threads/test_dl_worker.py TestCancel.test_cancel_sets_flag   3 0 0   100%
tests/threads/test_dl_worker.py TestCancel.test_cancel_terminates_running_processes   6 0 0   100%
tests/threads/test_dl_worker.py TestCancel.test_cancel_kills_if_not_terminated   7 0 0   100%
tests/threads/test_dl_worker.py TestCancel.test_cancel_emits_finished_signal   4 0 0   100%
tests/threads/test_dl_worker.py TestOnStdout.test_on_stdout_basic   5 0 0   100%
tests/threads/test_dl_worker.py TestOnStdout.test_on_stdout_multiline   7 0 0   100%
tests/threads/test_dl_worker.py TestOnStderr.test_on_stderr_basic   5 0 0   100%
tests/threads/test_dl_worker.py TestOnError.test_on_error_failed_to_start   3 0 0   100%
tests/threads/test_dl_worker.py TestOnError.test_on_error_crashed   3 0 0   100%
tests/threads/test_dl_worker.py TestPhaseTransitions.test_synthstrip_to_coregistration   8 0 0   100%
tests/threads/test_dl_worker.py TestPhaseTransitions.test_coregistration_to_reorientation   8 0 0   100%
tests/threads/test_dl_worker.py TestMultipleFiles.test_process_multiple_files_sequentially   7 0 0   100%
tests/threads/test_dl_worker.py TestMultipleFiles.test_finish_when_all_files_processed   7 0 0   100%
tests/threads/test_dl_worker.py TestEdgeCases.test_empty_file_list   4 0 0   100%
tests/threads/test_dl_worker.py TestEdgeCases.test_unicode_in_filename   7 0 0   100%
tests/threads/test_dl_worker.py TestIntegration.test_full_workflow_single_file   5 0 0   100%
tests/threads/test_dl_worker.py TestMemoryAndPerformance.test_many_files_initialization   3 0 0   100%
tests/threads/test_dl_worker.py TestAccessibility.test_signals_have_docstrings   6 0 0   100%
tests/threads/test_dl_worker.py (no function)   66 0 0   100%
tests/threads/test_import_thread.py TestImportThreadInitialization.test_init_single_path   7 0 0   100%
tests/threads/test_import_thread.py TestImportThreadInitialization.test_init_multiple_paths   4 0 0   100%
tests/threads/test_import_thread.py TestImportThreadInitialization.test_signals_exist   4 0 0   100%
tests/threads/test_import_thread.py TestFileDetection.test_is_nifti_file   5 0 0   100%
tests/threads/test_import_thread.py TestFileDetection.test_is_dicom_file_valid   7 0 0   100%
tests/threads/test_import_thread.py TestFileDetection.test_is_dicom_file_invalid   5 0 0   100%
tests/threads/test_import_thread.py TestFileDetection.test_is_dicom_file_exception   2 0 0   100%
tests/threads/test_import_thread.py TestBIDSDetection.test_is_bids_folder_valid   9 0 0   100%
tests/threads/test_import_thread.py TestBIDSDetection.test_is_bids_folder_invalid   4 0 0   100%
tests/threads/test_import_thread.py TestBIDSDetection.test_is_bids_folder_no_sub_prefix   7 0 0   100%
tests/threads/test_import_thread.py TestSubjectIDGeneration.test_get_next_sub_id_empty_workspace   5 0 0   100%
tests/threads/test_import_thread.py TestSubjectIDGeneration.test_get_next_sub_id_existing_subjects   5 0 0   100%
tests/threads/test_import_thread.py TestSubjectIDGeneration.test_get_next_sub_id_non_sequential   5 0 0   100%
tests/threads/test_import_thread.py TestSubjectIDGeneration.test_get_next_sub_id_invalid_names   7 0 0   100%
tests/threads/test_import_thread.py TestPatientDetectionHeuristics.test_subfolders_look_like_different_patients   5 0 0   100%
tests/threads/test_import_thread.py TestPatientDetectionHeuristics.test_subfolders_single_patient   5 0 0   100%
tests/threads/test_import_thread.py TestPatientDetectionHeuristics.test_are_dicom_series_of_same_patient_true   16 0 0   100%
tests/threads/test_import_thread.py TestPatientDetectionHeuristics.test_are_dicom_series_of_same_patient_false   14 0 0   100%
tests/threads/test_import_thread.py TestPatientDetectionHeuristics.test_are_dicom_series_no_dicom_files   8 0 0   100%
tests/threads/test_import_thread.py TestCancellation.test_cancel_flag_set   4 0 0   100%
tests/threads/test_import_thread.py TestCancellation.test_cancel_terminates_process   7 0 0   100%
tests/threads/test_import_thread.py TestCancellation.test_cancel_no_process   3 0 0   100%
tests/threads/test_import_thread.py TestBIDSImport.test_import_bids_folder_directly   18 0 0   100%
tests/threads/test_import_thread.py TestBIDSImport.test_import_bids_folder_directly.on_finished   1 0 0   100%
tests/threads/test_import_thread.py TestDICOMConversion.test_convert_dicom_folder_success   12 0 0   100%
tests/threads/test_import_thread.py TestDICOMConversion.test_convert_dicom_folder_missing_tool   4 0 0   100%
tests/threads/test_import_thread.py TestDICOMConversion.test_convert_dicom_folder_process_error   8 0 0   100%
tests/threads/test_import_thread.py TestBIDSStructureConversion.test_convert_to_bids_structure   14 0 0   100%
tests/threads/test_import_thread.py TestBIDSStructureConversion.test_convert_to_bids_structure_nested   15 0 0   100%
tests/threads/test_import_thread.py TestSinglePatientProcessing.test_process_single_patient_folder_with_nifti   9 0 0   100%
tests/threads/test_import_thread.py TestSinglePatientProcessing.test_process_single_patient_folder_with_dicom   10 0 0   100%
tests/threads/test_import_thread.py TestSinglePatientProcessing.test_process_single_patient_folder_cancelled   5 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_invalid_folder_path   9 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_invalid_folder_path.on_error   2 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_empty_folders_list   6 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_empty_folders_list.on_error   1 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_cancelled_no_error_emit   7 0 0   100%
tests/threads/test_import_thread.py TestErrorHandling.test_run_cancelled_no_error_emit.on_error   1 1 0   0%
tests/threads/test_import_thread.py TestProgressEmission.test_progress_increases_monotonically   22 0 0   100%
tests/threads/test_import_thread.py TestMultipleFoldersImport.test_run_multiple_folders   9 0 0   100%
tests/threads/test_import_thread.py TestMultipleFoldersImport.test_run_multiple_folders_progress   16 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_bids_folder   13 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_direct_medical_files   7 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_dicom_series_same_patient   12 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_multiple_patients   10 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_empty_folder   4 0 0   100%
tests/threads/test_import_thread.py TestHandleImport.test_handle_import_not_directory   5 0 0   100%
tests/threads/test_import_thread.py TestComplexScenarios.test_nested_bids_structure   10 0 0   100%
tests/threads/test_import_thread.py TestComplexScenarios.test_mixed_content_folder   14 0 0   100%
tests/threads/test_import_thread.py TestComplexScenarios.test_large_dataset_simulation   17 0 0   100%
tests/threads/test_import_thread.py TestComplexScenarios.test_special_characters_in_filenames   11 0 0   100%
tests/threads/test_import_thread.py TestComplexScenarios.test_dicom_missing_patient_info   12 0 0   100%
tests/threads/test_import_thread.py TestConcurrencyAndThreadSafety.test_cancel_during_file_copy   15 0 0   100%
tests/threads/test_import_thread.py TestConcurrencyAndThreadSafety.test_cancel_during_file_copy.cancel_after_delay   3 0 0   100%
tests/threads/test_import_thread.py TestConcurrencyAndThreadSafety.test_multiple_progress_emissions   13 0 0   100%
tests/threads/test_import_thread.py TestConcurrencyAndThreadSafety.test_multiple_progress_emissions.count_progress   1 0 0   100%
tests/threads/test_import_thread.py TestEdgeCases.test_symlink_handling   10 1 0   90%
tests/threads/test_import_thread.py TestEdgeCases.test_readonly_source_files   12 0 0   100%
tests/threads/test_import_thread.py TestEdgeCases.test_very_long_path   11 2 0   82%
tests/threads/test_import_thread.py TestEdgeCases.test_unicode_filenames   13 2 0   85%
tests/threads/test_import_thread.py TestIntegrationScenarios.test_full_dicom_to_bids_workflow   34 3 0   91%
tests/threads/test_import_thread.py TestIntegrationScenarios.test_full_dicom_to_bids_workflow.mock_popen_side_effect   10 0 0   100%
tests/threads/test_import_thread.py TestIntegrationScenarios.test_mixed_patient_dataset_import   19 0 0   100%
tests/threads/test_import_thread.py test_nifti_extensions   3 0 0   100%
tests/threads/test_import_thread.py test_non_nifti_extensions   3 0 0   100%
tests/threads/test_import_thread.py (no function)   114 1 0   99%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadInitialization.test_init_with_all_parameters   16 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadInitialization.test_signals_exist   6 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_successful_save   23 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_successful_save.on_success   1 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_json_metadata_structure   25 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_json_indentation   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_data_type_conversion_to_uint8   12 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_error_handling_invalid_path   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_error_during_nifti_save   12 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveNiftiThreadExecution.test_different_affine_matrices   10 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadInitialization.test_init_regular_image   4 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadInitialization.test_init_overlay_image   4 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadInitialization.test_signals_exist   4 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread3D.test_load_3d_nifti_success   19 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread3D.test_load_3d_nifti_success.on_finished   1 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread3D.test_load_3d_progress_emissions   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread4D.test_load_4d_nifti_success   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread4D.test_anisotropic_voxels   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread4D.test_different_data_types   14 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThread4D.test_negative_values_handling   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveLoadThreadsIntegration.test_save_and_reload_cycle   26 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveLoadThreadsIntegration.test_save_load_multiple_files   16 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSaveLoadThreadsIntegration.test_save_4d_reload_as_4d   17 0 0   100%
tests/threads/test_nifti_utils_threads.py TestConcurrencyAndThreadSafety.test_multiple_save_threads_concurrent   16 0 0   100%
tests/threads/test_nifti_utils_threads.py TestConcurrencyAndThreadSafety.test_multiple_save_threads_concurrent.on_success   1 0 0   100%
tests/threads/test_nifti_utils_threads.py TestConcurrencyAndThreadSafety.test_multiple_load_threads_concurrent   19 0 0   100%
tests/threads/test_nifti_utils_threads.py TestConcurrencyAndThreadSafety.test_multiple_load_threads_concurrent.on_finished   1 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSpecialCases.test_save_zero_volume   10 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSpecialCases.test_load_zero_volume   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSpecialCases.test_save_binary_mask   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSpecialCases.test_load_compressed_vs_uncompressed   17 0 0   100%
tests/threads/test_nifti_utils_threads.py TestSpecialCases.test_save_with_special_characters_in_path   10 0 0   100%
tests/threads/test_nifti_utils_threads.py TestParameterValidation.test_save_with_extreme_radius_values   15 0 0   100%
tests/threads/test_nifti_utils_threads.py TestParameterValidation.test_save_with_extreme_difference_values   14 0 0   100%
tests/threads/test_nifti_utils_threads.py TestPerformanceAndScalability.test_large_4d_dataset   14 0 0   100%
tests/threads/test_nifti_utils_threads.py TestPerformanceAndScalability.test_progress_tracking_accuracy   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestNiftiThreadParameterized.test_save_various_shapes   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestNiftiThreadParameterized.test_load_overlay_flag   10 0 0   100%
tests/threads/test_nifti_utils_threads.py TestNiftiThreadParameterized.test_load_4d_normalization_per_volume   20 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNormalization.test_normalize_data_matplotlib_style   17 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNormalization.test_normalize_uniform_data   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNormalization.test_normalize_with_nan_values   13 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNormalization.test_normalize_empty_volume   4 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNormalization.test_normalize_volume_all_invalid   5 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadCanonicalOrientation.test_canonical_orientation_applied   15 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadErrorHandling.test_error_file_not_found   7 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadErrorHandling.test_error_invalid_nifti_file   8 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadErrorHandling.test_error_corrupted_nifti   8 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadErrorHandling.test_error_during_load   8 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadNifti2Support.test_nifti2_image_loads   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestImageLoadThreadMemoryMapping.test_memory_mapping_used   15 0 0   100%
tests/threads/test_nifti_utils_threads.py TestEdgeCasesAndIntegration.test_very_small_image   11 0 0   100%
tests/threads/test_nifti_utils_threads.py TestEdgeCasesAndIntegration.test_large_dimensions   16 0 0   100%
tests/threads/test_nifti_utils_threads.py TestEdgeCasesAndIntegration.test_invalid_file_emits_error   9 0 0   100%
tests/threads/test_nifti_utils_threads.py TestEdgeCasesAndIntegration.test_save_nifti_thread_success   22 0 0   100%
tests/threads/test_nifti_utils_threads.py TestEdgeCasesAndIntegration.test_save_nifti_thread_error   11 0 0   100%
tests/threads/test_nifti_utils_threads.py (no function)   85 1 0   99%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadInitialization.test_init_with_bet   11 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadInitialization.test_init_with_hdbet   5 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadInitialization.test_init_with_synthstrip   5 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadInitialization.test_signals_exist   6 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadCancellation.test_cancel_flag_set   4 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadCancellation.test_cancel_terminates_process   6 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadCancellation.test_cancel_no_process   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestSkullStripThreadCancellation.test_cancel_process_error_handling   6 0 0   100%
tests/threads/test_skull_strip_thread.py TestBETCommandBuilding.test_bet_basic_command   21 0 0   100%
tests/threads/test_skull_strip_thread.py TestBETCommandBuilding.test_bet_with_options   21 0 0   100%
tests/threads/test_skull_strip_thread.py TestBETCommandBuilding.test_bet_with_center_coordinates   19 0 0   100%
tests/threads/test_skull_strip_thread.py TestBETCommandBuilding.test_bet_brain_extracted_option   18 0 0   100%
tests/threads/test_skull_strip_thread.py TestHDBETCommandBuilding.test_hdbet_basic_command   18 0 0   100%
tests/threads/test_skull_strip_thread.py TestHDBETCommandBuilding.test_hdbet_cpu_mode   19 0 0   100%
tests/threads/test_skull_strip_thread.py TestHDBETCommandBuilding.test_hdbet_cuda_mode   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestHDBETCommandBuilding.test_sinthstrip_basic_command   18 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_output_directory_creation   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_output_directory_creation.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_bet   23 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_bet.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_hdbet   20 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_hdbet.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_output_filename_format_bet   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_output_filename_format_bet.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_synthstrip   20 0 0   100%
tests/threads/test_skull_strip_thread.py TestOutputGeneration.test_json_metadata_creation_synthstrip.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_multiple_files_processing   25 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_multiple_files_processing.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_progress_tracking_multiple_files   23 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_progress_tracking_multiple_files.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_all_completed_signal   24 0 0   100%
tests/threads/test_skull_strip_thread.py TestBatchProcessing.test_all_completed_signal.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_process_failure_nonzero_exit   21 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_missing_subject_id   14 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_exception_during_processing   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_partial_failure_multiple_files   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_partial_failure_multiple_files.get_mock_process   10 0 0   100%
tests/threads/test_skull_strip_thread.py TestErrorHandling.test_partial_failure_multiple_files.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestCancellationDuringProcessing.test_cancel_during_single_file   17 0 0   100%
tests/threads/test_skull_strip_thread.py TestCancellationDuringProcessing.test_cancel_during_single_file.wait_with_cancel   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestCancellationDuringProcessing.test_cancel_stops_batch_processing   23 0 0   100%
tests/threads/test_skull_strip_thread.py TestCancellationDuringProcessing.test_cancel_stops_batch_processing.on_file_started   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestCancellationDuringProcessing.test_cancel_stops_batch_processing.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestSubjectIDExtraction.test_extract_subject_id_standard_bids   16 0 0   100%
tests/threads/test_skull_strip_thread.py TestSubjectIDExtraction.test_extract_subject_id_standard_bids.mock_move   4 0 0   100%
tests/threads/test_skull_strip_thread.py TestSubjectIDExtraction.test_extract_subject_id_nested_path   16 0 0   100%
tests/threads/test_skull_strip_thread.py TestSubjectIDExtraction.test_extract_subject_id_nested_path.mock_move   4 0 0   100%
tests/threads/test_skull_strip_thread.py TestTempDirectoryHandling.test_temp_directory_created   19 0 0   100%
tests/threads/test_skull_strip_thread.py TestTempDirectoryHandling.test_temp_directory_cleanup_on_error   15 0 0   100%
tests/threads/test_skull_strip_thread.py TestTempDirectoryHandling.test_temp_directory_cleanup_on_cancel   13 0 0   100%
tests/threads/test_skull_strip_thread.py TestTempDirectoryHandling.test_temp_directory_cleanup_on_cancel.wait_and_cancel   2 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_empty_file_list   6 2 0   67%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_file_with_spaces_in_name   16 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_file_with_spaces_in_name.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_nifti_without_gz_extension   16 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_nifti_without_gz_extension.mock_move   4 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_extreme_f_values   18 0 0   100%
tests/threads/test_skull_strip_thread.py TestEdgeCases.test_extreme_f_values.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestSignalEmissions.test_progress_updated_signal   19 0 0   100%
tests/threads/test_skull_strip_thread.py TestSignalEmissions.test_progress_updated_signal.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py TestSignalEmissions.test_file_started_signal_order   23 0 0   100%
tests/threads/test_skull_strip_thread.py TestSignalEmissions.test_file_started_signal_order.mock_move   3 0 0   100%
tests/threads/test_skull_strip_thread.py (no function)   128 0 0   100%
tests/threads/test_utils_threads.py TestCopyDeleteThreadInitialization.test_init_copy_file   8 0 0   100%
tests/threads/test_utils_threads.py TestCopyDeleteThreadInitialization.test_init_delete_folder   7 0 0   100%
tests/threads/test_utils_threads.py TestCopyDeleteThreadInitialization.test_init_copy_and_delete   5 0 0   100%
tests/threads/test_utils_threads.py TestCopyDeleteThreadInitialization.test_signals_exist   3 0 0   100%
tests/threads/test_utils_threads.py TestFileCopy.test_copy_file_success   13 0 0   100%
tests/threads/test_utils_threads.py TestFileCopy.test_copy_file_overwrites_existing   10 0 0   100%
tests/threads/test_utils_threads.py TestFileCopy.test_copy_file_to_subfolder   9 0 0   100%
tests/threads/test_utils_threads.py TestFileCopy.test_copy_binary_file   9 0 0   100%
tests/threads/test_utils_threads.py TestFileCopy.test_copy_large_file   9 0 0   100%
tests/threads/test_utils_threads.py TestFolderCopy.test_copy_folder_success   17 0 0   100%
tests/threads/test_utils_threads.py TestFolderCopy.test_copy_nested_folder   14 0 0   100%
tests/threads/test_utils_threads.py TestFolderCopy.test_copy_folder_with_dirs_exist_ok   12 0 0   100%
tests/threads/test_utils_threads.py TestFolderCopy.test_copy_empty_folder   8 0 0   100%
tests/threads/test_utils_threads.py TestFileDelete.test_delete_file_success   11 0 0   100%
tests/threads/test_utils_threads.py TestFileDelete.test_delete_readonly_file   12 3 0   75%
tests/threads/test_utils_threads.py TestFolderDelete.test_delete_folder_success   11 0 0   100%
tests/threads/test_utils_threads.py TestFolderDelete.test_delete_nested_folder   8 0 0   100%
tests/threads/test_utils_threads.py TestFolderDelete.test_delete_empty_folder   5 0 0   100%
tests/threads/test_utils_threads.py TestCombinedOperations.test_copy_then_delete_file   13 0 0   100%
tests/threads/test_utils_threads.py TestCombinedOperations.test_copy_then_delete_folder   10 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_copy_missing_source   8 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_copy_missing_src_parameter   6 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_copy_missing_dst_parameter   6 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_delete_missing_source   6 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_delete_missing_src_parameter   6 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_copy_to_invalid_destination   9 0 0   100%
tests/threads/test_utils_threads.py TestErrorHandling.test_copy_permission_error   11 0 0   100%
tests/threads/test_utils_threads.py TestEdgeCases.test_copy_file_to_itself   7 0 0   100%
tests/threads/test_utils_threads.py TestEdgeCases.test_copy_symlink   13 1 0   92%
tests/threads/test_utils_threads.py TestEdgeCases.test_delete_symlink   11 1 0   91%
tests/threads/test_utils_threads.py TestEdgeCases.test_copy_file_with_special_characters   9 0 0   100%
tests/threads/test_utils_threads.py TestEdgeCases.test_copy_unicode_filename   12 2 0   83%
tests/threads/test_utils_threads.py TestEdgeCases.test_copy_hidden_file   7 0 0   100%
tests/threads/test_utils_threads.py TestEdgeCases.test_no_operation_specified   11 0 0   100%
tests/threads/test_utils_threads.py TestSignalEmissions.test_finished_signal_contains_paths   12 0 0   100%
tests/threads/test_utils_threads.py TestSignalEmissions.test_error_signal_contains_details   9 0 0   100%
tests/threads/test_utils_threads.py TestSignalEmissions.test_multiple_finished_signals_on_combined_operation   11 0 0   100%
tests/threads/test_utils_threads.py TestConcurrency.test_multiple_copy_threads_concurrent   16 0 0   100%
tests/threads/test_utils_threads.py TestConcurrency.test_multiple_delete_threads_concurrent   14 0 0   100%
tests/threads/test_utils_threads.py TestPerformance.test_copy_many_files_in_folder   10 0 0   100%
tests/threads/test_utils_threads.py TestPerformance.test_delete_folder_with_many_files   8 0 0   100%
tests/threads/test_utils_threads.py TestPerformance.test_copy_deep_nested_structure   16 0 0   100%
tests/threads/test_utils_threads.py TestRealWorldScenarios.test_backup_workspace_folder   12 0 0   100%
tests/threads/test_utils_threads.py TestRealWorldScenarios.test_cleanup_temp_derivatives   8 0 0   100%
tests/threads/test_utils_threads.py TestRealWorldScenarios.test_move_processed_results   13 0 0   100%
tests/threads/test_utils_threads.py TestPathNormalization.test_copy_with_trailing_slash   8 0 0   100%
tests/threads/test_utils_threads.py TestPathNormalization.test_copy_with_relative_path   11 0 0   100%
tests/threads/test_utils_threads.py TestPathNormalization.test_copy_with_absolute_path   7 0 0   100%
tests/threads/test_utils_threads.py TestErrorMessages.test_error_message_format   10 0 0   100%
tests/threads/test_utils_threads.py TestErrorMessages.test_translatable_messages   10 0 0   100%
tests/threads/test_utils_threads.py test_copy_parametrized_folder_flag   13 0 0   100%
tests/threads/test_utils_threads.py test_operation_flags_parametrized   8 0 0   100%
tests/threads/test_utils_threads.py (no function)   77 1 0   99%
tests/ui/test_dl_execution_page.py mock_dl_worker   15 0 0   100%
tests/ui/test_dl_execution_page.py mock_context_dl   2 0 0   100%
tests/ui/test_dl_execution_page.py TestDlExecutionPageInitialization.test_initialization_basic   9 0 0   100%
tests/ui/test_dl_execution_page.py TestDlExecutionPageInitialization.test_initialization_with_previous_page   4 0 0   100%
tests/ui/test_dl_execution_page.py TestDlExecutionPageInitialization.test_ui_elements_created   11 0 0   100%
tests/ui/test_dl_execution_page.py TestDlExecutionPageInitialization.test_initial_button_visibility   3 0 0   100%
tests/ui/test_dl_execution_page.py TestOnEnter.test_on_enter_resets_state   7 0 0   100%
tests/ui/test_dl_execution_page.py TestOnEnter.test_on_enter_populates_file_list   10 0 0   100%
tests/ui/test_dl_execution_page.py TestOnEnter.test_on_enter_clears_previous_list   7 0 0   100%
tests/ui/test_dl_execution_page.py TestOnEnter.test_on_enter_without_files_in_context   5 0 0   100%
tests/ui/test_dl_execution_page.py TestOnEnter.test_on_enter_with_empty_file_list   5 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_basic   10 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_no_context   6 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_no_files_in_context   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_empty_file_list   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_connects_signals   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_worker_parameters   6 0 0   100%
tests/ui/test_dl_execution_page.py TestStartProcessing.test_start_processing_clears_log   6 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateProgress.test_update_progress_basic   4 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateProgress.test_update_progress_multiple_values   5 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateProgress.test_update_progress_zero   4 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateProgress.test_update_progress_hundred   4 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_info   7 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_error   7 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_warning   7 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_debug   7 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_includes_timestamp   7 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_autoscroll   6 0 0   100%
tests/ui/test_dl_execution_page.py TestAddLogMessage.test_add_log_message_multiple   8 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateFileStatus.test_update_file_status_basic   7 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateFileStatus.test_update_file_status_completed   6 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateFileStatus.test_update_file_status_error   6 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateFileStatus.test_update_file_status_nonexistent_file   6 0 0   100%
tests/ui/test_dl_execution_page.py TestUpdateFileStatus.test_update_file_status_multiple_updates   11 0 0   100%
tests/ui/test_dl_execution_page.py TestCancelProcessing.test_cancel_processing_with_worker   5 0 0   100%
tests/ui/test_dl_execution_page.py TestCancelProcessing.test_cancel_processing_without_worker   4 0 0   100%
tests/ui/test_dl_execution_page.py TestCancelProcessing.test_cancel_processing_adds_log   6 0 0   100%
tests/ui/test_dl_execution_page.py TestProcessingFinished.test_processing_finished_success   11 0 0   100%
tests/ui/test_dl_execution_page.py TestProcessingFinished.test_processing_finished_failure   7 0 0   100%
tests/ui/test_dl_execution_page.py TestProcessingFinished.test_processing_finished_updates_context   5 0 0   100%
tests/ui/test_dl_execution_page.py TestProcessingFinished.test_processing_finished_current_operation_text   10 0 0   100%
tests/ui/test_dl_execution_page.py TestProcessingFinished.test_processing_finished_reprocess_button   5 0 0   100%
tests/ui/test_dl_execution_page.py TestResetProcessingState.test_reset_processing_state_basic   12 0 0   100%
tests/ui/test_dl_execution_page.py TestResetProcessingState.test_reset_processing_state_button_text   5 0 0   100%
tests/ui/test_dl_execution_page.py TestBackNavigation.test_back_not_processing   6 0 0   100%
tests/ui/test_dl_execution_page.py TestBackNavigation.test_back_while_processing_cancelled   8 0 0   100%
tests/ui/test_dl_execution_page.py TestBackNavigation.test_back_while_processing_not_cancelled   8 0 0   100%
tests/ui/test_dl_execution_page.py TestBackNavigation.test_back_no_previous_page   4 0 0   100%
tests/ui/test_dl_execution_page.py TestNextNavigation.test_next_returns_none   4 0 0   100%
tests/ui/test_dl_execution_page.py TestReadyToAdvance.test_is_ready_to_advance_always_false   5 0 0   100%
tests/ui/test_dl_execution_page.py TestReadyToGoBack.test_is_ready_to_go_back_always_true   5 0 0   100%
tests/ui/test_dl_execution_page.py TestTranslation.test_translate_ui_called_on_init   4 0 0   100%
tests/ui/test_dl_execution_page.py TestTranslation.test_translate_ui_updates_labels   9 0 0   100%
tests/ui/test_dl_execution_page.py TestTranslation.test_translate_ui_repopulates_file_list   6 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_rapid_start_cancel   6 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_multiple_processing_finished_calls   6 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_update_file_status_empty_list   4 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_very_long_log_messages   6 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_unicode_in_filenames   5 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_progress_value_out_of_range   5 0 0   100%
tests/ui/test_dl_execution_page.py TestEdgeCases.test_concurrent_file_updates   7 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_button_styling   6 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_log_text_readonly   3 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_files_list_max_height   3 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_log_text_max_height   3 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_header_alignment   3 0 0   100%
tests/ui/test_dl_execution_page.py TestUIInteraction.test_current_operation_alignment   3 0 0   100%
tests/ui/test_dl_execution_page.py TestWorkerIntegration.test_worker_signals_connected   7 0 0   100%
tests/ui/test_dl_execution_page.py TestWorkerIntegration.test_worker_created_with_correct_parameters   7 0 0   100%
tests/ui/test_dl_execution_page.py TestWorkerIntegration.test_worker_start_called   4 0 0   100%
tests/ui/test_dl_execution_page.py TestContextHandling.test_context_none_handling   5 0 0   100%
tests/ui/test_dl_execution_page.py TestContextHandling.test_context_without_workspace_path   5 0 0   100%
tests/ui/test_dl_execution_page.py TestContextHandling.test_context_without_update_main_buttons   5 0 0   100%
tests/ui/test_dl_execution_page.py TestContextHandling.test_processing_output_dir_set   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStateTransitions.test_state_idle_to_processing   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStateTransitions.test_state_processing_to_completed   9 0 0   100%
tests/ui/test_dl_execution_page.py TestStateTransitions.test_state_processing_to_cancelled   7 0 0   100%
tests/ui/test_dl_execution_page.py TestStateTransitions.test_state_completed_to_reset   9 0 0   100%
tests/ui/test_dl_execution_page.py TestIntegration.test_full_processing_flow_success   19 0 0   100%
tests/ui/test_dl_execution_page.py TestIntegration.test_full_processing_flow_with_cancel   11 0 0   100%
tests/ui/test_dl_execution_page.py TestIntegration.test_full_processing_flow_with_error   11 0 0   100%
tests/ui/test_dl_execution_page.py TestIntegration.test_reprocess_flow   13 0 0   100%
tests/ui/test_dl_execution_page.py TestErrorHandling.test_start_processing_handles_worker_creation_error   8 0 0   100%
tests/ui/test_dl_execution_page.py TestErrorHandling.test_processing_finished_without_workspace_path   5 0 0   100%
tests/ui/test_dl_execution_page.py TestBoundaryConditions.test_many_files_in_list   6 0 0   100%
tests/ui/test_dl_execution_page.py TestBoundaryConditions.test_empty_filename   4 0 0   100%
tests/ui/test_dl_execution_page.py TestBoundaryConditions.test_very_long_filename   6 0 0   100%
tests/ui/test_dl_execution_page.py TestBoundaryConditions.test_rapid_log_messages   5 0 0   100%
tests/ui/test_dl_execution_page.py TestMemoryAndCleanup.test_worker_cleanup_after_finish   6 0 0   100%
tests/ui/test_dl_execution_page.py TestMemoryAndCleanup.test_multiple_processing_cycles   9 0 0   100%
tests/ui/test_dl_execution_page.py TestDocumentation.test_class_docstring   1 0 0   100%
tests/ui/test_dl_execution_page.py TestDocumentation.test_on_enter_docstring   3 0 0   100%
tests/ui/test_dl_execution_page.py TestAccessibility.test_buttons_have_text   4 0 0   100%
tests/ui/test_dl_execution_page.py TestAccessibility.test_labels_have_text   5 0 0   100%
tests/ui/test_dl_execution_page.py (no function)   127 0 0   100%
tests/ui/test_dl_selection_page.py segmentation_workspace   7 0 0   100%
tests/ui/test_dl_selection_page.py TestDlNiftiSelectionPageInitialization.test_initialization_basic   5 0 0   100%
tests/ui/test_dl_selection_page.py TestDlNiftiSelectionPageInitialization.test_initialization_with_previous_page   4 0 0   100%
tests/ui/test_dl_selection_page.py TestDlNiftiSelectionPageInitialization.test_ui_elements_created   6 0 0   100%
tests/ui/test_dl_selection_page.py TestDlNiftiSelectionPageInitialization.test_file_selector_widget_configured   9 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_exists_nii_gz   6 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_exists_nii   9 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_not_exists   6 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_no_subject_id   5 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_directory_not_exists   5 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_multiple_files   11 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_ignores_non_seg_files   11 0 0   100%
tests/ui/test_dl_selection_page.py TestHasExistingSegmentation.test_has_existing_segmentation_nested_subject_path   9 0 0   100%
tests/ui/test_dl_selection_page.py TestBackNavigation.test_back_with_previous_page   6 0 0   100%
tests/ui/test_dl_selection_page.py TestBackNavigation.test_back_no_previous_page   4 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_creates_dl_execution_page   7 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_saves_selected_files_to_context   6 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_adds_to_history   7 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_reuses_existing_next_page   8 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_calls_on_enter   8 0 0   100%
tests/ui/test_dl_selection_page.py TestNextNavigation.test_next_with_empty_selection   6 0 0   100%
tests/ui/test_dl_selection_page.py TestOnEnter.test_on_enter_clears_status   5 0 0   100%
tests/ui/test_dl_selection_page.py TestReadyToAdvance.test_is_ready_to_advance_with_files   4 0 0   100%
tests/ui/test_dl_selection_page.py TestReadyToAdvance.test_is_ready_to_advance_without_files   4 0 0   100%
tests/ui/test_dl_selection_page.py TestReadyToAdvance.test_is_ready_to_advance_single_file   4 0 0   100%
tests/ui/test_dl_selection_page.py TestReadyToGoBack.test_is_ready_to_go_back_always_true   5 0 0   100%
tests/ui/test_dl_selection_page.py TestResetPage.test_reset_page_clears_status   5 0 0   100%
tests/ui/test_dl_selection_page.py TestResetPage.test_reset_page_clears_context   5 0 0   100%
tests/ui/test_dl_selection_page.py TestResetPage.test_reset_page_without_context   5 0 0   100%
tests/ui/test_dl_selection_page.py TestTranslation.test_translate_ui_called_on_init   4 0 0   100%
tests/ui/test_dl_selection_page.py TestTranslation.test_translate_ui_updates_title   5 0 0   100%
tests/ui/test_dl_selection_page.py TestTranslation.test_language_changed_signal   6 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_subject_id_extraction_complex_path   9 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_multiple_sub_in_path   9 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_workspace_path_with_trailing_slash   10 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_special_characters_in_paths   9 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_empty_segmentation_directory   7 0 0   100%
tests/ui/test_dl_selection_page.py TestEdgeCases.test_unicode_in_paths   9 0 0   100%
tests/ui/test_dl_selection_page.py TestIntegration.test_full_selection_flow   9 0 0   100%
tests/ui/test_dl_selection_page.py TestIntegration.test_reset_and_reselect_flow   10 0 0   100%
tests/ui/test_dl_selection_page.py TestIntegration.test_back_and_forth_navigation   9 0 0   100%
tests/ui/test_dl_selection_page.py TestIntegration.test_status_label_lifecycle   10 0 0   100%
tests/ui/test_dl_selection_page.py TestContextHandling.test_context_none_handling   4 0 0   100%
tests/ui/test_dl_selection_page.py TestContextHandling.test_context_without_history   6 0 0   100%
tests/ui/test_dl_selection_page.py TestContextHandling.test_selected_files_persisted_in_context   9 0 0   100%
tests/ui/test_dl_selection_page.py TestContextHandling.test_multiple_next_calls_update_context   8 0 0   100%
tests/ui/test_dl_selection_page.py TestFileSelectorIntegration.test_file_selector_get_selected_files_called   6 0 0   100%
tests/ui/test_dl_selection_page.py TestFileSelectorIntegration.test_is_ready_to_advance_uses_file_selector   8 0 0   100%
tests/ui/test_dl_selection_page.py TestFileSelectorIntegration.test_file_selector_receives_correct_parameters   7 0 0   100%
tests/ui/test_dl_selection_page.py TestPathHandling.test_path_normalization   11 1 0   91%
tests/ui/test_dl_selection_page.py TestPathHandling.test_relative_vs_absolute_paths   9 0 0   100%
tests/ui/test_dl_selection_page.py TestPathHandling.test_symlinks_in_path   9 0 0   100%
tests/ui/test_dl_selection_page.py TestUIInteraction.test_title_styling   5 0 0   100%
tests/ui/test_dl_selection_page.py TestUIInteraction.test_status_label_alignment   3 0 0   100%
tests/ui/test_dl_selection_page.py TestUIInteraction.test_layout_structure   5 0 0   100%
tests/ui/test_dl_selection_page.py TestErrorHandling.test_has_existing_segmentation_permission_error   5 0 0   100%
tests/ui/test_dl_selection_page.py TestErrorHandling.test_has_existing_segmentation_with_corrupted_directory   13 2 0   85%
tests/ui/test_dl_selection_page.py TestBoundaryConditions.test_very_long_path   8 0 0   100%
tests/ui/test_dl_selection_page.py TestBoundaryConditions.test_many_files_in_directory   11 0 0   100%
tests/ui/test_dl_selection_page.py TestBoundaryConditions.test_subject_id_at_end_of_path   9 0 0   100%
tests/ui/test_dl_selection_page.py TestBoundaryConditions.test_workspace_path_equals_nifti_path   4 0 0   100%
tests/ui/test_dl_selection_page.py TestConcurrency.test_multiple_pages_same_context   9 0 0   100%
tests/ui/test_dl_selection_page.py TestConcurrency.test_rapid_next_back_navigation   8 0 0   100%
tests/ui/test_dl_selection_page.py TestDocumentation.test_has_existing_segmentation_docstring   3 0 0   100%
tests/ui/test_dl_selection_page.py TestDocumentation.test_reset_page_docstring   3 0 0   100%
tests/ui/test_dl_selection_page.py TestStateConsistency.test_state_after_multiple_operations   11 0 0   100%
tests/ui/test_dl_selection_page.py TestStateConsistency.test_state_independence_from_previous_page   11 0 0   100%
tests/ui/test_dl_selection_page.py (no function)   95 0 0   100%
tests/ui/test_import_page.py import_page   3 0 0   100%
tests/ui/test_import_page.py TestImportPageSetup.test_page_initialization   4 0 0   100%
tests/ui/test_import_page.py TestImportPageSetup.test_drop_label_created   2 0 0   100%
tests/ui/test_import_page.py TestImportPageSetup.test_stylesheet_applied   3 0 0   100%
tests/ui/test_import_page.py TestImportPageReadiness.temp_workspace   3 0 0   100%
tests/ui/test_import_page.py TestImportPageReadiness.test_not_ready_when_workspace_empty   1 0 0   100%
tests/ui/test_import_page.py TestImportPageReadiness.test_ready_when_workspace_has_folder   3 0 0   100%
tests/ui/test_import_page.py TestImportPageReadiness.test_ignores_hidden_files   4 0 0   100%
tests/ui/test_import_page.py TestImportPageReadiness.test_cannot_go_back   1 0 0   100%
tests/ui/test_import_page.py TestImportPageNavigation.test_next_creates_patient_selection_page   4 0 0   100%
tests/ui/test_import_page.py TestImportPageNavigation.test_next_returns_cached_page   3 0 0   100%
tests/ui/test_import_page.py TestImportPageNavigation.test_back_returns_false   1 0 0   100%
tests/ui/test_import_page.py TestImportPageDragDrop.temp_source_folder   6 0 0   100%
tests/ui/test_import_page.py TestImportPageDragDrop.test_drag_enter_accepts_urls   6 0 0   100%
tests/ui/test_import_page.py TestImportPageDragDrop.test_drop_event_handles_folder   8 0 0   100%
tests/ui/test_import_page.py TestImportPageDialogs.temp_source_folder   3 3 0   0%
tests/ui/test_import_page.py TestImportPageDialogs.test_mouse_press_opens_dialog   5 0 0   100%
tests/ui/test_import_page.py TestImportPageDialogs.test_open_folder_dialog_configuration   7 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.temp_source_folder   6 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_handle_import_creates_thread   12 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_handle_import_creates_progress_dialog   8 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_finished_removes_thread   8 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_finished_updates_buttons   6 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_error_shows_message   11 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_error_shows_message.mock_critical   1 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_error_handles_removed_thread   3 0 0   100%
tests/ui/test_import_page.py TestImportPageThreads.test_on_import_canceled_terminates_thread   13 0 0   100%
tests/ui/test_import_page.py TestImportPageCleanup.test_close_event_cleans_dialogs   7 0 0   100%
tests/ui/test_import_page.py TestImportPageCleanup.test_close_event_cancels_threads   8 0 0   100%
tests/ui/test_import_page.py TestImportPageTranslation.test_translate_ui_called_on_init   1 0 0   100%
tests/ui/test_import_page.py TestImportPageTranslation.test_translate_ui_updates_label   3 0 0   100%
tests/ui/test_import_page.py TestImportPageTranslation.test_language_changed_signal_connected   3 0 0   100%
tests/ui/test_import_page.py TestImportPageIntegration.temp_workspace   3 0 0   100%
tests/ui/test_import_page.py TestImportPageIntegration.temp_source_folder   7 0 0   100%
tests/ui/test_import_page.py TestImportPageIntegration.test_full_import_workflow   6 0 0   100%
tests/ui/test_import_page.py (no function)   62 1 0   98%
tests/ui/test_main_window.py mock_context   10 0 0   100%
tests/ui/test_main_window.py mock_context.cleanup   2 0 0   100%
tests/ui/test_main_window.py main_window   8 2 0   75%
tests/ui/test_main_window.py TestMainWindowSetup.test_window_initialization   3 0 0   100%
tests/ui/test_main_window.py TestMainWindowSetup.test_menu_bar_created   6 0 0   100%
tests/ui/test_main_window.py TestMainWindowSetup.test_splitter_created   2 0 0   100%
tests/ui/test_main_window.py TestMainWindowSetup.test_footer_with_buttons   5 0 0   100%
tests/ui/test_main_window.py TestMainWindowSetup.test_language_actions_created   4 0 0   100%
tests/ui/test_main_window.py TestLanguageManagement.test_set_language_emits_signal   3 0 0   100%
tests/ui/test_main_window.py TestLanguageManagement.test_set_language_checks_correct_action   4 0 0   100%
tests/ui/test_main_window.py TestLanguageManagement.test_language_action_group_exclusive   6 0 0   100%
tests/ui/test_main_window.py TestWorkspaceOperations.test_clear_folder_confirms_deletion   5 0 0   100%
tests/ui/test_main_window.py TestWorkspaceOperations.test_clear_folder_deletes_on_confirmation   7 0 0   100%
tests/ui/test_main_window.py TestWorkspaceOperations.test_clear_folder_returns_to_import   5 0 0   100%
tests/ui/test_main_window.py TestThreadManagement.test_new_thread_adds_to_list   11 0 0   100%
tests/ui/test_main_window.py TestThreadManagement.test_copydelete_thread_error_removes_thread   6 0 0   100%
tests/ui/test_main_window.py TestThreadManagement.test_copydelete_thread_success_removes_thread   6 0 0   100%
tests/ui/test_main_window.py TestThreadManagement.test_close_event_stops_threads   23 0 0   100%
tests/ui/test_main_window.py TestDebugLog.test_toggle_debug_log_enables   3 0 0   100%
tests/ui/test_main_window.py TestDebugLog.test_toggle_debug_log_disables   3 0 0   100%
tests/ui/test_main_window.py TestWidgetManagement.test_set_widgets_first_time   13 0 0   100%
tests/ui/test_main_window.py TestWidgetManagement.test_export_file_info_shows_message   5 0 0   100%
tests/ui/test_main_window.py TestWidgetManagement.test_export_file_info_shows_message.mock_information   1 0 0   100%
tests/ui/test_main_window.py TestIntegration.test_full_workflow   10 0 0   100%
tests/ui/test_main_window.py (no function)   45 0 0   100%
tests/ui/test_nifti_mask_selection_page.py mask_page   4 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageSetup.test_page_initialization   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageSetup.test_title_created   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageSetup.test_file_selector_created   1 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageSetup.test_viewer_button_created   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageExistingMask.test_has_existing_manual_mask   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageExistingMask.test_has_no_existing_mask   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageExistingMask.test_has_existing_mask_no_subject_id   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageExistingMask.test_has_existing_mask_empty_directory   5 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageViewer.test_open_nifti_viewer_calls_context   4 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageViewer.test_open_nifti_viewer_uses_last_file   4 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageViewer.test_open_nifti_viewer_handles_error   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageReadiness.test_not_ready_to_advance   1 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageReadiness.test_ready_to_go_back   1 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageNavigation.test_back_returns_previous_page   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageNavigation.test_back_returns_none_without_previous   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageReset.test_reset_clears_selected_file   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageReset.test_reset_calls_clear_selected_files   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageReset.test_reset_disables_viewer_button   3 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageTranslation.test_translate_ui_updates_title   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageTranslation.test_translate_ui_updates_button   2 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageOnEnter.test_on_enter_does_nothing   1 0 0   100%
tests/ui/test_nifti_mask_selection_page.py TestNiftiMaskSelectionPageIntegration.test_full_workflow   8 0 0   100%
tests/ui/test_nifti_mask_selection_page.py (no function)   42 1 0   98%
tests/ui/test_nifti_viewer.py TestNiftiViewer.setUpClass   13 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.tearDownClass   1 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.setUp   4 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.tearDown   2 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_compute_mask_numba_mm   22 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_apply_overlay_numba   27 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_pad_volume_to_shape   16 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_screen_to_image_coords   20 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_format_info_text   10 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_init_ui   4 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_open_file_button   4 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_automaticROI_drawing   10 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_load_file   6 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_load_4d_file   9 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_load_overlay   11 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_automaticROI_clicked   7 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_automaticROI_save   19 1 0   95%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_resize_event   5 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_colormap_changed   3 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_slice_changed   8 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_time_changed   7 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_update_coordinates   7 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_update_cross_view_lines   14 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_translate_ui   3 0 0   100%
tests/ui/test_nifti_viewer.py TestNiftiViewer.test_close_event   5 0 0   100%
tests/ui/test_nifti_viewer.py (no function)   50 1 0   98%
tests/ui/test_patient_selection_page.py patient_page   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSetup.test_page_initialization   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSetup.test_title_created   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSetup.test_select_buttons_created   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSetup.test_scroll_area_created   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSetup.test_column_count_default   1 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPagePatientLoading.temp_workspace   7 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPagePatientLoading.test_find_patient_dirs   6 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPagePatientLoading.test_find_patient_dirs_ignores_derivatives   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPagePatientLoading.test_load_patients_creates_buttons   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPagePatientLoading.test_load_patients_adds_to_grid   1 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_toggle_patient_select   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_toggle_patient_deselect   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_toggle_updates_main_buttons   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_select_all_patients   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_deselect_all_patients   5 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageSelection.test_get_selected_patients   6 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReadiness.test_not_ready_without_selection   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReadiness.test_ready_with_selection   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReadiness.test_can_go_back   1 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageNavigation.test_back_returns_previous_page   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageNavigation.test_next_without_cleanup   7 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageNavigation.test_next_with_cleanup_confirmed   7 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageNavigation.test_next_with_cleanup_cancelled   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageNavigation.test_next_creates_tool_selection_page   7 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageCleanup.temp_workspace   7 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageCleanup.patient_page   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageCleanup.test_cleanup_removes_unselected_patients   6 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageCleanup.test_cleanup_removes_from_derivatives   6 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageCleanup.test_cleanup_handles_errors   5 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageLayout.temp_workspace   5 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageLayout.test_update_column_count_wide   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageLayout.test_update_column_count_narrow   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageLayout.test_resize_event_updates_columns   5 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageLayout.test_reload_patient_grid_maintains_selection   4 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReset.test_reset_page_clears_selections   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReset.test_reset_page_clears_buttons   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageReset.test_on_enter_maintains_selections   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageTranslation.test_translate_ui_updates_title   2 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageTranslation.test_translate_ui_updates_buttons   3 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageIntegration.temp_workspace   8 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageIntegration.test_full_workflow_select_and_advance   8 0 0   100%
tests/ui/test_patient_selection_page.py TestPatientSelectionPageIntegration.test_full_workflow_with_cleanup   9 0 0   100%
tests/ui/test_patient_selection_page.py (no function)   71 1 0   99%
tests/ui/test_pipeline_execution_page.py mock_get_bin_path   3 0 0   100%
tests/ui/test_pipeline_execution_page.py pipeline_config_exec   7 0 0   100%
tests/ui/test_pipeline_execution_page.py mock_tree_view   3 0 0   100%
tests/ui/test_pipeline_execution_page.py mock_context_exec   2 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_initialization_basic   11 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_initialization_with_previous_page   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_pipeline_output_dir_created   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_ui_elements_created   9 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_folder_cards_created   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_get_bin_path_called   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecutionPageInitialization.test_get_bin_path_error   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestConfigFileDetection.test_find_latest_config_single   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestConfigFileDetection.test_find_latest_config_multiple   12 0 0   100%
tests/ui/test_pipeline_execution_page.py TestConfigFileDetection.test_find_latest_config_no_files   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestGetSubList.test_get_sub_list_basic   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestGetSubList.test_get_sub_list_filters_non_sub   11 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecution.test_start_pipeline_basic   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecution.test_start_pipeline_already_running   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecution.test_start_pipeline_arguments   10 0 0   100%
tests/ui/test_pipeline_execution_page.py TestPipelineExecution.test_start_pipeline_failed_to_start   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_process_pipeline_output_log   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_process_pipeline_output_error   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_process_pipeline_output_progress   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_process_pipeline_output_finished   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_process_pipeline_output_generic   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_on_stdout_ready   10 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessOutput.test_on_stderr_ready   11 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_progress_valid   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_progress_invalid   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_current_operation_starting   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_current_operation_patient   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_current_operation_analysis   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_update_current_operation_saving   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProgressUpdates.test_extract_patient_id_from_log   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessCompletion.test_on_process_finished_success   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessCompletion.test_on_process_finished_error   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessCompletion.test_on_pipeline_finished   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessCompletion.test_on_pipeline_error   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestProcessCompletion.test_on_process_error   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestStopButton.test_stop_button_running   11 0 0   100%
tests/ui/test_pipeline_execution_page.py TestStopButton.test_stop_button_forced_kill   9 0 0   100%
tests/ui/test_pipeline_execution_page.py TestStopButton.test_stop_button_not_running   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestLogMessages.test_log_message_basic   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestLogMessages.test_log_message_multiple   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestLogMessages.test_log_message_autoscroll   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_on_enter_starts_pipeline   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_on_enter_not_started_twice   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_back_calls_reset   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_back_no_previous_page   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_next_with_confirmation   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_next_cancelled   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_is_ready_to_go_back_completed   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_is_ready_to_go_back_error   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_is_ready_to_go_back_running   3 0 0   100%
tests/ui/test_pipeline_execution_page.py TestNavigation.test_is_ready_to_advance   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestResetPage.test_reset_page_basic   14 0 0   100%
tests/ui/test_pipeline_execution_page.py TestResetPage.test_reset_page_color   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestResetPage.test_reset_page_current_operation   5 0 0   100%
tests/ui/test_pipeline_execution_page.py TestCheckNewFiles.test_check_new_files   7 2 0   71%
tests/ui/test_pipeline_execution_page.py TestDestructor.test_destructor_kills_process   9 0 0   100%
tests/ui/test_pipeline_execution_page.py TestDestructor.test_destructor_no_process   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestTranslation.test_translate_ui_called_on_init   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestTranslation.test_translate_ui_updates_labels   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestTranslation.test_language_changed_signal   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestFolderCards.test_folder_cards_connected_to_tree_view   4 1 0   75%
tests/ui/test_pipeline_execution_page.py TestFolderCards.test_folder_cards_paths   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_empty_config   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_invalid_config_id   10 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_process_output_empty_lines   11 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_multiple_progress_updates   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_unicode_in_logs   8 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_very_long_log_messages   6 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_rapid_process_output   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestEdgeCases.test_concurrent_stop_and_finish   10 0 0   100%
tests/ui/test_pipeline_execution_page.py TestReturnToImport.test_return_to_import_not_running   4 0 0   100%
tests/ui/test_pipeline_execution_page.py TestReturnToImport.test_return_to_import_while_running   7 0 0   100%
tests/ui/test_pipeline_execution_page.py TestIntegration.test_full_pipeline_success_flow   14 0 0   100%
tests/ui/test_pipeline_execution_page.py TestIntegration.test_full_pipeline_error_flow   10 0 0   100%
tests/ui/test_pipeline_execution_page.py TestIntegration.test_full_pipeline_stop_flow   13 0 0   100%
tests/ui/test_pipeline_execution_page.py (no function)   109 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.temp_workspace   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.test_page_initialization   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.test_title_created   2 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.test_buttons_created   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelectionPageSetup.test_summary_widget_created   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.temp_workspace   15 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.test_check_patient_eligible   6 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.test_check_patient_missing_flair   6 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.test_check_patient_missing_skull_stripping   7 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRequirements.test_check_patient_missing_segmentation   11 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.temp_workspace   17 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.test_select_all_eligible   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.test_deselect_all   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.test_toggle_patient_select   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSelection.test_toggle_patient_deselect   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientLoading.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientLoading.test_find_patient_dirs   5 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientLoading.test_load_patients_creates_buttons   1 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientLoading.test_load_patients_updates_status   1 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.temp_workspace   18 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.pipeline_page   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.test_build_pipeline_config_creates_file   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.test_build_pipeline_config_content   7 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.test_get_next_config_id_first   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelineConfigGeneration.test_get_next_config_id_existing   8 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRefresh.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientRefresh.test_refresh_maintains_valid_selections   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.pipeline_page   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.test_is_ready_to_advance_with_selection   2 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.test_is_ready_to_advance_without_selection   1 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.test_is_ready_to_go_back   1 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.test_back_returns_previous_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientNavigation.test_next_creates_review_page   6 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSummary.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSummary.test_get_selected_patients   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSummary.test_get_eligible_patients   4 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientSummary.test_get_patient_status_summary   7 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientReset.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientReset.test_reset_clears_selections   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientReset.test_reset_clears_status   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientIntegration.temp_workspace   16 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientIntegration.pipeline_page   3 0 0   100%
tests/ui/test_pipeline_patient_selection.py TestPipelinePatientIntegration.test_full_workflow   9 0 0   100%
tests/ui/test_pipeline_patient_selection.py (no function)   81 1 0   99%
tests/ui/test_pipeline_review_page.py pipeline_config_basic   7 0 0   100%
tests/ui/test_pipeline_review_page.py pipeline_config_multiple   10 0 0   100%
tests/ui/test_pipeline_review_page.py pipeline_config_need_revision   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestPipelineReviewPageInitialization.test_initialization_basic   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestPipelineReviewPageInitialization.test_initialization_with_previous_page   4 0 0   100%
tests/ui/test_pipeline_review_page.py TestPipelineReviewPageInitialization.test_ui_elements_created   6 0 0   100%
tests/ui/test_pipeline_review_page.py TestPipelineReviewPageInitialization.test_patient_widgets_created   4 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigFileDetection.test_find_latest_config_single   5 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigFileDetection.test_find_latest_config_multiple   6 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigFileDetection.test_find_latest_config_no_pipeline_dir   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigFileDetection.test_find_latest_config_no_files   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigFileDetection.test_find_latest_config_invalid_names   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigLoading.test_load_config_valid   4 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigLoading.test_load_config_invalid_json   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestConfigLoading.test_load_config_file_not_found   5 0 0   100%
tests/ui/test_pipeline_review_page.py TestSaveConfiguration.test_save_single_patient   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestSaveConfiguration.test_save_multiple_patients   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestOnEnter.test_on_enter_no_changes   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestOnEnter.test_on_enter_new_config_file   12 0 0   100%
tests/ui/test_pipeline_review_page.py TestOnEnter.test_on_enter_config_content_changed   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestNextNavigation.test_next_all_saved   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestNextNavigation.test_next_need_revision   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestNextNavigation.test_next_existing_next_page   8 0 0   100%
tests/ui/test_pipeline_review_page.py TestNextNavigation.test_next_updates_history   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestBackNavigation.test_back_with_output_folder   13 0 0   100%
tests/ui/test_pipeline_review_page.py TestBackNavigation.test_back_without_output_folder   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestBackNavigation.test_back_no_previous_page   4 0 0   100%
tests/ui/test_pipeline_review_page.py TestBackNavigation.test_back_calls_on_enter   6 0 0   100%
tests/ui/test_pipeline_review_page.py TestBackNavigation.test_back_error_handling   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestTranslation.test_translate_ui_called_on_init   4 0 0   100%
tests/ui/test_pipeline_review_page.py TestTranslation.test_translate_ui_updates_labels   7 0 0   100%
tests/ui/test_pipeline_review_page.py TestTranslation.test_language_changed_signal   6 0 0   100%
tests/ui/test_pipeline_review_page.py TestUISetup.test_setup_ui_clears_existing_layout   5 0 0   100%
tests/ui/test_pipeline_review_page.py TestUISetup.test_setup_ui_creates_scroll_area   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestUISetup.test_patient_widgets_created_for_all_patients   6 0 0   100%
tests/ui/test_pipeline_review_page.py TestEdgeCases.test_empty_config   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestEdgeCases.test_very_large_config   10 0 0   100%
tests/ui/test_pipeline_review_page.py TestEdgeCases.test_special_characters_in_patient_id   9 0 0   100%
tests/ui/test_pipeline_review_page.py TestEdgeCases.test_unicode_in_paths   9 0 0   100%
tests/ui/test_pipeline_review_page.py (no function)   62 0 0   100%
tests/ui/test_skull_stripping_page.py skull_page   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_page_initialization   4 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_title_created   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_file_selector_created   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_run_button_created   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_cancel_button_created   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_progress_bar_created   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_bet_detected_when_available   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageSetup.test_bet_not_detected_when_unavailable   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_f_parameter_default   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_f_parameter_range   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_g_parameter_default   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_coordinate_parameters_default   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_brain_extracted_checkbox_default   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageBETParameters.test_other_checkboxes_default   4 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageAdvancedOptions.test_advanced_options_hidden_initially   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageAdvancedOptions.test_toggle_advanced_shows_options   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageAdvancedOptions.test_toggle_advanced_hides_options   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageAdvancedOptions.test_toggle_updates_button_text   4 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_run_without_files_shows_warning   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_run_without_files_shows_warning.mock_warning   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_run_creates_worker_thread   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_run_shows_progress_bar   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_set_processing_mode_true   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProcessing.test_cancel_processing   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_progress_updated   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_progress_value_updated   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_all_completed_success   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_all_completed_with_failures   5 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_all_completed_all_failed   4 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageProgressCallbacks.test_on_worker_finished   5 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageExistingCheck.temp_workspace   7 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageExistingCheck.test_has_existing_skull_strip_true   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageExistingCheck.test_has_existing_skull_strip_false   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageExistingCheck.test_has_existing_skull_strip_no_subject_id   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_back_returns_previous_page   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_back_blocked_during_processing   9 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_back_blocked_during_processing.mock_warning   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_is_ready_to_advance_false   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_is_ready_to_go_back_true_when_idle   1 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageNavigation.test_is_ready_to_go_back_false_during_processing   4 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageReset.test_reset_clears_files   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageReset.test_reset_parameters   5 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageReset.test_reset_checkboxes   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageReset.test_reset_hides_progress_bar   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageReset.test_reset_cancels_running_worker   6 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageTranslation.test_translate_ui_updates_title   2 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageTranslation.test_translate_ui_updates_buttons   3 0 0   100%
tests/ui/test_skull_stripping_page.py TestSkullStrippingPageIntegration.test_full_processing_workflow   11 0 0   100%
tests/ui/test_skull_stripping_page.py (no function)   74 1 0   99%
tests/ui/test_tool_selection_page.py tool_page   4 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSetup.test_page_initialization   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSetup.test_title_created   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSetup.test_radio_buttons_created   4 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSetup.test_radio_group_created   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSetup.test_all_buttons_unchecked_initially   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_select_skull_stripping   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_select_automatic_drawing   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_select_deep_learning   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_select_full_pipeline   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_on_selection_updates_buttons   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageSelection.test_change_selection   4 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageReadiness.test_not_ready_without_selection   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageReadiness.test_ready_with_selection   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageReadiness.test_can_go_back   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageNavigation.test_back_returns_previous_page   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageNavigation.test_next_skull_stripping   6 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageNavigation.test_next_automatic_drawing   6 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageNavigation.test_next_full_pipeline   6 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageNavigation.test_next_caches_page   8 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_available_on_linux_with_gpu   6 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_on_windows   7 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_on_windows.mock_warning   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_without_gpu   7 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_without_gpu.mock_warning   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_on_macos   6 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageDeepLearning.test_dl_not_available_on_macos.mock_warning   1 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageReset.test_reset_clears_selection   5 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageReset.test_reset_unchecks_all_buttons   4 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageResize.test_resize_event_updates_fonts   7 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageResize.test_resize_maintains_minimum_font_size   8 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageTranslation.test_translate_ui_updates_title   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageTranslation.test_translate_ui_updates_buttons   5 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageTranslation.test_translate_ui_updates_group_box   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageInfoLabel.test_dl_has_info_label   2 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageInfoLabel.test_info_label_has_tooltip   3 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageIntegration.test_full_selection_workflow   5 0 0   100%
tests/ui/test_tool_selection_page.py TestToolSelectionPageIntegration.test_navigation_and_cache   8 0 0   100%
tests/ui/test_tool_selection_page.py (no function)   67 1 0   99%
tests/ui/test_workspace_tree_view.py tree_view   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewSetup.test_full_workflow_selection_and_export   7 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewSetup.test_full_workflow_double_click_nifti   4 0 0   100%
tests/ui/test_workspace_tree_view.py test_initialization   3 0 0   100%
tests/ui/test_workspace_tree_view.py test_model_root_path   1 0 0   100%
tests/ui/test_workspace_tree_view.py test_selection_mode   1 0 0   100%
tests/ui/test_workspace_tree_view.py test_context_menu_policy   1 0 0   100%
tests/ui/test_workspace_tree_view.py test_signals_connected   1 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewSelection.test_handle_workspace_click_updates_selection   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewSelection.test_selected_files_emits_signal   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_on_nifti_opens_viewer   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_on_nifti_gz_opens_viewer   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_on_regular_file_opens_in_explorer   5 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_on_folder_does_nothing   6 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_nifti_error_shows_message   8 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewDoubleClick.test_double_click_nifti_error_shows_message.mock_critical   1 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewColumns.test_adjust_tree_columns_wide   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewColumns.test_adjust_tree_columns_narrow   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewContextMenu.test_workspace_actions_created   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewContextMenu.test_folder_actions_created   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewContextMenu.test_file_actions_created   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewContextMenu.test_nifti_file_actions_include_viewer   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewContextMenu.test_multi_file_actions_created   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.temp_source_file   6 6 0   0%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_add_file_to_workspace_opens_dialog   6 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_remove_from_workspace_confirms   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_remove_from_workspace_emits_thread   4 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_export_single_file_dialog   5 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_export_folder_dialog   5 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewFileOperations.test_export_multiple_files_dialog   8 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_open_nifti_calls_viewer   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_open_nifti_error_shows_message   7 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_open_nifti_error_shows_message.mock_critical   1 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_including_json_asks_user   6 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_including_json_asks_user.mock_information   2 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_including_json_returns_empty_on_cancel   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewNIfTIOperations.test_including_json_returns_empty_if_not_exists   3 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewExplorer.test_open_in_explorer_success   5 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewExplorer.test_open_in_explorer_no_app_shows_warning   8 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewExplorer.test_open_in_explorer_no_app_shows_warning.mock_warning   1 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewExplorer.test_open_in_explorer_exception_shows_error   8 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewExplorer.test_open_in_explorer_exception_shows_error.mock_critical   1 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewRoleDialog.test_open_role_dialog_creates_dialog   6 0 0   100%
tests/ui/test_workspace_tree_view.py TestWorkspaceTreeViewRoleDialog.test_open_role_dialog_on_accept_emits_thread   7 0 0   100%
tests/ui/test_workspace_tree_view.py (no function)   62 1 0   98%
Total     17971 775 0   96%

No items found using the specified filter.