From 785959ec24e9c273512c240c3953a4af352b98fd Mon Sep 17 00:00:00 2001 From: Jann Stute <46534683+Computerdores@users.noreply.github.com> Date: Thu, 22 Jan 2026 07:47:29 +0100 Subject: [PATCH] fix: pyright errors in blender_renderer.py (#1236) --- src/tagstudio/qt/previews/renderer.py | 24 +++++++------------ .../qt/previews/vendored/blender_renderer.py | 6 +++-- src/tagstudio/qt/thumb_grid_layout.py | 2 +- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/tagstudio/qt/previews/renderer.py b/src/tagstudio/qt/previews/renderer.py index 54bc72d7..0e870bf3 100644 --- a/src/tagstudio/qt/previews/renderer.py +++ b/src/tagstudio/qt/previews/renderer.py @@ -790,25 +790,17 @@ class ThumbRenderer(QObject): ) im: Image.Image | None = None try: - blend_image = blend_thumb(str(filepath)) - - bg = Image.new("RGB", blend_image.size, color=bg_color) - bg.paste(blend_image, mask=blend_image.getchannel(3)) - im = bg - - except ( - AttributeError, - UnidentifiedImageError, - TypeError, - ) as e: - if str(e) == "expected string or buffer": + if (blend_image := blend_thumb(str(filepath))) is not None: + bg = Image.new("RGB", blend_image.size, color=bg_color) + bg.paste(blend_image, mask=blend_image.getchannel(3)) + im = bg + else: logger.info( f"[ThumbRenderer][BLENDER][INFO] {filepath.name} " - f"Doesn't have an embedded thumbnail. ({type(e).__name__})" + "Doesn't have an embedded thumbnail." ) - - else: - logger.error("Couldn't render thumbnail", filepath=filepath, error=type(e).__name__) + except Exception as e: + logger.error("Couldn't render thumbnail", filepath=filepath, error=type(e).__name__) return im @staticmethod diff --git a/src/tagstudio/qt/previews/vendored/blender_renderer.py b/src/tagstudio/qt/previews/vendored/blender_renderer.py index 012c1503..10e059e1 100644 --- a/src/tagstudio/qt/previews/vendored/blender_renderer.py +++ b/src/tagstudio/qt/previews/vendored/blender_renderer.py @@ -32,7 +32,7 @@ from io import BufferedReader from PIL import Image, ImageOps -def blend_extract_thumb(path): +def blend_extract_thumb(path) -> tuple[bytes | None, int, int]: rend = b"REND" test = b"TEST" @@ -97,8 +97,10 @@ def blend_extract_thumb(path): return image_buffer, x, y -def blend_thumb(file_in): +def blend_thumb(file_in) -> Image.Image | None: buf, width, height = blend_extract_thumb(file_in) + if buf is None: + return None image = Image.frombuffer( "RGBA", (width, height), diff --git a/src/tagstudio/qt/thumb_grid_layout.py b/src/tagstudio/qt/thumb_grid_layout.py index 27ad3114..5347fc88 100644 --- a/src/tagstudio/qt/thumb_grid_layout.py +++ b/src/tagstudio/qt/thumb_grid_layout.py @@ -383,7 +383,7 @@ class ThumbGridLayout(QLayout): @override def itemAt(self, index: int) -> QLayoutItem: if index >= len(self._items): - return None + return None # pyright: ignore[reportReturnType] return self._items[index] @override