diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ec57ad7b..5f45ca92 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -17,6 +17,11 @@ updates: prefix: "deps(pip)" include: "scope" rebase-strategy: "auto" + # These floors follow ComfyUI's requirements.txt, never the newest release. + ignore: + - dependency-name: "Pillow" + - dependency-name: "aiohttp" + - dependency-name: "numpy" # Optional: group non-breaking updates to reduce PR noise groups: python-minor-and-patch: diff --git a/pyproject.toml b/pyproject.toml index 7a065ad3..befbeaad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ description = "A powerful ComfyUI custom node that extends the standard text enc version = "3.4.1" license = {file = "LICENSE"} requires-python = ">=3.12" -dependencies = ["watchdog>=2.1.0", "Pillow>=8.0.0"] +dependencies = ["watchdog>=2.1.0", "Pillow>=10.1.0"] [build-system] requires = ["setuptools>=84.2.1"] diff --git a/requirements-dev.txt b/requirements-dev.txt index 6db215e2..325ba00a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,11 +1,11 @@ -# Runtime dependencies +# Runtime dependencies (Pillow, aiohttp and numpy floors match ComfyUI requirements.txt) watchdog>=6.0.0 -Pillow>=12.3.0 -aiohttp>=3.14.5 +Pillow>=10.1.0 +aiohttp>=3.11.8 # Tests and coverage coverage>=7.16.2 -numpy>=2.2.6 # WD14 engine tests +numpy>=1.25.0 # WD14 engine tests # Code quality black==26.10.1 diff --git a/requirements.txt b/requirements.txt index 550aff47..ec9a3a77 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ # Runtime dependencies for PromptManager. # aiohttp, numpy and torch come from ComfyUI itself and are not listed here. watchdog>=2.1.0 # Output directory monitoring -Pillow>=8.0.0 # Image metadata extraction and thumbnails +Pillow>=10.1.0 # Image metadata extraction and thumbnails diff --git a/tests/test_api_core.py b/tests/test_api_core.py index 96f17862..087fa3c9 100644 --- a/tests/test_api_core.py +++ b/tests/test_api_core.py @@ -796,6 +796,7 @@ class TestRevalidatedCachingBehindMiddlewares(CoreRoutesTestCase): self.assertEqual(resp.status, 200, path) self.assertEqual(resp.headers.get("Content-Encoding"), "gzip", path) self.assertEqual(resp.headers["Cache-Control"], "no-cache", path) + await resp.read() # aiohttp before 3.11.11 hangs on an unread body again = await self.client.request( "GET", path, @@ -806,6 +807,7 @@ class TestRevalidatedCachingBehindMiddlewares(CoreRoutesTestCase): ) self.assertEqual(again.status, 304, path) self.assertEqual(again.headers["Cache-Control"], "no-cache", path) + await again.read() # ── instance helpers ────────────────────────────────────────────────── diff --git a/tests/test_preview_store_folder.py b/tests/test_preview_store_folder.py index a7632fdc..5e6eddd0 100644 --- a/tests/test_preview_store_folder.py +++ b/tests/test_preview_store_folder.py @@ -287,6 +287,9 @@ class TestUnavailableFolder(FolderModeCase): self.assertTrue(stray.exists()) async def test_a_stalled_store_call_marks_it_unreachable_and_stops_io(self): + # Without the probe: woken by the stall, it finds this healthy folder again + # at once, and the lookup below would rightly do store I/O. + self.assertTrue(preview_store.stop_probe()) make_png(self.output_dir / "m.png", size=(64, 64)) self.preview("m.png").write_bytes(b"x") ticks = iter([0.0, preview_store.IO_BUDGET + 1.0])