From bcca08556e0e4657828c4b690d0fa657e489a524 Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Tue, 18 Aug 2026 14:05:35 -0700 Subject: [PATCH] chore: formatting pass --- src/tagstudio/core/library/alchemy/enums.py | 28 +++++++++---------- src/tagstudio/core/library/alchemy/models.py | 18 ++++++------ src/tagstudio/core/library/json/library.py | 2 +- src/tagstudio/core/query_lang/ast.py | 8 +++--- src/tagstudio/core/query_lang/tokenizer.py | 4 +-- src/tagstudio/core/utils/str_formatting.py | 2 +- src/tagstudio/i18n/translations.py | 2 +- src/tagstudio/previews/renderers/archive.py | 2 +- src/tagstudio/qt/app_settings.py | 2 +- .../qt/controllers/fix_ignored_modal.py | 2 +- src/tagstudio/qt/controllers/inspector.py | 2 +- .../qt/controllers/library_info_window.py | 2 +- src/tagstudio/qt/controllers/main_window.py | 10 +++---- .../merge_dupe_entries_progress.py | 2 +- src/tagstudio/qt/controllers/preview_thumb.py | 2 +- src/tagstudio/qt/controllers/search_panel.py | 2 +- src/tagstudio/qt/controllers/tag_box.py | 2 +- src/tagstudio/qt/mixed/color_box.py | 4 +-- src/tagstudio/qt/mixed/datetime_picker.py | 2 +- src/tagstudio/qt/mixed/drop_import_modal.py | 2 +- src/tagstudio/qt/mixed/field_containers.py | 4 +-- src/tagstudio/qt/mixed/field_widget.py | 2 +- src/tagstudio/qt/mixed/file_attributes.py | 2 +- src/tagstudio/qt/mixed/fix_dupe_files.py | 2 +- src/tagstudio/qt/mixed/fix_unlinked.py | 2 +- src/tagstudio/qt/mixed/folders_to_tags.py | 6 ++-- src/tagstudio/qt/mixed/item_thumb.py | 4 +-- src/tagstudio/qt/mixed/landing.py | 2 +- src/tagstudio/qt/mixed/media_player.py | 4 +-- src/tagstudio/qt/mixed/migration_modal.py | 2 +- .../qt/mixed/mirror_entries_modal.py | 2 +- .../qt/mixed/remove_ignored_modal.py | 2 +- .../qt/mixed/remove_unlinked_modal.py | 2 +- src/tagstudio/qt/mixed/settings_panel.py | 8 +++--- src/tagstudio/qt/mixed/tag_color_label.py | 2 +- src/tagstudio/qt/mixed/tag_color_manager.py | 2 +- src/tagstudio/qt/mixed/tag_color_preview.py | 2 +- src/tagstudio/qt/mixed/tag_widget.py | 2 +- src/tagstudio/qt/resource_manager.py | 2 +- .../qt/views/fix_ignored_modal_view.py | 2 +- src/tagstudio/qt/views/inspector_view.py | 2 +- .../qt/views/layouts/thumb_grid_layout.py | 2 +- .../qt/views/library_info_window_view.py | 2 +- src/tagstudio/qt/views/preview_thumb_view.py | 2 +- src/tagstudio/qt/views/tag_box_view.py | 2 +- 45 files changed, 82 insertions(+), 84 deletions(-) diff --git a/src/tagstudio/core/library/alchemy/enums.py b/src/tagstudio/core/library/alchemy/enums.py index 7e16199c..0c3c55c4 100644 --- a/src/tagstudio/core/library/alchemy/enums.py +++ b/src/tagstudio/core/library/alchemy/enums.py @@ -57,7 +57,7 @@ class TagColorEnum(enum.IntEnum): OLIVE = 37 @staticmethod - def get_color_from_str(color_name: str) -> "TagColorEnum": + def get_color_from_str(color_name: str) -> TagColorEnum: for color in TagColorEnum: if color.name == color_name.upper().replace(" ", "_"): return color @@ -99,17 +99,15 @@ class BrowsingState: return Parser(self.query).parse() @classmethod - def show_all(cls) -> "BrowsingState": + def show_all(cls) -> BrowsingState: return BrowsingState() @classmethod - def from_search_query(cls, search_query: str) -> "BrowsingState": + def from_search_query(cls, search_query: str) -> BrowsingState: return cls(query=search_query) @classmethod - def from_tag_id( - cls, tag_id: int | str, state: "BrowsingState | None" = None - ) -> "BrowsingState": + def from_tag_id(cls, tag_id: int | str, state: BrowsingState | None = None) -> BrowsingState: """Create and return a BrowsingState object given a tag ID. Args: @@ -124,35 +122,35 @@ class BrowsingState: return cls(query=f"tag_id:{str(tag_id)}") @classmethod - def from_path(cls, path: Path | str) -> "BrowsingState": + def from_path(cls, path: Path | str) -> BrowsingState: return cls(query=f'path:"{str(path).strip()}"') @classmethod - def from_mediatype(cls, mediatype: str) -> "BrowsingState": + def from_mediatype(cls, mediatype: str) -> BrowsingState: return cls(query=f"mediatype:{mediatype}") @classmethod - def from_filetype(cls, filetype: str) -> "BrowsingState": + def from_filetype(cls, filetype: str) -> BrowsingState: return cls(query=f"filetype:{filetype}") @classmethod - def from_tag_name(cls, tag_name: str) -> "BrowsingState": + def from_tag_name(cls, tag_name: str) -> BrowsingState: return cls(query=f'tag:"{tag_name}"') - def with_page_index(self, index: int) -> "BrowsingState": + def with_page_index(self, index: int) -> BrowsingState: return replace(self, page_index=index) - def with_sorting_mode(self, mode: SortingModeEnum) -> "BrowsingState": + def with_sorting_mode(self, mode: SortingModeEnum) -> BrowsingState: seed = self.random_seed if mode == SortingModeEnum.RANDOM: seed = random.random() return replace(self, sorting_mode=mode, random_seed=seed) - def with_sorting_direction(self, ascending: bool) -> "BrowsingState": + def with_sorting_direction(self, ascending: bool) -> BrowsingState: return replace(self, ascending=ascending) - def with_search_query(self, search_query: str) -> "BrowsingState": + def with_search_query(self, search_query: str) -> BrowsingState: return replace(self, query=search_query) - def with_show_hidden_entries(self, show_hidden_entries: bool) -> "BrowsingState": + def with_show_hidden_entries(self, show_hidden_entries: bool) -> BrowsingState: return replace(self, show_hidden_entries=show_hidden_entries) diff --git a/src/tagstudio/core/library/alchemy/models.py b/src/tagstudio/core/library/alchemy/models.py index c7bd0731..4daf42d5 100644 --- a/src/tagstudio/core/library/alchemy/models.py +++ b/src/tagstudio/core/library/alchemy/models.py @@ -41,7 +41,7 @@ class TagAlias(Base): id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(nullable=False) tag_id: Mapped[int] = mapped_column(ForeignKey("tags.id")) - tag: Mapped["Tag"] = relationship(back_populates="aliases") + tag: Mapped[Tag] = relationship(back_populates="aliases") def __init__(self, name: str, tag_id: int | None = None): self.name = name @@ -97,14 +97,14 @@ class Tag(Base): is_hidden: Mapped[bool] icon: Mapped[str | None] aliases: Mapped[set[TagAlias]] = relationship(back_populates="tag") - parent_tags: Mapped[set["Tag"]] = relationship( + parent_tags: Mapped[set[Tag]] = relationship( secondary=TagParent.__tablename__, primaryjoin="Tag.id == TagParent.child_id", secondaryjoin="Tag.id == TagParent.parent_id", back_populates="parent_tags", ) disambiguation_id: Mapped[int | None] - category_exclusions: Mapped[set["Tag"]] = relationship( + category_exclusions: Mapped[set[Tag]] = relationship( secondary=CategoryExclusion.__tablename__, primaryjoin="Tag.id == CategoryExclusion.tag_id", secondaryjoin="Tag.id == CategoryExclusion.category_id", @@ -140,14 +140,14 @@ class Tag(Base): id: int | None = None, shorthand: str | None = None, aliases: set[TagAlias] | None = None, - parent_tags: set["Tag"] | None = None, + parent_tags: set[Tag] | None = None, icon: str | None = None, color_namespace: str | None = None, color_slug: str | None = None, disambiguation_id: int | None = None, is_category: bool = False, is_hidden: bool = False, - category_exclusions: set["Tag"] | None = None, + category_exclusions: set[Tag] | None = None, ): self.name = name self.aliases = aliases or set() @@ -181,16 +181,16 @@ class Tag(Base): return False return self.id == value.id - def __lt__(self, other: "Tag") -> bool: + def __lt__(self, other: Tag) -> bool: return self.name < other.name - def __le__(self, other: "Tag") -> bool: + def __le__(self, other: Tag) -> bool: return self.name <= other.name - def __gt__(self, other: "Tag") -> bool: + def __gt__(self, other: Tag) -> bool: return self.name > other.name - def __ge__(self, other: "Tag") -> bool: + def __ge__(self, other: Tag) -> bool: return self.name >= other.name diff --git a/src/tagstudio/core/library/json/library.py b/src/tagstudio/core/library/json/library.py index e3370e2a..46f09f47 100644 --- a/src/tagstudio/core/library/json/library.py +++ b/src/tagstudio/core/library/json/library.py @@ -861,7 +861,7 @@ class Library: self.files_not_in_library, key=lambda t: -(self.library_dir / t).stat().st_ctime, ) - except (FileExistsError, FileNotFoundError): + except FileExistsError, FileNotFoundError: print( "[LIBRARY] [ERROR] Couldn't sort files, some were moved during the scanning/sorting process." ) diff --git a/src/tagstudio/core/query_lang/ast.py b/src/tagstudio/core/query_lang/ast.py index c8268ea4..25ebfcb6 100644 --- a/src/tagstudio/core/query_lang/ast.py +++ b/src/tagstudio/core/query_lang/ast.py @@ -16,7 +16,7 @@ class ConstraintType(Enum): Special = 5 @staticmethod - def from_string(text: str) -> "ConstraintType | None": + def from_string(text: str) -> ConstraintType | None: return { "tag": ConstraintType.Tag, "tag_id": ConstraintType.TagID, @@ -28,7 +28,7 @@ class ConstraintType(Enum): class AST: - parent: "AST | None" = None + parent: AST | None = None @override def __str__(self): @@ -65,9 +65,9 @@ class ORList(AST): class Constraint(AST): type: ConstraintType value: str - properties: list["Property"] + properties: list[Property] - def __init__(self, type: ConstraintType, value: str, properties: list["Property"]) -> None: + def __init__(self, type: ConstraintType, value: str, properties: list[Property]) -> None: super().__init__() for prop in properties: prop.parent = self diff --git a/src/tagstudio/core/query_lang/tokenizer.py b/src/tagstudio/core/query_lang/tokenizer.py index fc6e6685..45b04a09 100644 --- a/src/tagstudio/core/query_lang/tokenizer.py +++ b/src/tagstudio/core/query_lang/tokenizer.py @@ -39,11 +39,11 @@ class Token: self.end = end @staticmethod - def from_type(type: TokenType, pos: int) -> "Token": + def from_type(type: TokenType, pos: int) -> Token: return Token(type, None, pos, pos) @staticmethod - def EOF(pos: int) -> "Token": # noqa: N802 + def EOF(pos: int) -> Token: # noqa: N802 return Token.from_type(TokenType.EOF, pos) @override diff --git a/src/tagstudio/core/utils/str_formatting.py b/src/tagstudio/core/utils/str_formatting.py index 2f0f544d..3e8861ce 100644 --- a/src/tagstudio/core/utils/str_formatting.py +++ b/src/tagstudio/core/utils/str_formatting.py @@ -58,5 +58,5 @@ def format_duration(duration: int | float) -> str: hours, seconds = divmod(seconds, 3600) minutes, seconds = divmod(seconds, 60) return f"{hours}:{minutes:02}:{seconds:02}" if hours else f"{minutes}:{seconds:02}" - except (OverflowError, ValueError): + except OverflowError, ValueError: return "-:--" diff --git a/src/tagstudio/i18n/translations.py b/src/tagstudio/i18n/translations.py index 7c9c0195..23ca1d6c 100644 --- a/src/tagstudio/i18n/translations.py +++ b/src/tagstudio/i18n/translations.py @@ -86,7 +86,7 @@ class Translator: def __format(self, text: str, **kwargs: ...) -> str: try: return text.format(**kwargs) - except (KeyError, ValueError): + except KeyError, ValueError: logger.error( "[Translations] Error while formatting translation.", text=text, diff --git a/src/tagstudio/previews/renderers/archive.py b/src/tagstudio/previews/renderers/archive.py index d2918e51..418d1e38 100644 --- a/src/tagstudio/previews/renderers/archive.py +++ b/src/tagstudio/previews/renderers/archive.py @@ -52,7 +52,7 @@ class TarFile: def read(self, name: str) -> bytes: return unwrap(self.tar.extractfile(name)).read() - def __enter__(self) -> "TarFile": + def __enter__(self) -> TarFile: self.tar = tarfile.open(name=self.filepath, mode=self.mode).__enter__() return self diff --git a/src/tagstudio/qt/app_settings.py b/src/tagstudio/qt/app_settings.py index 5817e4a6..450fa788 100644 --- a/src/tagstudio/qt/app_settings.py +++ b/src/tagstudio/qt/app_settings.py @@ -88,7 +88,7 @@ class AppSettings(BaseModel): loaded_from: Path = Field(default=DEFAULT_GLOBAL_SETTINGS_PATH, exclude=True) @staticmethod - def read_settings(path: Path = DEFAULT_GLOBAL_SETTINGS_PATH) -> "AppSettings": + def read_settings(path: Path = DEFAULT_GLOBAL_SETTINGS_PATH) -> AppSettings: if path.exists(): with open(path) as file: filecontents = file.read() diff --git a/src/tagstudio/qt/controllers/fix_ignored_modal.py b/src/tagstudio/qt/controllers/fix_ignored_modal.py index 341469e0..4704a7f8 100644 --- a/src/tagstudio/qt/controllers/fix_ignored_modal.py +++ b/src/tagstudio/qt/controllers/fix_ignored_modal.py @@ -24,7 +24,7 @@ logger = structlog.get_logger(__name__) # TODO: Use newer MVC style guidelines class FixIgnoredEntriesModal(FixIgnoredEntriesModalView): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__(library, driver) self.tracker = IgnoredRegistry(self.lib) diff --git a/src/tagstudio/qt/controllers/inspector.py b/src/tagstudio/qt/controllers/inspector.py index b20871be..4e98c546 100644 --- a/src/tagstudio/qt/controllers/inspector.py +++ b/src/tagstudio/qt/controllers/inspector.py @@ -45,7 +45,7 @@ class _ItemMode(IntEnum): class Inspector(QWidget): - def __init__(self, driver: "QtDriver") -> None: + def __init__(self, driver: QtDriver) -> None: super().__init__() self._driver = driver self._lib = self._driver.lib diff --git a/src/tagstudio/qt/controllers/library_info_window.py b/src/tagstudio/qt/controllers/library_info_window.py index 9dddd034..1f18cfac 100644 --- a/src/tagstudio/qt/controllers/library_info_window.py +++ b/src/tagstudio/qt/controllers/library_info_window.py @@ -33,7 +33,7 @@ logger = structlog.get_logger(__name__) # TODO: Use newer MVC style guidelines class LibraryInfoWindow(LibraryInfoWindowView): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__(library, driver) # Statistics Buttons diff --git a/src/tagstudio/qt/controllers/main_window.py b/src/tagstudio/qt/controllers/main_window.py index 6bf6b9fb..98eeb4ba 100644 --- a/src/tagstudio/qt/controllers/main_window.py +++ b/src/tagstudio/qt/controllers/main_window.py @@ -458,7 +458,7 @@ class MainWindow(QMainWindow): (Translations["home.thumbnail_size.mini"], 76), ] - def __init__(self, driver: "QtDriver", parent: QWidget | None = None) -> None: + def __init__(self, driver: QtDriver, parent: QWidget | None = None) -> None: super().__init__(parent) self.rm = ResourceManager() @@ -529,7 +529,7 @@ class MainWindow(QMainWindow): # endregion - def setup_central_widget(self, driver: "QtDriver"): + def setup_central_widget(self, driver: QtDriver): self.central_widget = QWidget(self) self.central_widget.setObjectName("central_widget") self.central_layout = QGridLayout(self.central_widget) @@ -651,7 +651,7 @@ class MainWindow(QMainWindow): self.central_layout.addLayout(self.extra_input_layout, 5, 0, 1, 1) - def setup_content(self, driver: "QtDriver"): + def setup_content(self, driver: QtDriver): self.content_layout = QHBoxLayout() self.content_layout.setObjectName("content_layout") @@ -667,7 +667,7 @@ class MainWindow(QMainWindow): self.central_layout.addLayout(self.content_layout, 10, 0, 1, 1) - def setup_entry_list(self, driver: "QtDriver"): + def setup_entry_list(self, driver: QtDriver): self.entry_list_container = QWidget() self.entry_list_layout = QVBoxLayout(self.entry_list_container) self.entry_list_layout.setSpacing(0) @@ -700,7 +700,7 @@ class MainWindow(QMainWindow): self.entry_list_layout.addWidget(self.pagination) self.content_splitter.addWidget(self.entry_list_container) - def setup_preview_panel(self, driver: "QtDriver"): + def setup_preview_panel(self, driver: QtDriver): self.preview_panel = Inspector(driver) self.content_splitter.addWidget(self.preview_panel) diff --git a/src/tagstudio/qt/controllers/merge_dupe_entries_progress.py b/src/tagstudio/qt/controllers/merge_dupe_entries_progress.py index d7973379..db73ea17 100644 --- a/src/tagstudio/qt/controllers/merge_dupe_entries_progress.py +++ b/src/tagstudio/qt/controllers/merge_dupe_entries_progress.py @@ -18,7 +18,7 @@ if typing.TYPE_CHECKING: class MergeDuplicateEntriesProgress(QObject): done = Signal() - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.lib = library self.driver = driver diff --git a/src/tagstudio/qt/controllers/preview_thumb.py b/src/tagstudio/qt/controllers/preview_thumb.py index d20723a2..8e99d2df 100644 --- a/src/tagstudio/qt/controllers/preview_thumb.py +++ b/src/tagstudio/qt/controllers/preview_thumb.py @@ -33,7 +33,7 @@ Image.MAX_IMAGE_PIXELS = None # TODO: Use newer MVC style guidelines class PreviewThumb(PreviewThumbView): - def __init__(self, library: Library, driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__(library, driver) self.__driver: QtDriver = driver diff --git a/src/tagstudio/qt/controllers/search_panel.py b/src/tagstudio/qt/controllers/search_panel.py index 9518ac1e..0a34b4dc 100644 --- a/src/tagstudio/qt/controllers/search_panel.py +++ b/src/tagstudio/qt/controllers/search_panel.py @@ -78,7 +78,7 @@ class SearchPanel[T](ModalContent): self.setMinimumSize(300, 400) self.connect_callbacks(self) - def connect_callbacks(self, controller: "SearchPanel[Any]") -> None: # pyright: ignore[reportExplicitAny] + def connect_callbacks(self, controller: SearchPanel[Any]) -> None: # pyright: ignore[reportExplicitAny] self.layout().limit_combobox.currentIndexChanged.connect(controller.on_limit_changed) self.layout().search_field.textChanged.connect(controller.on_search_query_changed) self.layout().search_field.returnPressed.connect( diff --git a/src/tagstudio/qt/controllers/tag_box.py b/src/tagstudio/qt/controllers/tag_box.py index a6bdcbd8..f174522e 100644 --- a/src/tagstudio/qt/controllers/tag_box.py +++ b/src/tagstudio/qt/controllers/tag_box.py @@ -28,7 +28,7 @@ class TagBoxWidget(TagBoxWidgetView): __entries: list[int] = [] - def __init__(self, title: str, driver: "QtDriver"): + def __init__(self, title: str, driver: QtDriver): super().__init__(title, driver) self.__driver = driver diff --git a/src/tagstudio/qt/mixed/color_box.py b/src/tagstudio/qt/mixed/color_box.py index 39a0577d..71b83b3f 100644 --- a/src/tagstudio/qt/mixed/color_box.py +++ b/src/tagstudio/qt/mixed/color_box.py @@ -33,8 +33,8 @@ class ColorBoxWidget(FieldWidget): def __init__( self, group: str, - colors: list["TagColorGroup"], - library: "Library", + colors: list[TagColorGroup], + library: Library, ) -> None: self.namespace = group self.colors: list[TagColorGroup] = colors diff --git a/src/tagstudio/qt/mixed/datetime_picker.py b/src/tagstudio/qt/mixed/datetime_picker.py index cca8e91f..ef5bb4cf 100644 --- a/src/tagstudio/qt/mixed/datetime_picker.py +++ b/src/tagstudio/qt/mixed/datetime_picker.py @@ -41,7 +41,7 @@ def qdtf2dtf(dtf: str) -> str: # TODO: Split to use MVC guidelines. class DatetimePicker(ModalContent): - def __init__(self, driver: "QtDriver", name: str, datetime: dt | str): + def __init__(self, driver: QtDriver, name: str, datetime: dt | str): super().__init__() self.setMinimumSize(300, 60) self.root_layout = QVBoxLayout(self) diff --git a/src/tagstudio/qt/mixed/drop_import_modal.py b/src/tagstudio/qt/mixed/drop_import_modal.py index df2da028..85909758 100644 --- a/src/tagstudio/qt/mixed/drop_import_modal.py +++ b/src/tagstudio/qt/mixed/drop_import_modal.py @@ -34,7 +34,7 @@ class DuplicateChoice(enum.StrEnum): class DropImportModal(QWidget): DUPE_NAME_LIMT: int = 5 - def __init__(self, driver: "QtDriver"): + def __init__(self, driver: QtDriver): super().__init__() self.driver: QtDriver = driver diff --git a/src/tagstudio/qt/mixed/field_containers.py b/src/tagstudio/qt/mixed/field_containers.py index 2997731c..daf57109 100644 --- a/src/tagstudio/qt/mixed/field_containers.py +++ b/src/tagstudio/qt/mixed/field_containers.py @@ -50,7 +50,7 @@ class FieldContainers(QWidget): on_tags_update = Signal() - def __init__(self, library: Library, driver: "QtDriver") -> None: + def __init__(self, library: Library, driver: QtDriver) -> None: super().__init__() self.lib = library @@ -321,7 +321,7 @@ class FieldContainers(QWidget): text = self.driver.settings.format_datetime( DatetimePicker.string2dt(field.value) ) - except (ValueError, AssertionError): + except ValueError, AssertionError: text = str(field.value) else: text = f"{Translations['field.mixed_data']}" diff --git a/src/tagstudio/qt/mixed/field_widget.py b/src/tagstudio/qt/mixed/field_widget.py index 914ab7f6..aceb4e7f 100644 --- a/src/tagstudio/qt/mixed/field_widget.py +++ b/src/tagstudio/qt/mixed/field_widget.py @@ -136,7 +136,7 @@ class FieldContainer(QWidget): if callback: self.remove_button.clicked.connect(callback) - def set_inner_widget(self, widget: "FieldWidget") -> None: + def set_inner_widget(self, widget: FieldWidget) -> None: if self.field_layout.itemAt(0): old: QWidget = self.field_layout.itemAt(0).widget() self.field_layout.removeWidget(old) diff --git a/src/tagstudio/qt/mixed/file_attributes.py b/src/tagstudio/qt/mixed/file_attributes.py index 9409bb66..e37dfba0 100644 --- a/src/tagstudio/qt/mixed/file_attributes.py +++ b/src/tagstudio/qt/mixed/file_attributes.py @@ -42,7 +42,7 @@ class FileAttributeData: # TODO: Split to use MVC guidelines. class FileAttributes(QWidget): - def __init__(self, library: Library, driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() root_layout = QVBoxLayout(self) root_layout.setContentsMargins(0, 0, 0, 0) diff --git a/src/tagstudio/qt/mixed/fix_dupe_files.py b/src/tagstudio/qt/mixed/fix_dupe_files.py index cc275c44..cfd5f48f 100644 --- a/src/tagstudio/qt/mixed/fix_dupe_files.py +++ b/src/tagstudio/qt/mixed/fix_dupe_files.py @@ -28,7 +28,7 @@ if TYPE_CHECKING: # TODO: Split to use MVC guidelines. class FixDupeFilesModal(QWidget): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.lib = library self.driver = driver diff --git a/src/tagstudio/qt/mixed/fix_unlinked.py b/src/tagstudio/qt/mixed/fix_unlinked.py index 56237134..39cad7c7 100644 --- a/src/tagstudio/qt/mixed/fix_unlinked.py +++ b/src/tagstudio/qt/mixed/fix_unlinked.py @@ -24,7 +24,7 @@ if TYPE_CHECKING: # TODO: Split to use MVC guidelines. class FixUnlinkedEntriesModal(QWidget): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.lib = library self.driver = driver diff --git a/src/tagstudio/qt/mixed/folders_to_tags.py b/src/tagstudio/qt/mixed/folders_to_tags.py index 45908b0b..b3dd8b3c 100644 --- a/src/tagstudio/qt/mixed/folders_to_tags.py +++ b/src/tagstudio/qt/mixed/folders_to_tags.py @@ -6,6 +6,7 @@ import math from collections.abc import Sequence from dataclasses import dataclass, field from typing import TYPE_CHECKING, override +from warnings import deprecated import structlog from PySide6 import QtCore, QtGui @@ -19,7 +20,6 @@ from PySide6.QtWidgets import ( QVBoxLayout, QWidget, ) -from typing_extensions import deprecated from tagstudio.core.constants import TAG_ARCHIVED, TAG_FAVORITE from tagstudio.core.library.alchemy.enums import TagColorEnum @@ -39,7 +39,7 @@ logger = structlog.get_logger(__name__) @dataclass class BranchData: - dirs: dict[str, "BranchData"] = field(default_factory=dict) + dirs: dict[str, BranchData] = field(default_factory=dict) files: list[str] = field(default_factory=list) tag: Tag | None = None @@ -165,7 +165,7 @@ def generate_preview_data(library: Library) -> BranchData: class FoldersToTagsModal(QWidget): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.library = library self.driver = driver diff --git a/src/tagstudio/qt/mixed/item_thumb.py b/src/tagstudio/qt/mixed/item_thumb.py index 6ebf8707..b89a2f20 100644 --- a/src/tagstudio/qt/mixed/item_thumb.py +++ b/src/tagstudio/qt/mixed/item_thumb.py @@ -96,7 +96,7 @@ class ItemThumb(FlowWidget): self, mode: ItemType | None, library: Library, - driver: "QtDriver", + driver: QtDriver, thumb_size: tuple[int, int], show_filename_label: bool = False, ): @@ -440,7 +440,7 @@ class ItemThumb(FlowWidget): self.thumb_button.setMinimumSize(size) self.thumb_button.setMaximumSize(size) - def set_item(self, entry: "Entry"): + def set_item(self, entry: Entry): self.set_item_id(entry.id) path = unwrap(self.lib.library_dir) / entry.path self.set_item_path(path) diff --git a/src/tagstudio/qt/mixed/landing.py b/src/tagstudio/qt/mixed/landing.py index a738ac0f..30d042a5 100644 --- a/src/tagstudio/qt/mixed/landing.py +++ b/src/tagstudio/qt/mixed/landing.py @@ -29,7 +29,7 @@ class LandingWidget(QWidget): mono_logo: Image.Image = rm.ts_logo_text_mono color_logo: Image.Image = rm.ts_logo_text_color - def __init__(self, driver: "QtDriver", pixel_ratio: float): + def __init__(self, driver: QtDriver, pixel_ratio: float): super().__init__() self.driver = driver self.logo_label: ClickableLabel = ClickableLabel() diff --git a/src/tagstudio/qt/mixed/media_player.py b/src/tagstudio/qt/mixed/media_player.py index 7de45359..a8029a31 100644 --- a/src/tagstudio/qt/mixed/media_player.py +++ b/src/tagstudio/qt/mixed/media_player.py @@ -53,9 +53,9 @@ class MediaPlayer(QGraphicsView): Gives a basic control set to manage media playback. """ - video_preview: "VideoPreview | None" = None + video_preview: VideoPreview | None = None - def __init__(self, driver: "QtDriver") -> None: + def __init__(self, driver: QtDriver) -> None: super().__init__() self.driver = driver self.play_icon = QPixmap.fromImage( diff --git a/src/tagstudio/qt/mixed/migration_modal.py b/src/tagstudio/qt/mixed/migration_modal.py index 65457e10..43edc894 100644 --- a/src/tagstudio/qt/mixed/migration_modal.py +++ b/src/tagstudio/qt/mixed/migration_modal.py @@ -5,6 +5,7 @@ import traceback from pathlib import Path from typing import cast +from warnings import deprecated import structlog import wcmatch.fnmatch as fnmatch @@ -23,7 +24,6 @@ from PySide6.QtWidgets import ( ) from sqlalchemy import select from sqlalchemy.orm import Session -from typing_extensions import deprecated from tagstudio.core.constants import ( IGNORE_NAME, diff --git a/src/tagstudio/qt/mixed/mirror_entries_modal.py b/src/tagstudio/qt/mixed/mirror_entries_modal.py index 66b964ce..3ec9ea61 100644 --- a/src/tagstudio/qt/mixed/mirror_entries_modal.py +++ b/src/tagstudio/qt/mixed/mirror_entries_modal.py @@ -22,7 +22,7 @@ if typing.TYPE_CHECKING: class MirrorEntriesModal(QWidget): done = Signal() - def __init__(self, driver: "QtDriver", tracker: DupeFilesRegistry): + def __init__(self, driver: QtDriver, tracker: DupeFilesRegistry): super().__init__() self.driver = driver self.setWindowTitle(Translations["entries.mirror.window_title"]) diff --git a/src/tagstudio/qt/mixed/remove_ignored_modal.py b/src/tagstudio/qt/mixed/remove_ignored_modal.py index 0870770e..3787ba75 100644 --- a/src/tagstudio/qt/mixed/remove_ignored_modal.py +++ b/src/tagstudio/qt/mixed/remove_ignored_modal.py @@ -22,7 +22,7 @@ if TYPE_CHECKING: class RemoveIgnoredModal(QWidget): done = Signal() - def __init__(self, driver: "QtDriver", tracker: IgnoredRegistry): + def __init__(self, driver: QtDriver, tracker: IgnoredRegistry): super().__init__() self.driver = driver self.tracker = tracker diff --git a/src/tagstudio/qt/mixed/remove_unlinked_modal.py b/src/tagstudio/qt/mixed/remove_unlinked_modal.py index ff6bbcf1..d34fa02b 100644 --- a/src/tagstudio/qt/mixed/remove_unlinked_modal.py +++ b/src/tagstudio/qt/mixed/remove_unlinked_modal.py @@ -22,7 +22,7 @@ if TYPE_CHECKING: class RemoveUnlinkedEntriesModal(QWidget): done = Signal() - def __init__(self, driver: "QtDriver", tracker: UnlinkedRegistry): + def __init__(self, driver: QtDriver, tracker: UnlinkedRegistry): super().__init__() self.driver = driver self.tracker = tracker diff --git a/src/tagstudio/qt/mixed/settings_panel.py b/src/tagstudio/qt/mixed/settings_panel.py index 3a104398..393616b0 100644 --- a/src/tagstudio/qt/mixed/settings_panel.py +++ b/src/tagstudio/qt/mixed/settings_panel.py @@ -41,7 +41,7 @@ logger = structlog.get_logger(__name__) # TODO: Split to use MVC guidelines. class SettingsPanel(ModalContent): - driver: "QtDriver" + driver: QtDriver filepath_option_map: dict[ShowFilepathOption, str] = { ShowFilepathOption.SHOW_FULL_PATHS: Translations["settings.filepath.option.full"], @@ -88,7 +88,7 @@ class SettingsPanel(ModalContent): "%Y.%m.%d": "2024.08.21", } - def __init__(self, driver: "QtDriver"): + def __init__(self, driver: QtDriver): super().__init__() # set these "constants" because language will be loaded from config shortly after startup # and we want to use the current language for the dropdowns @@ -400,7 +400,7 @@ class SettingsPanel(ModalContent): "splash": self.splash_combobox.currentData(), } - def update_settings(self, driver: "QtDriver"): + def update_settings(self, driver: QtDriver): settings = self.get_settings() driver.settings.language = settings["language"] @@ -440,7 +440,7 @@ class SettingsPanel(ModalContent): ) @classmethod - def build_modal(cls, driver: "QtDriver") -> Modal: + def build_modal(cls, driver: QtDriver) -> Modal: settings_panel = cls(driver) modal = Modal( diff --git a/src/tagstudio/qt/mixed/tag_color_label.py b/src/tagstudio/qt/mixed/tag_color_label.py index bcbea886..abb09100 100644 --- a/src/tagstudio/qt/mixed/tag_color_label.py +++ b/src/tagstudio/qt/mixed/tag_color_label.py @@ -41,7 +41,7 @@ class TagColorLabel(QWidget): color: TagColorGroup | None, has_edit: bool, has_remove: bool, - library: "Library | None" = None, + library: Library | None = None, ) -> None: super().__init__() self.color = color diff --git a/src/tagstudio/qt/mixed/tag_color_manager.py b/src/tagstudio/qt/mixed/tag_color_manager.py index 12df1b4f..f0c1a15f 100644 --- a/src/tagstudio/qt/mixed/tag_color_manager.py +++ b/src/tagstudio/qt/mixed/tag_color_manager.py @@ -42,7 +42,7 @@ class TagColorManager(QWidget): def __init__( self, - driver: "QtDriver", + driver: QtDriver, ): super().__init__() self.driver = driver diff --git a/src/tagstudio/qt/mixed/tag_color_preview.py b/src/tagstudio/qt/mixed/tag_color_preview.py index 098569e2..7ad40e65 100644 --- a/src/tagstudio/qt/mixed/tag_color_preview.py +++ b/src/tagstudio/qt/mixed/tag_color_preview.py @@ -32,7 +32,7 @@ class TagColorPreview(QWidget): def __init__( self, - library: "Library", + library: Library, tag_color_group: TagColorGroup | None, ) -> None: super().__init__() diff --git a/src/tagstudio/qt/mixed/tag_widget.py b/src/tagstudio/qt/mixed/tag_widget.py index c65ab366..05b9ca28 100644 --- a/src/tagstudio/qt/mixed/tag_widget.py +++ b/src/tagstudio/qt/mixed/tag_widget.py @@ -111,7 +111,7 @@ class TagWidget(QWidget): tag: Tag | None def __init__( - self, tag: Tag | None, has_edit: bool, has_remove: bool, library: "Library | None" = None + self, tag: Tag | None, has_edit: bool, has_remove: bool, library: Library | None = None ) -> None: super().__init__() self.tag = tag diff --git a/src/tagstudio/qt/resource_manager.py b/src/tagstudio/qt/resource_manager.py index d769a4ce..7eb28ddf 100644 --- a/src/tagstudio/qt/resource_manager.py +++ b/src/tagstudio/qt/resource_manager.py @@ -20,7 +20,7 @@ class ResourceManager: _map: dict[str, dict[str, str]] = {} _cache: dict[str, bytes | str | Image.Image | QPixmap] = {} - _instance: "ResourceManager | None" = None + _instance: ResourceManager | None = None def __new__(cls): if ResourceManager._instance is None: diff --git a/src/tagstudio/qt/views/fix_ignored_modal_view.py b/src/tagstudio/qt/views/fix_ignored_modal_view.py index a164c4a2..1e9d9224 100644 --- a/src/tagstudio/qt/views/fix_ignored_modal_view.py +++ b/src/tagstudio/qt/views/fix_ignored_modal_view.py @@ -18,7 +18,7 @@ if TYPE_CHECKING: # TODO: Use newer MVC style guidelines class FixIgnoredEntriesModalView(QWidget): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.lib = library self.driver = driver diff --git a/src/tagstudio/qt/views/inspector_view.py b/src/tagstudio/qt/views/inspector_view.py index a0732ac1..3195d0e2 100644 --- a/src/tagstudio/qt/views/inspector_view.py +++ b/src/tagstudio/qt/views/inspector_view.py @@ -28,7 +28,7 @@ logger = structlog.get_logger(__name__) class InspectorView(QVBoxLayout): - def __init__(self, driver: "QtDriver", pixel_ratio: float) -> None: + def __init__(self, driver: QtDriver, pixel_ratio: float) -> None: super().__init__() self.setContentsMargins(0, 0, 0, 0) self.setSpacing(6) diff --git a/src/tagstudio/qt/views/layouts/thumb_grid_layout.py b/src/tagstudio/qt/views/layouts/thumb_grid_layout.py index 12c2e68f..a3b44b4c 100644 --- a/src/tagstudio/qt/views/layouts/thumb_grid_layout.py +++ b/src/tagstudio/qt/views/layouts/thumb_grid_layout.py @@ -27,7 +27,7 @@ class ThumbGridLayout(QLayout): # Id of first visible entry visible_changed = Signal(int) - def __init__(self, driver: "QtDriver", scroll_area: QScrollArea) -> None: + def __init__(self, driver: QtDriver, scroll_area: QScrollArea) -> None: super().__init__(None) self.driver: QtDriver = driver self.scroll_area: QScrollArea = scroll_area diff --git a/src/tagstudio/qt/views/library_info_window_view.py b/src/tagstudio/qt/views/library_info_window_view.py index 46cecd6c..623066ed 100644 --- a/src/tagstudio/qt/views/library_info_window_view.py +++ b/src/tagstudio/qt/views/library_info_window_view.py @@ -34,7 +34,7 @@ if TYPE_CHECKING: # TODO: Use newer MVC style guidelines class LibraryInfoWindowView(QWidget): - def __init__(self, library: "Library", driver: "QtDriver"): + def __init__(self, library: Library, driver: QtDriver): super().__init__() self.lib = library self.driver = driver diff --git a/src/tagstudio/qt/views/preview_thumb_view.py b/src/tagstudio/qt/views/preview_thumb_view.py index f3ca286a..5fcb922f 100644 --- a/src/tagstudio/qt/views/preview_thumb_view.py +++ b/src/tagstudio/qt/views/preview_thumb_view.py @@ -44,7 +44,7 @@ class PreviewThumbView(QWidget): __should_render_on_resize: bool __rendered_res: tuple[int, int] - def __init__(self, library: Library, driver: "QtDriver") -> None: + def __init__(self, library: Library, driver: QtDriver) -> None: super().__init__() self._driver = driver diff --git a/src/tagstudio/qt/views/tag_box_view.py b/src/tagstudio/qt/views/tag_box_view.py index 0d3ddde1..f66829a2 100644 --- a/src/tagstudio/qt/views/tag_box_view.py +++ b/src/tagstudio/qt/views/tag_box_view.py @@ -23,7 +23,7 @@ logger = structlog.get_logger(__name__) class TagBoxWidgetView(FieldWidget): __lib: Library - def __init__(self, title: str, driver: "QtDriver") -> None: + def __init__(self, title: str, driver: QtDriver) -> None: super().__init__(title) self.__lib = driver.lib