From 99b40e3f54bcde4a28b4d8c015e0b826dc1f92b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Thu, 27 Nov 2025 12:41:07 +0100 Subject: [PATCH] fix: patch basicsr compatibility with torchvision 0.18+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The functional_tensor module was removed in torchvision 0.18+. Added compatibility shim to create a fake module that basicsr can import. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/processing/models.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/processing/models.py b/src/processing/models.py index 3c94938..8613e62 100644 --- a/src/processing/models.py +++ b/src/processing/models.py @@ -1,6 +1,7 @@ """Model management for Real-ESRGAN and GFPGAN.""" import logging +import sys import time from pathlib import Path from threading import Lock @@ -10,6 +11,21 @@ import requests import torch from tqdm import tqdm +# Patch for basicsr compatibility with torchvision 0.18+ +# The functional_tensor module was removed, but basicsr still imports from it +import torchvision.transforms.functional as TF + +if not hasattr(TF, "rgb_to_grayscale"): + TF.rgb_to_grayscale = TF.to_grayscale + +# Create a fake module to satisfy basicsr's import +if "torchvision.transforms.functional_tensor" not in sys.modules: + + class FakeFunctionalTensor: + rgb_to_grayscale = TF.rgb_to_grayscale + + sys.modules["torchvision.transforms.functional_tensor"] = FakeFunctionalTensor() + from src.config import MODEL_REGISTRY, MODELS_DIR, ModelInfo, config logger = logging.getLogger(__name__)