diff --git a/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py b/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py index 011479203..01da14a97 100644 --- a/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py @@ -80,7 +80,7 @@ def merge_dupe_entries(self): ) for i, entries in enumerate(self.groups): + yield i remove_ids = entries[1:] logger.info("Removing entries group", ids=remove_ids) self.library.remove_entries([e.id for e in remove_ids]) - yield i - 1 # The -1 waits for the next step to finish diff --git a/src/tagstudio/core/library/alchemy/registries/ignored_registry.py b/src/tagstudio/core/library/alchemy/registries/ignored_registry.py index 0748875a1..5afa6636d 100644 --- a/src/tagstudio/core/library/alchemy/registries/ignored_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/ignored_registry.py @@ -35,12 +35,12 @@ def refresh_ignored_entries(self) -> Iterator[int]: self.ignored_entries = [] for i, entry in enumerate(self.lib.all_entries()): + yield i if not Ignore.compiled_patterns: # If the compiled_patterns has malfunctioned, don't consider that a false positive yield i elif Ignore.compiled_patterns.match(entry.path): self.ignored_entries.append(entry) - yield i def remove_ignored_entries(self) -> None: self.lib.remove_entries(list(map(lambda ignored: ignored.id, self.ignored_entries))) diff --git a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py index 3f2e85394..0e876ac5c 100644 --- a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py @@ -38,10 +38,10 @@ def refresh_unlinked_files(self) -> Iterator[int]: self.unlinked_entries = [] for i, entry in enumerate(self.lib.all_entries()): + yield i full_path = unwrap(self.lib.library_dir) / entry.path if not full_path.exists() or not full_path.is_file(): self.unlinked_entries.append(entry) - yield i def match_unlinked_file_entry(self, match_entry: Entry) -> list[Path]: """Try and match unlinked file entries with matching results in the library directory. @@ -72,6 +72,7 @@ def fix_unlinked_entries(self) -> Iterator[int]: self.files_fixed_count = 0 matched_entries: list[Entry] = [] for i, entry in enumerate(self.unlinked_entries): + yield i item_matches = self.match_unlinked_file_entry(entry) if len(item_matches) == 1: logger.info( @@ -88,7 +89,6 @@ def fix_unlinked_entries(self) -> Iterator[int]: continue self.files_fixed_count += 1 matched_entries.append(entry) - yield i for entry in matched_entries: self.unlinked_entries.remove(entry) diff --git a/src/tagstudio/qt/mixed/drop_import_modal.py b/src/tagstudio/qt/mixed/drop_import_modal.py index 570448b54..415302bb9 100644 --- a/src/tagstudio/qt/mixed/drop_import_modal.py +++ b/src/tagstudio/qt/mixed/drop_import_modal.py @@ -167,9 +167,9 @@ def begin_transfer(self, choice: DuplicateChoice | None = None): def displayed_text(x): return Translations.format( "drop_import.progress.label.singular" - if x[0] + 1 == 1 + if x[0] == 1 else "drop_import.progress.label.plural", - count=x[0] + 1, + count=x[0], suffix=f" {x[1]} {self.choice.value}" if self.choice else "", ) @@ -193,6 +193,7 @@ def copy_files(self): file_count = 0 duplicated_files_progress = 0 for file in self.files: + yield [file_count, duplicated_files_progress] if file.is_dir(): continue @@ -213,7 +214,6 @@ def copy_files(self): shutil.copyfile(file, unwrap(self.driver.lib.library_dir) / dest_file) file_count += 1 - yield [file_count, duplicated_files_progress] def _get_relative_path(self, path: Path) -> Path: for dir in self.dirs_in_root: diff --git a/src/tagstudio/qt/mixed/mirror_entries_modal.py b/src/tagstudio/qt/mixed/mirror_entries_modal.py index d06627a63..07714088b 100644 --- a/src/tagstudio/qt/mixed/mirror_entries_modal.py +++ b/src/tagstudio/qt/mixed/mirror_entries_modal.py @@ -73,7 +73,7 @@ def refresh_list(self): def mirror_entries(self): def displayed_text(x): return Translations.format( - "entries.mirror.label", idx=x + 1, count=self.tracker.groups_count + "entries.mirror.label", idx=x, total=self.tracker.groups_count ) pw = ProgressWidget( @@ -94,9 +94,9 @@ def mirror_entries_runnable(self): mirrored: list = [] lib = self.driver.lib for i, entries in enumerate(self.tracker.groups): + yield i lib.mirror_entry_fields(entries) sleep(0.005) - yield i for d in mirrored: self.tracker.groups.remove(d) diff --git a/src/tagstudio/qt/mixed/progress_bar.py b/src/tagstudio/qt/mixed/progress_bar.py index ef1bb66a3..cc413c5d9 100644 --- a/src/tagstudio/qt/mixed/progress_bar.py +++ b/src/tagstudio/qt/mixed/progress_bar.py @@ -45,14 +45,17 @@ def update_progress(self, value: int): def _update_progress_unknown_iterable(self, value): if hasattr(value, "__getitem__"): - self.update_progress(value[0] + 1) + self.update_progress(value[0]) else: - self.update_progress(value + 1) + self.update_progress(value) def from_iterable_function( self, function: Callable, update_label_callback: Callable | None, *done_callbacks ): - """Display the progress widget from a threaded iterable function.""" + """Display the progress widget from a threaded iterable function. + + Method expects the iterable to yield the number of completed objects. + """ iterator = FunctionIterator(function) iterator.value.connect(lambda x: self._update_progress_unknown_iterable(x)) if update_label_callback: