From 3c82200e894f610090b3a3c3199d4ae352f136de Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Thu, 4 Jun 2026 22:29:39 +0530
Subject: [PATCH 01/18] chore(docker): comment out otel-collector service in
docker-compose.yml
---
docker/docker-compose.yml | 44 +++++++++++++++++++--------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 11f4fdb5c..1d8e637f8 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -61,28 +61,28 @@ services:
timeout: 5s
retries: 5
- otel-collector:
- image: otel/opentelemetry-collector-contrib:0.152.1
- profiles:
- - observability
- command: ["--config=/etc/otelcol/config.yaml"]
- volumes:
- - ./otel-collector/config.yaml:/etc/otelcol/config.yaml:ro
- environment:
- GRAFANA_CLOUD_OTLP_ENDPOINT: ${GRAFANA_CLOUD_OTLP_ENDPOINT:-}
- GRAFANA_CLOUD_INSTANCE_ID: ${GRAFANA_CLOUD_INSTANCE_ID:-}
- GRAFANA_CLOUD_API_KEY: ${GRAFANA_CLOUD_API_KEY:-}
- ports:
- - "${OTEL_GRPC_PORT:-4317}:4317"
- - "${OTEL_HTTP_PORT:-4318}:4318"
- - "${OTEL_HEALTH_PORT:-13133}:13133"
- mem_limit: 2g
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "/otelcol-contrib", "--version"]
- interval: 30s
- timeout: 5s
- retries: 3
+ # otel-collector:
+ # image: otel/opentelemetry-collector-contrib:0.152.1
+ # profiles:
+ # - observability
+ # command: ["--config=/etc/otelcol/config.yaml"]
+ # volumes:
+ # - ./otel-collector/config.yaml:/etc/otelcol/config.yaml:ro
+ # environment:
+ # GRAFANA_CLOUD_OTLP_ENDPOINT: ${GRAFANA_CLOUD_OTLP_ENDPOINT:-}
+ # GRAFANA_CLOUD_INSTANCE_ID: ${GRAFANA_CLOUD_INSTANCE_ID:-}
+ # GRAFANA_CLOUD_API_KEY: ${GRAFANA_CLOUD_API_KEY:-}
+ # ports:
+ # - "${OTEL_GRPC_PORT:-4317}:4317"
+ # - "${OTEL_HTTP_PORT:-4318}:4318"
+ # - "${OTEL_HEALTH_PORT:-13133}:13133"
+ # mem_limit: 2g
+ # restart: unless-stopped
+ # healthcheck:
+ # test: ["CMD", "/otelcol-contrib", "--version"]
+ # interval: 30s
+ # timeout: 5s
+ # retries: 3
searxng:
image: searxng/searxng:2026.3.13-3c1f68c59
From 54fc2d46192a88988e808b14c1d1b6ef131f41bf Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Fri, 5 Jun 2026 02:24:14 +0530
Subject: [PATCH 02/18] chore(docker): comment out whatsapp-bridge service in
docker-compose.yml
---
docker/docker-compose.yml | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 1d8e637f8..073c8c1da 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -144,25 +144,25 @@ services:
retries: 30
start_period: 200s
- whatsapp-bridge:
- build: ../surfsense_backend/scripts/whatsapp-bridge
- profiles:
- - whatsapp
- expose:
- - "9929"
- volumes:
- - whatsapp_sessions:/data/sessions
- environment:
- PORT: 9929
- WHATSAPP_MODE: ${WHATSAPP_MODE:-self-chat}
- WHATSAPP_SESSION_DIR: /data/sessions
- mem_limit: 512m
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "wget", "-qO-", "http://localhost:9929/health"]
- interval: 30s
- timeout: 5s
- retries: 5
+ # whatsapp-bridge:
+ # build: ../surfsense_backend/scripts/whatsapp-bridge
+ # profiles:
+ # - whatsapp
+ # expose:
+ # - "9929"
+ # volumes:
+ # - whatsapp_sessions:/data/sessions
+ # environment:
+ # PORT: 9929
+ # WHATSAPP_MODE: ${WHATSAPP_MODE:-self-chat}
+ # WHATSAPP_SESSION_DIR: /data/sessions
+ # mem_limit: 512m
+ # restart: unless-stopped
+ # healthcheck:
+ # test: ["CMD", "wget", "-qO-", "http://localhost:9929/health"]
+ # interval: 30s
+ # timeout: 5s
+ # retries: 5
celery_worker:
image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
From 6972356c86098a8089db09d43ec5b4a545c7e249 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Fri, 5 Jun 2026 21:46:09 +0530
Subject: [PATCH 03/18] feat(docker): enhance CUDA support in Dockerfile and
pyproject.toml
- Updated Dockerfile to conditionally install PyTorch with CPU or CUDA support based on build arguments.
- Added optional dependencies for CPU and CUDA versions of PyTorch in pyproject.toml.
- Configured uv.lock to manage dependencies and conflicts between CPU and CUDA installations.
---
surfsense_backend/Dockerfile | 22 +-
surfsense_backend/pyproject.toml | 27 +
surfsense_backend/uv.lock | 837 +++++++++++++++++++++++++------
3 files changed, 731 insertions(+), 155 deletions(-)
diff --git a/surfsense_backend/Dockerfile b/surfsense_backend/Dockerfile
index 0c783f403..1cf6e9793 100644
--- a/surfsense_backend/Dockerfile
+++ b/surfsense_backend/Dockerfile
@@ -61,15 +61,25 @@ COPY pyproject.toml uv.lock ./
# Exporting the lock to requirements.txt and feeding it to `uv pip install`
# pins every transitive package to the exact version captured in uv.lock.
#
-# Note on torch/CUDA: we do NOT install torch from a separate cu* index here.
-# PyPI's torch wheels for Linux x86_64 already ship CUDA-enabled and pull
-# nvidia-cudnn-cu13, nvidia-nccl-cu13, triton, etc. as install deps (all
-# captured in uv.lock). If a specific CUDA version is needed, wire it through
-# [tool.uv.sources] in pyproject.toml so the lock stays the source of truth.
+# Note on torch/CUDA: the export must always select either the cpu or CUDA
+# extra declared in pyproject.toml. A no-extra export would resolve torch from
+# PyPI on Linux, which currently pulls CUDA-enabled wheels and nvidia-* deps.
+# Keep CUDA version selection in [tool.uv.sources] so uv.lock remains the
+# source of truth. The install step also needs the matching PyTorch index,
+# because requirements.txt preserves the +cpu/+cu wheel pins but not uv's
+# package source metadata.
+ARG USE_CUDA=false
+ARG CUDA_EXTRA=cu128
RUN pip install --no-cache-dir uv && \
+ if [ "$USE_CUDA" = "true" ]; then EXTRA="$CUDA_EXTRA"; else EXTRA="cpu"; fi && \
+ TORCH_INDEX="https://download.pytorch.org/whl/${EXTRA}" && \
uv export --frozen --no-dev --no-hashes --no-emit-project \
+ --extra "$EXTRA" \
--format requirements-txt -o /tmp/requirements.txt && \
- uv pip install --system --no-cache-dir -r /tmp/requirements.txt && \
+ uv pip install --system --no-cache-dir \
+ --index "$TORCH_INDEX" \
+ --index-strategy unsafe-best-match \
+ -r /tmp/requirements.txt && \
rm /tmp/requirements.txt
diff --git a/surfsense_backend/pyproject.toml b/surfsense_backend/pyproject.toml
index 8fe4081b5..9f373c112 100644
--- a/surfsense_backend/pyproject.toml
+++ b/surfsense_backend/pyproject.toml
@@ -92,6 +92,10 @@ dependencies = [
"croniter>=2.0.0",
]
+[project.optional-dependencies]
+cpu = ["torch==2.11.0", "torchvision==0.26.0"]
+cu128 = ["torch==2.11.0", "torchvision==0.26.0"]
+
[dependency-groups]
dev = [
"ruff>=0.12.5",
@@ -101,6 +105,29 @@ dev = [
"httpx>=0.28.1",
]
+[tool.uv]
+conflicts = [[{ extra = "cpu" }, { extra = "cu128" }]]
+
+[tool.uv.sources]
+torch = [
+ { index = "pytorch-cpu", extra = "cpu", marker = "sys_platform == 'linux'" },
+ { index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'linux'" },
+]
+torchvision = [
+ { index = "pytorch-cpu", extra = "cpu", marker = "sys_platform == 'linux'" },
+ { index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'linux'" },
+]
+
+[[tool.uv.index]]
+name = "pytorch-cpu"
+url = "https://download.pytorch.org/whl/cpu"
+explicit = true
+
+[[tool.uv.index]]
+name = "pytorch-cu128"
+url = "https://download.pytorch.org/whl/cu128"
+explicit = true
+
[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
diff --git a/surfsense_backend/uv.lock b/surfsense_backend/uv.lock
index 7ad793f79..7d9293192 100644
--- a/surfsense_backend/uv.lock
+++ b/surfsense_backend/uv.lock
@@ -2,18 +2,41 @@ version = 1
revision = 3
requires-python = ">=3.12"
resolution-markers = [
- "python_full_version >= '3.14' and python_full_version < '4' and sys_platform == 'win32'",
- "python_full_version >= '3.14' and python_full_version < '4' and sys_platform == 'emscripten'",
- "python_full_version >= '3.14' and python_full_version < '4' and sys_platform != 'emscripten' and sys_platform != 'win32'",
- "python_full_version >= '4' and sys_platform == 'win32'",
- "python_full_version >= '4' and sys_platform == 'emscripten'",
- "python_full_version >= '4' and sys_platform != 'emscripten' and sys_platform != 'win32'",
- "python_full_version == '3.13.*' and sys_platform == 'win32'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
- "python_full_version < '3.13' and sys_platform != 'win32'",
- "python_full_version < '3.13' and sys_platform == 'win32'",
+ "python_full_version >= '3.14' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
]
+conflicts = [[
+ { package = "surf-new-backend", extra = "cpu" },
+ { package = "surf-new-backend", extra = "cu128" },
+]]
[[package]]
name = "accelerate"
@@ -26,7 +49,9 @@ dependencies = [
{ name = "psutil" },
{ name = "pyyaml" },
{ name = "safetensors" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ca/14/787e5498cd062640f0f3d92ef4ae4063174f76f9afd29d13fc52a319daae/accelerate-1.13.0.tar.gz", hash = "sha256:d631b4e0f5b3de4aff2d7e9e6857d164810dfc3237d54d017f075122d057b236", size = 402835, upload-time = "2026-03-04T19:34:12.359Z" }
wheels = [
@@ -172,7 +197,7 @@ version = "1.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "frozenlist" },
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" }
wheels = [
@@ -263,7 +288,7 @@ version = "4.13.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "idna" },
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" }
wheels = [
@@ -709,7 +734,7 @@ name = "build"
version = "1.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "os_name == 'nt'" },
+ { name = "colorama", marker = "(os_name == 'nt' and sys_platform != 'linux') or (os_name != 'nt' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (os_name == 'nt' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pyproject-hooks" },
]
@@ -808,7 +833,7 @@ name = "cffi"
version = "2.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pycparser", marker = "implementation_name != 'PyPy'" },
+ { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
wheels = [
@@ -979,7 +1004,9 @@ all = [
{ name = "tabulate" },
{ name = "tiktoken" },
{ name = "tokenizers" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "transformers" },
{ name = "tree-sitter" },
{ name = "tree-sitter-language-pack" },
@@ -1064,7 +1091,7 @@ name = "click"
version = "8.1.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" }
wheels = [
@@ -1150,7 +1177,7 @@ name = "colorlog"
version = "6.10.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" }
wheels = [
@@ -1205,7 +1232,7 @@ name = "contourpy"
version = "1.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" }
wheels = [
@@ -1297,7 +1324,7 @@ name = "cryptography"
version = "46.0.6"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
+ { name = "cffi", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a4/ba/04b1bd4218cbc58dc90ce967106d51582371b898690f3ae0402876cc4f34/cryptography-46.0.6.tar.gz", hash = "sha256:27550628a518c5c6c903d84f637fbecf287f6cb9ced3804838a1295dc1fd0759", size = 750542, upload-time = "2026-03-25T23:34:53.396Z" }
wheels = [
@@ -1393,22 +1420,61 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/0e/5c/9fa0ad6462b62efd0fb5ac1100eee47bc96ecc198ff4e237c731e5473616/ctranslate2-4.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:dfb7657bdb7b8211c8f9ecb6f3b70bc0db0e0384d01a8b1808cb66fe7199df59", size = 19123451, upload-time = "2026-02-04T06:12:24.115Z" },
]
+[[package]]
+name = "cuda-bindings"
+version = "12.9.7"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "cuda-pathfinder", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/32/45/557d4ed1fa54f0c7db8aee083229f624990d69f7d00f55477eed5c7e169a/cuda_bindings-12.9.7-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0666d3c082ef8f4b2d670950589373550e9f3bf564d635dd883f24a0b40402ff", size = 7071026, upload-time = "2026-05-27T18:44:13.356Z" },
+ { url = "https://files.pythonhosted.org/packages/91/97/e3c6e58ece26a053419ba0a18444b5443cfc64451bbf37f84e8143b8bdca/cuda_bindings-12.9.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c7ef48c5e13ae90f3b2ecfb72f8e99ac43c8f4c43e67e1325b8aae331453687", size = 7611059, upload-time = "2026-05-27T18:44:15.252Z" },
+ { url = "https://files.pythonhosted.org/packages/6d/39/afaa3de4d491a55af8961081e0b69c08d51bfbe471c359a7bddb4a28ca41/cuda_bindings-12.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:3c089aaf4f5f570ec50244c68f5a2b00a2c9a8e01e04219fd2e36e340be0d88b", size = 7400841, upload-time = "2026-05-27T18:44:17.164Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/7b/f1575e41e1a17dc2f2a408b2e8e864c9324e41e3e23f6401e5efc54c152a/cuda_bindings-12.9.7-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:266379e4942051f544a8e7ea1a30ead8d7e8199b6b30fcdc8917cae2bf614e61", size = 6978549, upload-time = "2026-05-27T18:44:18.839Z" },
+ { url = "https://files.pythonhosted.org/packages/9d/dc/62d62eb4f91eb721bcf46da51b13e9872ccd8fa7e60eb8ba7b7baeac72c6/cuda_bindings-12.9.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:59cf4a37b0d662ba15037c9ceebe1a306ebf2c01a8235a09be13cd07094fdb74", size = 7457675, upload-time = "2026-05-27T18:44:20.637Z" },
+ { url = "https://files.pythonhosted.org/packages/43/b2/753fe88151001d0dc23f56a8e119fe06b991b0d1a885fa02f9852b12f523/cuda_bindings-12.9.7-cp313-cp313-win_amd64.whl", hash = "sha256:5bd89dcb78475a6d8a4620ea94b74edf0cbbeacee6d1622d8f94452c1e8d3f15", size = 7360097, upload-time = "2026-05-27T18:44:22.405Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/77/94d9b85f26add6fe9c9cb7c4ec3b96bc598f7ea5cfbd7490cc0a36adf5be/cuda_bindings-12.9.7-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2dbcd4801954eb3508f4dc2fa0d0c8eb93eb3f45326fd61be2731418c371e7a0", size = 6870886, upload-time = "2026-05-27T18:44:24.164Z" },
+ { url = "https://files.pythonhosted.org/packages/04/dd/3ec34b569e1b990b11276feba306bf8f446656cc38e8ed0f49b5facfeffa/cuda_bindings-12.9.7-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3747ea132642416786a8e31bf229032df3a7856911ae5426a7be53d032df183d", size = 7345663, upload-time = "2026-05-27T18:44:26.333Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/c8/d79a20ba396e7ab2dfdd4b72b62356972b25b88aee2ded49a70c797ddea1/cuda_bindings-12.9.7-cp313-cp313t-win_amd64.whl", hash = "sha256:64f7ade7a7a3b69001489753acc21706d9dbda32db8deb68a767a0a0aab30b68", size = 7780136, upload-time = "2026-05-27T18:44:28.121Z" },
+ { url = "https://files.pythonhosted.org/packages/68/e4/075052d42872cf8162da53f14447a4b8abc004c3750e4b724ee502428da0/cuda_bindings-12.9.7-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:775960ac9e530717f3b48e165cc6f68684fa9a4141764fd923e4c1a9820acc73", size = 7060090, upload-time = "2026-05-27T18:44:30.281Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/cd/3289c810a4d45e5364a3387a74b4c9b6f6f57ee96ae0e5b537cc61dec242/cuda_bindings-12.9.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3c47ec1a7a441d91aab32339951df7a1be53451121a12c094bba51467717a35a", size = 7504419, upload-time = "2026-05-27T18:44:31.992Z" },
+ { url = "https://files.pythonhosted.org/packages/5b/a0/c429fdcfa5aae181415504c5085ea5944f782b417dd16a7f2a14be0da80d/cuda_bindings-12.9.7-cp314-cp314-win_amd64.whl", hash = "sha256:1e2a4f2ec5b67408c04bb4fbed45d214b66de1f00ee2e972865cacb8708d4e1e", size = 7493876, upload-time = "2026-05-27T18:44:33.618Z" },
+ { url = "https://files.pythonhosted.org/packages/11/43/472a6281c3d94e71687e27c657a8f60718d3579b4d94c41deea503165f8a/cuda_bindings-12.9.7-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:00a833d399b31071fab4cf3de2929840ae462dc4848116eeff033d09219e7116", size = 6899146, upload-time = "2026-05-27T18:44:35.556Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/13/10c1d0b32a9da65142d213e0733d748457fb3fd066aee4317335266f15c6/cuda_bindings-12.9.7-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11aeafa2b33995f890086b3fb0f062075176d956e9b6a6fe1a699dddc413f6ad", size = 7369087, upload-time = "2026-05-27T18:44:37.359Z" },
+ { url = "https://files.pythonhosted.org/packages/33/10/c71a07cd2a1d4db119bada1848b4752a874ccfe4927d419bfdd05f250920/cuda_bindings-12.9.7-cp314-cp314t-win_amd64.whl", hash = "sha256:ece8dfbc22e6de96a26940ab9887eb3cfe1fc1bc3966169391cdb866bb82bb64", size = 8208198, upload-time = "2026-05-27T18:44:39.053Z" },
+]
+
[[package]]
name = "cuda-bindings"
version = "13.2.0"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
+ "python_full_version < '3.13' and sys_platform != 'win32'",
+]
dependencies = [
- { name = "cuda-pathfinder", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "cuda-pathfinder", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" },
{ url = "https://files.pythonhosted.org/packages/1f/92/f899f7bbb5617bb65ec52a6eac1e9a1447a86b916c4194f8a5001b8cde0c/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46d8776a55d6d5da9dd6e9858fba2efcda2abe6743871dee47dd06eb8cb6d955", size = 6320619, upload-time = "2026-03-11T00:12:45.939Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/a5/d7f01a415e134546248cef612adad8153c9f1eb10ec79505a7cd8294370b/cuda_bindings-13.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:45815daeb595bf3b405c52671a2542b1f8e9329f3b029494acbfcc74aeaa1f2d", size = 5840830, upload-time = "2026-03-11T00:12:48.43Z" },
{ url = "https://files.pythonhosted.org/packages/df/93/eef988860a3ca985f82c4f3174fc0cdd94e07331ba9a92e8e064c260337f/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6629ca2df6f795b784752409bcaedbd22a7a651b74b56a165ebc0c9dcbd504d0", size = 5614610, upload-time = "2026-03-11T00:12:50.337Z" },
{ url = "https://files.pythonhosted.org/packages/18/23/6db3aba46864aee357ab2415135b3fe3da7e9f1fa0221fa2a86a5968099c/cuda_bindings-13.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7dca0da053d3b4cc4869eff49c61c03f3c5dbaa0bcd712317a358d5b8f3f385d", size = 6149914, upload-time = "2026-03-11T00:12:52.374Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/84/d3b6220b51cbc02ca14db7387e97445126b4ff5125aaa6c5dd7dcb75e679/cuda_bindings-13.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:8cebe3ce4aeeca5af9c490e175f76c4b569bbf4a35a62294b777bc77bf7ac4d8", size = 5796512, upload-time = "2026-03-11T00:12:54.483Z" },
{ url = "https://files.pythonhosted.org/packages/c0/87/87a014f045b77c6de5c8527b0757fe644417b184e5367db977236a141602/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6464b30f46692d6c7f65d4a0e0450d81dd29de3afc1bb515653973d01c2cd6e", size = 5685673, upload-time = "2026-03-11T00:12:56.371Z" },
{ url = "https://files.pythonhosted.org/packages/ee/5e/c0fe77a73aaefd3fff25ffaccaac69c5a63eafdf8b9a4c476626ef0ac703/cuda_bindings-13.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4af9f3e1be603fa12d5ad6cfca7844c9d230befa9792b5abdf7dd79979c3626", size = 6191386, upload-time = "2026-03-11T00:12:58.965Z" },
+ { url = "https://files.pythonhosted.org/packages/e3/73/98bcb069778fe420226db75aff54b5dd6c3ecfd0912edabab723326e80b7/cuda_bindings-13.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:bd658bb5c0e55b7b3e5dd0ed509c6addb298c665db26a9bfba35e1e626000ba2", size = 5938605, upload-time = "2026-03-11T00:13:01.639Z" },
{ url = "https://files.pythonhosted.org/packages/5f/58/ed2c3b39c8dd5f96aa7a4abef0d47a73932c7a988e30f5fa428f00ed0da1/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df850a1ff8ce1b3385257b08e47b70e959932f5f432d0a4e46a355962b4e4771", size = 5507469, upload-time = "2026-03-11T00:13:04.063Z" },
{ url = "https://files.pythonhosted.org/packages/1f/01/0c941b112ceeb21439b05895eace78ca1aa2eaaf695c8521a068fd9b4c00/cuda_bindings-13.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8a16384c6494e5485f39314b0b4afb04bee48d49edb16d5d8593fd35bbd231b", size = 6059693, upload-time = "2026-03-11T00:13:06.003Z" },
+ { url = "https://files.pythonhosted.org/packages/52/49/4e01cc06447d39476e138d1b1adec8d35c0d04eccd2c8d69befc08cd66e8/cuda_bindings-13.2.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6ccf14e0c1def3b7200100aafff3a9f7e210ecb6e409329e92dcf6cd2c00d5c7", size = 6662637, upload-time = "2026-03-11T00:13:07.881Z" },
]
[[package]]
@@ -1419,47 +1485,100 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/93/66/0c02bd330e7d976f83fa68583d6198d76f23581bcbb5c0e98a6148f326e5/cuda_pathfinder-1.5.0-py3-none-any.whl", hash = "sha256:498f90a9e9de36044a7924742aecce11c50c49f735f1bc53e05aa46de9ea4110", size = 49739, upload-time = "2026-03-24T21:14:30.869Z" },
]
+[[package]]
+name = "cuda-toolkit"
+version = "12.8.1"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d4/c8/7dce3a0b15b42a3b58e7d96eb22a687d3bf2c44e01d149a6874629cd9938/cuda_toolkit-12.8.1-py2.py3-none-any.whl", hash = "sha256:adc7906af4ecbf9a352f9dca5734eceb21daec281ccfcf5675e1d2f724fc2cba", size = 2283, upload-time = "2025-08-13T02:03:07.842Z" },
+]
+
+[package.optional-dependencies]
+cublas = [
+ { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cudart = [
+ { name = "nvidia-cuda-runtime-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cufft = [
+ { name = "nvidia-cufft-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cufile = [
+ { name = "nvidia-cufile-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cupti = [
+ { name = "nvidia-cuda-cupti-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+curand = [
+ { name = "nvidia-curand-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cusolver = [
+ { name = "nvidia-cusolver-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cusparse = [
+ { name = "nvidia-cusparse-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvjitlink = [
+ { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvrtc = [
+ { name = "nvidia-cuda-nvrtc-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvtx = [
+ { name = "nvidia-nvtx-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+
[[package]]
name = "cuda-toolkit"
version = "13.0.2"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32'",
+ "python_full_version < '3.13' and sys_platform != 'win32'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl", hash = "sha256:b198824cf2f54003f50d64ada3a0f184b42ca0846c1c94192fa269ecd97a66eb", size = 2364, upload-time = "2025-12-19T23:24:07.328Z" },
]
[package.optional-dependencies]
cublas = [
- { name = "nvidia-cublas", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cublas", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cudart = [
- { name = "nvidia-cuda-runtime", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cuda-runtime", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufft = [
- { name = "nvidia-cufft", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cufft", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufile = [
- { name = "nvidia-cufile", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cufile", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cupti = [
- { name = "nvidia-cuda-cupti", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cuda-cupti", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
curand = [
- { name = "nvidia-curand", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-curand", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusolver = [
- { name = "nvidia-cusolver", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cusolver", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusparse = [
- { name = "nvidia-cusparse", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cusparse", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvjitlink = [
- { name = "nvidia-nvjitlink", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nvjitlink", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvrtc = [
- { name = "nvidia-cuda-nvrtc", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-cuda-nvrtc", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvtx = [
- { name = "nvidia-nvtx", marker = "sys_platform == 'linux'" },
+ { name = "nvidia-nvtx", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[[package]]
@@ -1483,7 +1602,9 @@ name = "curated-transformers"
version = "0.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/70/06/6c12c149a7f737dacc76b4c3949dbc7ff87d622567b86996896ae4d104aa/curated-transformers-0.1.1.tar.gz", hash = "sha256:4671f03314df30efda2ec2b59bc7692ea34fcea44cb65382342c16684e8a2119", size = 16313, upload-time = "2023-05-24T07:29:22.801Z" }
wheels = [
@@ -1765,7 +1886,7 @@ version = "2.7.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aiohttp" },
- { name = "audioop-lts", marker = "python_full_version >= '3.13'" },
+ { name = "audioop-lts", marker = "python_full_version >= '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ef/57/9a2d9abdabdc9db8ef28ce0cf4129669e1c8717ba28d607b5ba357c4de3b/discord_py-2.7.1.tar.gz", hash = "sha256:24d5e6a45535152e4b98148a9dd6b550d25dc2c9fb41b6d670319411641249da", size = 1106326, upload-time = "2026-03-03T18:40:46.24Z" }
wheels = [
@@ -1815,7 +1936,7 @@ dependencies = [
{ name = "huggingface-hub" },
{ name = "lxml" },
{ name = "marko" },
- { name = "ocrmac", marker = "sys_platform == 'darwin'" },
+ { name = "ocrmac", marker = "sys_platform == 'darwin' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "openpyxl" },
{ name = "pandas" },
{ name = "pillow" },
@@ -1831,8 +1952,12 @@ dependencies = [
{ name = "requests" },
{ name = "rtree" },
{ name = "scipy" },
- { name = "torch" },
- { name = "torchvision" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "typer" },
]
@@ -1888,8 +2013,12 @@ dependencies = [
{ name = "pydantic" },
{ name = "rtree" },
{ name = "safetensors", extra = ["torch"] },
- { name = "torch" },
- { name = "torchvision" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "transformers" },
]
@@ -1906,7 +2035,7 @@ dependencies = [
{ name = "docling-core" },
{ name = "pillow" },
{ name = "pydantic" },
- { name = "pywin32", marker = "sys_platform == 'win32'" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tabulate" },
]
sdist = { url = "https://files.pythonhosted.org/packages/76/34/f951e261d20cc71bc55703a3f4f51b13d8dc98ed634995905ecc41e5650a/docling_parse-5.6.1.tar.gz", hash = "sha256:e47d40a7c268a775c41a8cc7773555a5856a1bcfd5a05ee97ee0a162270ad7f9", size = 61127846, upload-time = "2026-03-24T11:15:01.304Z" }
@@ -2054,7 +2183,7 @@ name = "faker"
version = "40.11.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "tzdata", marker = "sys_platform == 'win32'" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fa/e5/b16bf568a2f20fe7423282db4a4059dbcadef70e9029c1c106836f8edd84/faker-40.11.1.tar.gz", hash = "sha256:61965046e79e8cfde4337d243eac04c0d31481a7c010033141103b43f603100c", size = 1957415, upload-time = "2026-03-23T14:05:50.233Z" }
wheels = [
@@ -2981,7 +3110,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock" },
{ name = "fsspec" },
- { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" },
+ { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pyyaml" },
{ name = "requests" },
@@ -3321,9 +3450,9 @@ dependencies = [
{ name = "jaraco-classes" },
{ name = "jaraco-context" },
{ name = "jaraco-functools" },
- { name = "jeepney", marker = "sys_platform == 'linux'" },
- { name = "pywin32-ctypes", marker = "sys_platform == 'win32'" },
- { name = "secretstorage", marker = "sys_platform == 'linux'" },
+ { name = "jeepney", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32-ctypes", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "secretstorage", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/43/4b/674af6ef2f97d56f0ab5153bf0bfa28ccb6c3ed4d1babf4305449668807b/keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b", size = 63516, upload-time = "2025-11-16T16:26:09.482Z" }
wheels = [
@@ -3425,7 +3554,9 @@ dependencies = [
{ name = "loguru" },
{ name = "misaki", extra = ["en"] },
{ name = "numpy" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "transformers" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e8/48/88b8cdf28b068d070195c2817175549dee48e7682e3ab8994bee5f69217e/kokoro-0.9.4.tar.gz", hash = "sha256:fbf633262797f8cf46fdac3315cf9cade67dc8b762c0feccf334892772fb9ac4", size = 26215928, upload-time = "2025-04-05T22:01:35.294Z" }
@@ -3715,7 +3846,7 @@ version = "0.7.22"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "httpx" },
- { name = "orjson", marker = "platform_python_implementation != 'PyPy'" },
+ { name = "orjson", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pydantic" },
{ name = "requests" },
@@ -3912,8 +4043,8 @@ name = "loguru"
version = "0.7.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
- { name = "win32-setctime", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "win32-setctime", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" }
wheels = [
@@ -4177,15 +4308,15 @@ name = "matplotlib"
version = "3.10.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "contourpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "cycler", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "fonttools", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "kiwisolver", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "packaging", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pillow", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pyparsing", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "python-dateutil", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "contourpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cycler", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fonttools", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "kiwisolver", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "packaging", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyparsing", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "python-dateutil", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" }
wheels = [
@@ -4239,12 +4370,12 @@ dependencies = [
{ name = "pydantic-settings" },
{ name = "pyjwt", extra = ["crypto"] },
{ name = "python-multipart" },
- { name = "pywin32", marker = "sys_platform == 'win32'" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "sse-starlette" },
{ name = "starlette" },
{ name = "typing-extensions" },
{ name = "typing-inspection" },
- { name = "uvicorn", marker = "sys_platform != 'emscripten'" },
+ { name = "uvicorn", marker = "sys_platform != 'emscripten' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fc/6d/62e76bbb8144d6ed86e202b5edd8a4cb631e7c8130f3f4893c3f90262b10/mcp-1.26.0.tar.gz", hash = "sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66", size = 608005, upload-time = "2026-01-24T19:40:32.468Z" }
wheels = [
@@ -4296,7 +4427,7 @@ name = "ml-dtypes"
version = "0.5.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" }
wheels = [
@@ -4443,7 +4574,7 @@ version = "2.10.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pygments" },
- { name = "pywin32", marker = "sys_platform == 'win32'" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270, upload-time = "2024-05-07T14:00:31.815Z" }
@@ -4872,6 +5003,17 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e1/a5/fce49e2ae977e0ccc084e5adafceb4f0ac0c8333cb6863501618a7277f67/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c86fc7f7ae36d7528288c5d88098edcb7b02c633d262e7ddbb86b0ad91be5df2", size = 542851226, upload-time = "2025-10-09T08:59:04.818Z" },
{ url = "https://files.pythonhosted.org/packages/e7/44/423ac00af4dd95a5aeb27207e2c0d9b7118702149bf4704c3ddb55bb7429/nvidia_cublas-13.1.0.3-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ee8722c1f0145ab246bccb9e452153b5e0515fd094c3678df50b2a0888b8b171", size = 423133236, upload-time = "2025-10-09T08:59:32.536Z" },
+ { url = "https://files.pythonhosted.org/packages/10/f5/f50bc3f5c2bb57ab8f5b4d78bc1146b57810d42cb8fcb28cbe2e14050376/nvidia_cublas-13.1.0.3-py3-none-win_amd64.whl", hash = "sha256:2a3b94a37def342471c59fad7856caee4926809a72dd5270155d6a31b5b277be", size = 404355960, upload-time = "2025-10-09T09:07:00.987Z" },
+]
+
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.8.4.1"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124, upload-time = "2025-03-07T01:43:53.556Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" },
+ { url = "https://files.pythonhosted.org/packages/70/61/7d7b3c70186fb651d0fbd35b01dbfc8e755f69fd58f817f3d0f642df20c3/nvidia_cublas_cu12-12.8.4.1-py3-none-win_amd64.whl", hash = "sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af", size = 567544208, upload-time = "2025-03-07T01:53:30.535Z" },
]
[[package]]
@@ -4881,6 +5023,17 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/2a/2a/80353b103fc20ce05ef51e928daed4b6015db4aaa9162ed0997090fe2250/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:796bd679890ee55fb14a94629b698b6db54bcfd833d391d5e94017dd9d7d3151", size = 10310827, upload-time = "2025-09-04T08:26:42.012Z" },
{ url = "https://files.pythonhosted.org/packages/33/6d/737d164b4837a9bbd202f5ae3078975f0525a55730fe871d8ed4e3b952b0/nvidia_cuda_cupti-13.0.85-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:4eb01c08e859bf924d222250d2e8f8b8ff6d3db4721288cf35d14252a4d933c8", size = 10715597, upload-time = "2025-09-04T08:26:51.312Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/df/b74b10025c1205695c5676373f2edd3e87a7202cc62ead0dfbc373b0f6ea/nvidia_cuda_cupti-13.0.85-py3-none-win_amd64.whl", hash = "sha256:683f58d301548deeefcb8f6fac1b8d907691b9d8b18eccab417f51e362102f00", size = 7736776, upload-time = "2025-09-04T08:38:08.38Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.8.90"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d5/1f/b3bd73445e5cb342727fd24fe1f7b748f690b460acadc27ea22f904502c8/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed", size = 9533318, upload-time = "2025-03-07T01:40:10.421Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" },
+ { url = "https://files.pythonhosted.org/packages/41/bc/83f5426095d93694ae39fe1311431b5d5a9bb82e48bf0dd8e19be2765942/nvidia_cuda_cupti_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e", size = 7015759, upload-time = "2025-03-07T01:51:11.355Z" },
]
[[package]]
@@ -4890,6 +5043,17 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c3/68/483a78f5e8f31b08fb1bb671559968c0ca3a065ac7acabfc7cee55214fd6/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:ad9b6d2ead2435f11cbb6868809d2adeeee302e9bb94bcf0539c7a40d80e8575", size = 90215200, upload-time = "2025-09-04T08:28:44.204Z" },
{ url = "https://files.pythonhosted.org/packages/b7/dc/6bb80850e0b7edd6588d560758f17e0550893a1feaf436807d64d2da040f/nvidia_cuda_nvrtc-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d27f20a0ca67a4bb34268a5e951033496c5b74870b868bacd046b1b8e0c3267b", size = 43015449, upload-time = "2025-09-04T08:28:20.239Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/af/345fedb9f4c76c84ab4fa445b36bd4048a4d9db60e6bc76b4f913ff4b852/nvidia_cuda_nvrtc-13.0.88-py3-none-win_amd64.whl", hash = "sha256:6bcd4e7f8e205cbe644f5a98f2f799bef9556fefc89dd786e79a16312ce49872", size = 76807835, upload-time = "2025-09-04T08:39:15.274Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.8.93"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/d1/e50d0acaab360482034b84b6e27ee83c6738f7d32182b987f9c7a4e32962/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8", size = 43106076, upload-time = "2025-03-07T01:41:59.817Z" },
+ { url = "https://files.pythonhosted.org/packages/45/51/52a3d84baa2136cc8df15500ad731d74d3a1114d4c123e043cb608d4a32b/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909", size = 73586838, upload-time = "2025-03-07T01:52:13.483Z" },
]
[[package]]
@@ -4899,6 +5063,30 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/87/4f/17d7b9b8e285199c58ce28e31b5c5bbaa4d8271af06a89b6405258245de2/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ef9bcbe90493a2b9d810e43d249adb3d02e98dd30200d86607d8d02687c43f55", size = 2261060, upload-time = "2025-10-09T08:55:15.78Z" },
{ url = "https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f82250d7782aa23b6cfe765ecc7db554bd3c2870c43f3d1821f1d18aebf0548", size = 2243632, upload-time = "2025-10-09T08:55:36.117Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/94/6b867483bec07da24ffa32736c79fabb94ef3a7af4d787a9d4a974868576/nvidia_cuda_runtime-13.0.96-py3-none-win_amd64.whl", hash = "sha256:f79298c8a098cec150a597c8eba58ecdab96e3bdc4b9bc4f9983635031740492", size = 2927037, upload-time = "2025-10-09T09:04:23.782Z" },
+]
+
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.8.90"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/7c/75/f865a3b236e4647605ea34cc450900854ba123834a5f1598e160b9530c3a/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d", size = 965265, upload-time = "2025-03-07T01:39:43.533Z" },
+ { url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" },
+ { url = "https://files.pythonhosted.org/packages/30/a5/a515b7600ad361ea14bfa13fb4d6687abf500adc270f19e89849c0590492/nvidia_cuda_runtime_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8", size = 944318, upload-time = "2025-03-07T01:51:01.794Z" },
+]
+
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "9.19.0.56"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/09/b8/277c51962ee46fa3e5b203ac5f76107c650f781d6891e681e28e6f3e9fe6/nvidia_cudnn_cu12-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:08caaf27fe556aca82a3ee3b5aa49a77e7de0cfcb7ff4e5c29da426387a8267e", size = 656910700, upload-time = "2026-02-03T20:40:25.508Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/41/65225d42fba06fb3dd3972485ea258e7dd07a40d6e01c95da6766ad87354/nvidia_cudnn_cu12-9.19.0.56-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:ac6ad90a075bb33a94f2b4cf4622eac13dd4dc65cf6dd9c7572a318516a36625", size = 657906812, upload-time = "2026-02-03T20:44:12.638Z" },
+ { url = "https://files.pythonhosted.org/packages/a7/a5/48f07449fc9c6cc146dcafe6149fa5d69630137d2ec5b7d9e09f255fadd7/nvidia_cudnn_cu12-9.19.0.56-py3-none-win_amd64.whl", hash = "sha256:cec70596b9ce878fab83810c3f5a2e606d35f510e5fee579759e4cbc68a23750", size = 644003014, upload-time = "2026-02-03T20:46:25.768Z" },
]
[[package]]
@@ -4906,11 +5094,12 @@ name = "nvidia-cudnn-cu13"
version = "9.19.0.56"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/f1/84/26025437c1e6b61a707442184fa0c03d083b661adf3a3eecfd6d21677740/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:6ed29ffaee1176c612daf442e4dd6cfeb6a0caa43ddcbeb59da94953030b1be4", size = 433781201, upload-time = "2026-02-03T20:40:53.805Z" },
{ url = "https://files.pythonhosted.org/packages/a3/22/0b4b932655d17a6da1b92fa92ab12844b053bb2ac2475e179ba6f043da1e/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:d20e1734305e9d68889a96e3f35094d733ff1f83932ebe462753973e53a572bf", size = 366066321, upload-time = "2026-02-03T20:44:52.837Z" },
+ { url = "https://files.pythonhosted.org/packages/91/a2/f020386683ee9ab2c9a9f7f79290d9b0d07f7241de54dc746af2abd188d2/nvidia_cudnn_cu13-9.19.0.56-py3-none-win_amd64.whl", hash = "sha256:40d8c375005bcb01495f8edf375230b203a411a0c05fb6dc92a3781edcb23eac", size = 350547366, upload-time = "2026-02-03T20:50:49.563Z" },
]
[[package]]
@@ -4918,11 +5107,25 @@ name = "nvidia-cufft"
version = "12.0.0.61"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" },
{ url = "https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c44f692dce8fd5ffd3e3df134b6cdb9c2f72d99cf40b62c32dde45eea9ddad3", size = 214085489, upload-time = "2025-09-04T08:31:56.044Z" },
+ { url = "https://files.pythonhosted.org/packages/85/b2/f8af21a2ed1beed337a6a02c5a28aeb85441f4d578ec3d529543c775ea4b/nvidia_cufft-12.0.0.61-py3-none-win_amd64.whl", hash = "sha256:2abce5b39d2f5ae12730fb7e5db6696533e36c26e2d3e8fd1750bdd2853364eb", size = 213342123, upload-time = "2025-09-04T08:40:51.145Z" },
+]
+
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.3.3.83"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/60/bc/7771846d3a0272026c416fbb7e5f4c1f146d6d80704534d0b187dd6f4800/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a", size = 193109211, upload-time = "2025-03-07T01:44:56.873Z" },
+ { url = "https://files.pythonhosted.org/packages/1f/13/ee4e00f30e676b66ae65b4f08cb5bcbb8392c03f54f2d5413ea99a5d1c80/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74", size = 193118695, upload-time = "2025-03-07T01:45:27.821Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/ec/ce1629f1e478bb5ccd208986b5f9e0316a78538dd6ab1d0484f012f8e2a1/nvidia_cufft_cu12-11.3.3.83-py3-none-win_amd64.whl", hash = "sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7", size = 192216559, upload-time = "2025-03-07T01:53:57.106Z" },
]
[[package]]
@@ -4934,6 +5137,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" },
]
+[[package]]
+name = "nvidia-cufile-cu12"
+version = "1.13.1.3"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" },
+ { url = "https://files.pythonhosted.org/packages/1e/f5/5607710447a6fe9fd9b3283956fceeee8a06cda1d2f56ce31371f595db2a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a", size = 1120705, upload-time = "2025-03-07T01:45:41.434Z" },
+]
+
[[package]]
name = "nvidia-curand"
version = "10.4.0.35"
@@ -4941,6 +5153,17 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/1e/72/7c2ae24fb6b63a32e6ae5d241cc65263ea18d08802aaae087d9f013335a2/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:133df5a7509c3e292aaa2b477afd0194f06ce4ea24d714d616ff36439cee349a", size = 61962106, upload-time = "2025-08-04T10:21:41.128Z" },
{ url = "https://files.pythonhosted.org/packages/a5/9f/be0a41ca4a4917abf5cb9ae0daff1a6060cc5de950aec0396de9f3b52bc5/nvidia_curand-10.4.0.35-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc", size = 59544258, upload-time = "2025-08-04T10:22:03.992Z" },
+ { url = "https://files.pythonhosted.org/packages/99/27/72103153b1ffc00e09fdc40ac970235343dcd1ea8bd762e84d2d73219ffa/nvidia_curand-10.4.0.35-py3-none-win_amd64.whl", hash = "sha256:65b1710aa6961d326b411e314b374290904c5ddf41dc3f766ebc3f1d7d4ca69f", size = 55242481, upload-time = "2025-08-04T10:30:41.831Z" },
+]
+
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.9.90"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/45/5e/92aa15eca622a388b80fbf8375d4760738df6285b1e92c43d37390a33a9a/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd", size = 63625754, upload-time = "2025-03-07T01:46:10.735Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/75/70c05b2f3ed5be3bb30b7102b6eb78e100da4bbf6944fd6725c012831cab/nvidia_curand_cu12-10.3.9.90-py3-none-win_amd64.whl", hash = "sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec", size = 62765309, upload-time = "2025-03-07T01:54:20.478Z" },
]
[[package]]
@@ -4948,13 +5171,29 @@ name = "nvidia-cusolver"
version = "12.0.4.66"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "nvidia-cusparse", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" },
{ url = "https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:0a759da5dea5c0ea10fd307de75cdeb59e7ea4fcb8add0924859b944babf1112", size = 200941980, upload-time = "2025-09-04T08:33:22.767Z" },
+ { url = "https://files.pythonhosted.org/packages/99/ef/332a0101260ca78a1daef046bf0b06199e8ed4dac1d2aa698289c358169c/nvidia_cusolver-12.0.4.66-py3-none-win_amd64.whl", hash = "sha256:16515bd33a8e76bb54d024cfa068fa68d30e80fc34b9e1090813ea9362e0cb65", size = 193551444, upload-time = "2025-09-04T08:41:46.813Z" },
+]
+
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.7.3.90"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c8/32/f7cd6ce8a7690544d084ea21c26e910a97e077c9b7f07bf5de623ee19981/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0", size = 267229841, upload-time = "2025-03-07T01:46:54.356Z" },
+ { url = "https://files.pythonhosted.org/packages/85/48/9a13d2975803e8cf2777d5ed57b87a0b6ca2cc795f9a4f59796a910bfb80/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450", size = 267506905, upload-time = "2025-03-07T01:47:16.273Z" },
+ { url = "https://files.pythonhosted.org/packages/13/c0/76ca8551b8a84146ffa189fec81c26d04adba4bc0dbe09cd6e6fd9b7de04/nvidia_cusolver_cu12-11.7.3.90-py3-none-win_amd64.whl", hash = "sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34", size = 256720438, upload-time = "2025-03-07T01:54:39.898Z" },
]
[[package]]
@@ -4962,11 +5201,35 @@ name = "nvidia-cusparse"
version = "12.6.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" },
{ url = "https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2b3c89c88d01ee0e477cb7f82ef60a11a4bcd57b6b87c33f789350b59759360b", size = 145942937, upload-time = "2025-09-04T08:33:58.029Z" },
+ { url = "https://files.pythonhosted.org/packages/02/b0/b043d6f3480f102f885cf87fc3ffd3edcb5e23b855025a50e2ef4d059185/nvidia_cusparse-12.6.3.3-py3-none-win_amd64.whl", hash = "sha256:cbcf42feb737bd7ec15b4c0a63e62351886bd3f975027b8815d7f720a2b5ea79", size = 143783033, upload-time = "2025-09-04T08:42:12.391Z" },
+]
+
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.5.8.93"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/bc/f7/cd777c4109681367721b00a106f491e0d0d15cfa1fd59672ce580ce42a97/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc", size = 288117129, upload-time = "2025-03-07T01:47:40.407Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/f5/e1854cb2f2bcd4280c44736c93550cc300ff4b8c95ebe370d0aa7d2b473d/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b", size = 288216466, upload-time = "2025-03-07T01:48:13.779Z" },
+ { url = "https://files.pythonhosted.org/packages/62/07/f3b2ad63f8e3d257a599f422ae34eb565e70c41031aecefa3d18b62cabd1/nvidia_cusparse_cu12-12.5.8.93-py3-none-win_amd64.whl", hash = "sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd", size = 284937404, upload-time = "2025-03-07T01:55:07.742Z" },
+]
+
+[[package]]
+name = "nvidia-cusparselt-cu12"
+version = "0.7.1"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" },
+ { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" },
+ { url = "https://files.pythonhosted.org/packages/2f/d8/a6b0d0d0c2435e9310f3e2bb0d9c9dd4c33daef86aa5f30b3681defd37ea/nvidia_cusparselt_cu12-0.7.1-py3-none-win_amd64.whl", hash = "sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075", size = 271020911, upload-time = "2025-02-26T00:14:47.204Z" },
]
[[package]]
@@ -4976,6 +5239,16 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/46/10/8dcd1175260706a2fc92a16a52e306b71d4c1ea0b0cc4a9484183399818a/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:400c6ed1cf6780fc6efedd64ec9f1345871767e6a1a0a552a1ea0578117ea77c", size = 220791277, upload-time = "2025-08-13T19:22:40.982Z" },
{ url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" },
+ { url = "https://files.pythonhosted.org/packages/57/de/8f0578928b9b1246d7b1324db0528e6b9f9fb54496a49f40bf71f09f1a27/nvidia_cusparselt_cu13-0.8.0-py3-none-win_amd64.whl", hash = "sha256:e80212ed7b1afc97102fbb2b5c82487aa73f6a0edfa6d26c5a152593e520bb8f", size = 156459710, upload-time = "2025-08-13T19:24:18.043Z" },
+]
+
+[[package]]
+name = "nvidia-nccl-cu12"
+version = "2.28.9"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/08/c4/120d2dfd92dff2c776d68f361ff8705fdea2ca64e20b612fab0fd3f581ac/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:50a36e01c4a090b9f9c47d92cec54964de6b9fcb3362d0e19b8ffc6323c21b60", size = 296766525, upload-time = "2025-11-18T05:49:16.094Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/4e/44dbb46b3d1b0ec61afda8e84837870f2f9ace33c564317d59b70bc19d3e/nvidia_nccl_cu12-2.28.9-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:485776daa8447da5da39681af455aa3b2c2586ddcf4af8772495e7c532c7e5ab", size = 296782137, upload-time = "2025-11-18T05:49:34.248Z" },
]
[[package]]
@@ -4994,6 +5267,26 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/56/7a/123e033aaff487c77107195fa5a2b8686795ca537935a24efae476c41f05/nvidia_nvjitlink-13.0.88-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b", size = 40713933, upload-time = "2025-09-04T08:35:43.553Z" },
{ url = "https://files.pythonhosted.org/packages/ab/2c/93c5250e64df4f894f1cbb397c6fd71f79813f9fd79d7cd61de3f97b3c2d/nvidia_nvjitlink-13.0.88-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e931536ccc7d467a98ba1d8b89ff7fa7f1fa3b13f2b0069118cd7f47bff07d0c", size = 38768748, upload-time = "2025-09-04T08:35:20.008Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/01/07530b0e37546231052e30234540289c42eaffa486f1a34a87fed340157b/nvidia_nvjitlink-13.0.88-py3-none-win_amd64.whl", hash = "sha256:634e96e3da9ef845ae744097a1f289238ecf946ce0b82e93cdce14b9782e682f", size = 36035115, upload-time = "2025-09-04T08:43:03.001Z" },
+]
+
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.8.93"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" },
+ { url = "https://files.pythonhosted.org/packages/2a/a2/8cee5da30d13430e87bf99bb33455d2724d0a4a9cb5d7926d80ccb96d008/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7", size = 38386204, upload-time = "2025-03-07T01:49:43.612Z" },
+ { url = "https://files.pythonhosted.org/packages/ed/d7/34f02dad2e30c31b10a51f6b04e025e5dd60e5f936af9045a9b858a05383/nvidia_nvjitlink_cu12-12.8.93-py3-none-win_amd64.whl", hash = "sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f", size = 268553710, upload-time = "2025-03-07T01:56:24.13Z" },
+]
+
+[[package]]
+name = "nvidia-nvshmem-cu12"
+version = "3.4.5"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1d/6a/03aa43cc9bd3ad91553a88b5f6fb25ed6a3752ae86ce2180221962bc2aa5/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b48363fc6964dede448029434c6abed6c5e37f823cb43c3bcde7ecfc0457e15", size = 138936938, upload-time = "2025-09-06T00:32:05.589Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/09/6ea3ea725f82e1e76684f0708bbedd871fc96da89945adeba65c3835a64c/nvidia_nvshmem_cu12-3.4.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:042f2500f24c021db8a06c5eec2539027d57460e1c1a762055a6554f72c369bd", size = 139103095, upload-time = "2025-09-06T00:32:31.266Z" },
]
[[package]]
@@ -5012,6 +5305,17 @@ source = { registry = "https://pypi.org/simple" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c2/f3/d86c845465a2723ad7e1e5c36dcd75ddb82898b3f53be47ebd429fb2fa5d/nvidia_nvtx-13.0.85-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4936d1d6780fbe68db454f5e72a42ff64d1fd6397df9f363ae786930fd5c1cd4", size = 148047, upload-time = "2025-09-04T08:29:01.761Z" },
{ url = "https://files.pythonhosted.org/packages/a8/64/3708a90d1ebe202ffdeb7185f878a3c84d15c2b2c31858da2ce0583e2def/nvidia_nvtx-13.0.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb7780edb6b14107373c835bf8b72e7a178bac7367e23da7acb108f973f157a6", size = 148878, upload-time = "2025-09-04T08:28:53.627Z" },
+ { url = "https://files.pythonhosted.org/packages/d2/50/0e2220f8620a177de994211186ffc5bfa9f2ce1e1282797f8f90096f9f88/nvidia_nvtx-13.0.85-py3-none-win_amd64.whl", hash = "sha256:d66ea44254dd3c6eacc300047af6e1288d2269dd072b417e0adffbf479e18519", size = 137066, upload-time = "2025-09-04T08:39:25.649Z" },
+]
+
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.8.90"
+source = { registry = "https://pypi.org/simple" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/10/c0/1b303feea90d296f6176f32a2a70b5ef230f9bdeb3a72bddb0dc922dc137/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615", size = 91161, upload-time = "2025-03-07T01:42:23.922Z" },
+ { url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" },
+ { url = "https://files.pythonhosted.org/packages/9f/99/4c9c0c329bf9fc125008c3b54c7c94c0023518d06fc025ae36431375e1fe/nvidia_nvtx_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e", size = 56492, upload-time = "2025-03-07T01:52:24.69Z" },
]
[[package]]
@@ -5028,7 +5332,7 @@ name = "obstore"
version = "0.8.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a3/8c/9ec984edd0f3b72226adfaa19b1c61b15823b35b52f311ca4af36d009d15/obstore-0.8.2.tar.gz", hash = "sha256:a467bc4e97169e2ba749981b4fd0936015428d9b8f3fb83a5528536b1b6f377f", size = 168852, upload-time = "2025-09-16T15:34:55.786Z" }
wheels = [
@@ -5077,9 +5381,9 @@ name = "ocrmac"
version = "1.0.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "click", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pillow", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-vision", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "click", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-vision", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5e/07/3e15ab404f75875c5e48c47163300eb90b7409044d8711fc3aaf52503f2e/ocrmac-1.0.1.tar.gz", hash = "sha256:507fe5e4cbd67b2d03f6729a52bbc11f9d0b58241134eb958a5daafd4b9d93d9", size = 1454317, upload-time = "2026-01-08T16:44:26.412Z" }
wheels = [
@@ -5113,10 +5417,10 @@ name = "onnx"
version = "1.20.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "ml-dtypes", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "protobuf", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "ml-dtypes", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "protobuf", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3b/8a/335c03a8683a88a32f9a6bb98899ea6df241a41df64b37b9696772414794/onnx-1.20.1.tar.gz", hash = "sha256:ded16de1df563d51fbc1ad885f2a426f814039d8b5f4feb77febe09c0295ad67", size = 12048980, upload-time = "2026-01-10T01:40:03.043Z" }
wheels = [
@@ -5620,7 +5924,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "python-dateutil" },
- { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32'" },
+ { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/2e/0c/b28ed414f080ee0ad153f848586d61d1878f91689950f037f976ce15f6c8/pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8", size = 4641901, upload-time = "2026-02-17T22:20:16.434Z" }
wheels = [
@@ -5965,7 +6269,7 @@ name = "portalocker"
version = "3.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pywin32", marker = "sys_platform == 'win32'" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5e/77/65b857a69ed876e1951e88aaba60f5ce6120c33703f7cb61a3c894b8c1b6/portalocker-3.2.0.tar.gz", hash = "sha256:1f3002956a54a8c3730586c5c77bf18fae4149e07eaf1c29fc3faf4d5a3f89ac", size = 95644, upload-time = "2025-06-14T13:20:40.03Z" }
wheels = [
@@ -6190,8 +6494,8 @@ name = "psycopg"
version = "3.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
- { name = "tzdata", marker = "sys_platform == 'win32'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d3/b6/379d0a960f8f435ec78720462fd94c4863e7a31237cf81bf76d0af5883bf/psycopg-3.3.3.tar.gz", hash = "sha256:5e9a47458b3c1583326513b2556a2a9473a1001a56c9efe9e587245b43148dd9", size = 165624, upload-time = "2026-02-18T16:52:16.546Z" }
wheels = [
@@ -6200,7 +6504,7 @@ wheels = [
[package.optional-dependencies]
binary = [
- { name = "psycopg-binary", marker = "implementation_name != 'pypy'" },
+ { name = "psycopg-binary", marker = "implementation_name != 'pypy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
pool = [
{ name = "psycopg-pool" },
@@ -6751,7 +7055,7 @@ name = "pyobjc-framework-cocoa"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/02/a3/16ca9a15e77c061a9250afbae2eae26f2e1579eb8ca9462ae2d2c71e1169/pyobjc_framework_cocoa-12.1.tar.gz", hash = "sha256:5556c87db95711b985d5efdaaf01c917ddd41d148b1e52a0c66b1a2e2c5c1640", size = 2772191, upload-time = "2025-11-14T10:13:02.069Z" }
wheels = [
@@ -6767,8 +7071,8 @@ name = "pyobjc-framework-coreml"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/30/2d/baa9ea02cbb1c200683cb7273b69b4bee5070e86f2060b77e6a27c2a9d7e/pyobjc_framework_coreml-12.1.tar.gz", hash = "sha256:0d1a4216891a18775c9e0170d908714c18e4f53f9dc79fb0f5263b2aa81609ba", size = 40465, upload-time = "2025-11-14T10:14:02.265Z" }
wheels = [
@@ -6784,8 +7088,8 @@ name = "pyobjc-framework-quartz"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/94/18/cc59f3d4355c9456fc945eae7fe8797003c4da99212dd531ad1b0de8a0c6/pyobjc_framework_quartz-12.1.tar.gz", hash = "sha256:27f782f3513ac88ec9b6c82d9767eef95a5cf4175ce88a1e5a65875fee799608", size = 3159099, upload-time = "2025-11-14T10:21:24.31Z" }
wheels = [
@@ -6801,10 +7105,10 @@ name = "pyobjc-framework-vision"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-coreml", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "pyobjc-framework-quartz", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-coreml", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-quartz", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c2/5a/08bb3e278f870443d226c141af14205ff41c0274da1e053b72b11dfc9fb2/pyobjc_framework_vision-12.1.tar.gz", hash = "sha256:a30959100e85dcede3a786c544e621ad6eb65ff6abf85721f805822b8c5fe9b0", size = 59538, upload-time = "2025-11-14T10:23:21.979Z" }
wheels = [
@@ -6918,7 +7222,7 @@ name = "pytest"
version = "9.0.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "iniconfig" },
{ name = "packaging" },
{ name = "pluggy" },
@@ -6935,7 +7239,7 @@ version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" }
wheels = [
@@ -7062,7 +7366,7 @@ name = "python-telegram-bot"
version = "22.7"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "httpcore", marker = "python_full_version >= '3.14'" },
+ { name = "httpcore", marker = "python_full_version >= '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "httpx" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e4/25/2258161b1069e66d6c39c0a602dbe57461d4767dc0012539970ea40bc9d6/python_telegram_bot-22.7.tar.gz", hash = "sha256:784b59ea3852fe4616ad63b4a0264c755637f5d725e87755ecdee28300febf61", size = 1516454, upload-time = "2026-03-16T09:36:03.174Z" }
@@ -7282,7 +7586,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
{ name = "rpds-py" },
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" }
wheels = [
@@ -7613,7 +7917,9 @@ wheels = [
torch = [
{ name = "numpy" },
{ name = "packaging" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[[package]]
@@ -7726,8 +8032,8 @@ name = "secretstorage"
version = "3.5.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cryptography", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
- { name = "jeepney", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'win32')" },
+ { name = "cryptography", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jeepney", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
wheels = [
@@ -7769,7 +8075,9 @@ dependencies = [
{ name = "numpy" },
{ name = "scikit-learn" },
{ name = "scipy" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "transformers" },
{ name = "typing-extensions" },
@@ -7987,7 +8295,9 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "curated-tokenizers" },
{ name = "curated-transformers" },
- { name = "torch" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d8/b3/a4fd3cf28008cbe1d95463b5c76a0d9c8da7b9ad4f06289c2be4aae62052/spacy_curated_transformers-0.3.1.tar.gz", hash = "sha256:7e53fccf64260e641b0a3f2b65b6d98381b86cef6eeb21ce279e8db849e8525d", size = 218990, upload-time = "2025-05-28T10:29:32.69Z" }
wheels = [
@@ -8017,7 +8327,7 @@ name = "sqlalchemy"
version = "2.0.48"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" },
+ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1f/73/b4a9737255583b5fa858e0bb8e116eb94b88c910164ed2ed719147bde3de/sqlalchemy-2.0.48.tar.gz", hash = "sha256:5ca74f37f3369b45e1f6b7b06afb182af1fd5dde009e4ffd831830d98cbe5fe7", size = 9886075, upload-time = "2026-03-02T15:28:51.474Z" }
@@ -8125,7 +8435,7 @@ version = "0.50.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
- { name = "typing-extensions", marker = "python_full_version < '3.13'" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" }
wheels = [
@@ -8252,6 +8562,20 @@ dependencies = [
{ name = "youtube-transcript-api" },
]
+[package.optional-dependencies]
+cpu = [
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cu128 = [
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+
[package.dev-dependencies]
dev = [
{ name = "httpx" },
@@ -8341,6 +8665,14 @@ requires-dist = [
{ name = "static-ffmpeg", specifier = ">=2.13" },
{ name = "stripe", specifier = ">=15.0.0" },
{ name = "tavily-python", specifier = ">=0.3.2" },
+ { name = "torch", marker = "sys_platform == 'linux' and extra == 'cpu'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "surf-new-backend", extra = "cpu" } },
+ { name = "torch", marker = "sys_platform == 'linux' and extra == 'cu128'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cu128", conflict = { package = "surf-new-backend", extra = "cu128" } },
+ { name = "torch", marker = "sys_platform != 'linux' and extra == 'cpu'", specifier = "==2.11.0" },
+ { name = "torch", marker = "sys_platform != 'linux' and extra == 'cu128'", specifier = "==2.11.0" },
+ { name = "torchvision", marker = "sys_platform == 'linux' and extra == 'cpu'", specifier = "==0.26.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "surf-new-backend", extra = "cpu" } },
+ { name = "torchvision", marker = "sys_platform == 'linux' and extra == 'cu128'", specifier = "==0.26.0", index = "https://download.pytorch.org/whl/cu128", conflict = { package = "surf-new-backend", extra = "cu128" } },
+ { name = "torchvision", marker = "sys_platform != 'linux' and extra == 'cpu'", specifier = "==0.26.0" },
+ { name = "torchvision", marker = "sys_platform != 'linux' and extra == 'cu128'", specifier = "==0.26.0" },
{ name = "tornado", specifier = ">=6.5.5" },
{ name = "trafilatura", specifier = ">=2.0.0" },
{ name = "typst", specifier = ">=0.14.0" },
@@ -8350,6 +8682,7 @@ requires-dist = [
{ name = "validators", specifier = ">=0.34.0" },
{ name = "youtube-transcript-api", specifier = ">=1.0.3" },
]
+provides-extras = ["cpu", "cu128"]
[package.metadata.requires-dev]
dev = [
@@ -8511,11 +8844,15 @@ name = "timm"
version = "1.0.26"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pyyaml", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "safetensors", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "torch", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "torchvision", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyyaml", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "safetensors", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/7b/1e/e924b3b2326a856aaf68586f9c52a5fc81ef45715eca408393b68c597e0e/timm-1.0.26.tar.gz", hash = "sha256:f66f082f2f381cf68431c22714c8b70f723837fa2a185b155961eab90f2d5b10", size = 2419859, upload-time = "2026-03-23T18:12:10.272Z" }
wheels = [
@@ -8579,21 +8916,47 @@ wheels = [
name = "torch"
version = "2.11.0"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+]
dependencies = [
- { name = "cuda-bindings", marker = "sys_platform == 'linux'" },
- { name = "cuda-toolkit", extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "sys_platform == 'linux'" },
- { name = "filelock" },
- { name = "fsspec" },
- { name = "jinja2" },
- { name = "networkx" },
- { name = "nvidia-cudnn-cu13", marker = "sys_platform == 'linux'" },
- { name = "nvidia-cusparselt-cu13", marker = "sys_platform == 'linux'" },
- { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" },
- { name = "nvidia-nvshmem-cu13", marker = "sys_platform == 'linux'" },
- { name = "setuptools" },
- { name = "sympy" },
- { name = "triton", marker = "sys_platform == 'linux'" },
- { name = "typing-extensions" },
+ { name = "cuda-bindings", version = "13.2.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-toolkit", version = "13.0.2", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cudnn-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparselt-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nccl-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvshmem-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "triton", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/6f/8b/69e3008d78e5cee2b30183340cc425081b78afc5eff3d080daab0adda9aa/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b5866312ee6e52ea625cd211dcb97d6a2cdc1131a5f15cc0d87eec948f6dd34", size = 80606338, upload-time = "2026-03-23T18:11:34.781Z" },
@@ -8618,14 +8981,124 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/cf/bf/c8d12a2c86dbfd7f40fb2f56fbf5a505ccf2d9ce131eb559dfc7c51e1a04/torch-2.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b2a43985ff5ef6ddd923bbcf99943e5f58059805787c5c9a2622bf05ca2965b0", size = 114792991, upload-time = "2026-03-23T18:08:19.216Z" },
]
+[[package]]
+name = "torch"
+version = "2.11.0+cpu"
+source = { registry = "https://download.pytorch.org/whl/cpu" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:2db3ae5404e32cb42b5fcbd94f13607761eaec0cf1687fde95095289d1e26cfb", upload-time = "2026-04-28T00:06:06Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:70ecb2659af6373b7c5336e692e665605b0201ea21ff51aaea47e1d75ea6b5aa", upload-time = "2026-04-28T00:06:14Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f82e2ae20c1545bb03997d1cc3143d94e14b800038669ee1aca45808a9acc338", upload-time = "2026-04-28T00:06:24Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:1abeaa46fa7532ed35ed79146f4de5d7a9d4b30462c98052ea4ddfe781ea3eca", upload-time = "2026-04-28T00:06:34Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-linux_s390x.whl", hash = "sha256:d1eff25ccc454faf21c9666c81bfab8e405e87c12d300708d4559620bc191a36", upload-time = "2026-04-28T00:06:42Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:48b3e21a311445acdd0b27f13830e21d93adef70d4721e051e9f059baeb9b8f9", upload-time = "2026-04-28T00:06:51Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:45025d7752dbc6b4c784c03afaee9c5f19730ce084b2e43fc9a2fe1677d9ff86", upload-time = "2026-04-28T00:07:02Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:ed70d4a4fc9f8b826c02fa1a9800a83820fb2fa6ae607680b53390f9ef394d85", upload-time = "2026-04-28T00:07:12Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-linux_s390x.whl", hash = "sha256:65d427a196ab0abe359b93c5bffedd76ded02df2b1b1d2d9f11a2609b69f426a", upload-time = "2026-04-28T00:07:19Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8f13dc7075ae04ca5f876a9f40b4e47522a04c23e30824b4409f42a3f3e57aa4", upload-time = "2026-04-28T00:07:27Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:8713bb8679376ea0ec25742100b6cfb8447e0904c48bddefb9eb0ac1abbfa60a", upload-time = "2026-04-28T00:07:37Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:62ec1f1694c185f601eab74eb7fc0e8e10c64c06ae82f13c3592774c231c4877", upload-time = "2026-04-28T00:07:47Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-linux_s390x.whl", hash = "sha256:c9a14c367f470623b978e273a4e1915995b4ba7a0ae999178b06c273eea3536f", upload-time = "2026-04-28T00:07:54Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:71676f6a9a84bbd385e010198b51fa1c2324fb8f3c512a32d2c81af65f68f4c9", upload-time = "2026-04-28T00:08:02Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:f8481ea9088e4e5b81178a75aabdbb658bde8639bc1a15fd5d8f930abc966735", upload-time = "2026-04-28T00:08:11Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:7575af4c9f7f7500ed62b1dafeb069aa0ba35b368a5f09793b3976b3d50f4fe4", upload-time = "2026-04-28T00:08:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-linux_s390x.whl", hash = "sha256:825f1596878280a3a4c861441674888bc2d792e4ab7b045cb35feeab3f4f5dd7", upload-time = "2026-04-28T00:08:27Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c8a0bdfb2fd915b6c2cd27c856f63f729c366a4917772eba6b2b02aa3bce70d5", upload-time = "2026-04-28T00:08:36Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:768f22924a25cad2adeb9c6cbac5159e71067c8d4019b1511960d7435a5ca652", upload-time = "2026-04-28T00:08:47Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:6db45e7b2526d996fbf47c3d08737807a60a4e17996a6d91a97027fe260832c8", upload-time = "2026-04-28T00:08:57Z" },
+]
+
+[[package]]
+name = "torch"
+version = "2.11.0+cu128"
+source = { registry = "https://download.pytorch.org/whl/cu128" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "cuda-bindings", version = "12.9.7", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-toolkit", version = "12.8.1", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cudnn-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparselt-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nccl-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvshmem-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9c8f38efee365cb9d334de8a83ce52fc7e5fc9e5a7b0853285efa1b69e00b0f2", upload-time = "2026-04-27T17:41:30Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d252cf975fb18c94a85336323ad425f473df56dab35a44b00399bd70c7a3b997", upload-time = "2026-04-27T17:42:06Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-win_amd64.whl", hash = "sha256:7c78215c3af4f62e63f2b2e360f1722fc719b0853c7ac22666483d9810613a4c", upload-time = "2026-04-27T17:43:49Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:7db3580106bba044da5b8950f3fb8fe5f31999eaab3f6a3aa2ac5d202c3684d2", upload-time = "2026-04-27T17:45:35Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:db964b33c55035a72ab3e2162287af8f1cc276039c65d015740cc88c26dcedf7", upload-time = "2026-04-27T17:46:18Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313-win_amd64.whl", hash = "sha256:6f367e62fd81b75cdf23ca4b75ced834d2db2cf98d1588ac935bde345de9de23", upload-time = "2026-04-27T17:48:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cd1cf1005c5fe419194ee294b7b584ba5ad0f2fb1778b3fe5a7b9c3f4617ddbc", upload-time = "2026-04-27T17:50:01Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:74b628dbc71603977b09f4e140792c6e997081a35ef3421555f3f6e201b81210", upload-time = "2026-04-27T17:50:42Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp313-cp313t-win_amd64.whl", hash = "sha256:c2a5984deba8e001d166bf9cb83b8351f63a28b009e1a2fa0e4bbf08c90b259b", upload-time = "2026-04-27T17:52:32Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:baa52f7b8a53cab16587b10f1c27d1000ca033f97236878b685b75d5a1b92408", upload-time = "2026-04-27T17:54:24Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:d389a850677f0d24dafae1573644034428d8d3b9c80b51d55ba62fed7e6c8777", upload-time = "2026-04-27T17:55:03Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314-win_amd64.whl", hash = "sha256:d6c21797ff75271b4fbdd905e2d703be4ecea5ea5bbdde4d1c201e9c71bc411d", upload-time = "2026-04-27T17:56:46Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:06849e9311dbb0617c97557d9c26c99a9e1c4f2ac9cb8e9b6d9b420d522acb91", upload-time = "2026-04-27T17:58:48Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:169a9987e1f84f0c5eee07544b3a34827a163ac9180e23abf0c3548f1335762c", upload-time = "2026-04-27T17:59:26Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp314-cp314t-win_amd64.whl", hash = "sha256:d86c125d720c2c368c53bd1a4ef062916d91fa965c10448c74c78b5d039faf2d", upload-time = "2026-04-27T18:01:14Z" },
+]
+
[[package]]
name = "torchvision"
version = "0.26.0"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+]
dependencies = [
- { name = "numpy" },
- { name = "pillow" },
- { name = "torch" },
+ { name = "numpy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/ae/e7/56b47cc3b132aea90ccce22bcb8975dec688b002150012acc842846039d0/torchvision-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c409e1c3fdebec7a3834465086dbda8bf7680eff79abf7fd2f10c6b59520a7a4", size = 1863502, upload-time = "2026-03-23T18:12:57.326Z" },
@@ -8650,6 +9123,70 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/d0/6a/09f3844c10643f6c0de5d95abc863420cfaf194c88c7dffd0ac523e2015f/torchvision-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e9d0e022c19a78552fb055d0414d47fecb4a649309b9968573daea160ba6869c", size = 4454275, upload-time = "2026-03-23T18:12:27.487Z" },
]
+[[package]]
+name = "torchvision"
+version = "0.26.0+cpu"
+source = { registry = "https://download.pytorch.org/whl/cpu" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:17f0b542331fc94230b4214c6d123f038af7330fd81019608c0d2402f3bc3079", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:cf547dc0975eb40bc3249be4ccbeb736597d2c3ece305b1c4e5b7a5dd7363567", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:52aa8401850a9792e71a8a1e65ac004e2b23622a6b6fd278cd11179efbefc65b", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2e932af123a39137815dfd152c64cc683fa7cbd327c965e807c9728c7aa4971a", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:16c4f11eda096dc377e82238c8ebb26c7013622c0f1b2c4dcf85fc70f96c0ea7", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:34ac55a1f614baca2e0f5cef20ddb36184ee3503423871260e1ddd72caf9cb5f", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:3d30ce3444698807d4b18b199645cd7a95e0b16a4cd0909b8aab47c562a7673a", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:870a97101168d4da68039d3d51f0c781047065e82dc4c19b2eb0ddff08486180", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:050aaf28cff9c2981ec72dc3f9b4ef77bcf9c9c99330ce426cb06c5bb9e6e726", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:78576c8d5a8665de6caaa6e7c3a3fb7caa5dc112032ba60e129a9e78a446a03b", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:78e88d0a57bfadcd17042aa92fe4dd1059e48fcaa2e54a10ac7f438c2eca10d5", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314-win_amd64.whl", hash = "sha256:93144d0997c51b27996c8305df4d9104efb0d38c9a9b6b05c8bc20ebdf7193b5", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:93a11b159613ad920b1d42c4eb4e585f48e5dff895f3e08f517ef482fe84e130", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:99f86ec0a83b9e4b5428a452bf667f99a9ae27d4c32bd4b2081fe917303e7710", upload-time = "2026-03-23T15:36:09Z" },
+ { url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:6139108231a29ffb607931360ee24594553a939467c65530f734a2ed9918f011", upload-time = "2026-03-23T15:36:09Z" },
+]
+
+[[package]]
+name = "torchvision"
+version = "0.26.0+cu128"
+source = { registry = "https://download.pytorch.org/whl/cu128" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:63e35234aed13b6edda37056f417b5c281249669db631e706811917af36b21d7", upload-time = "2026-04-09T23:21:35Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ccf26b4b659cfce6f2208cb8326071d51c70219a34856dfdf468d1e19af52c0d", upload-time = "2026-03-23T15:36:22Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-win_amd64.whl", hash = "sha256:8c0d1c4fbb2c9a4d5d41d0aaa87da20e525bcb2a154ce405725b0be59456804b", upload-time = "2026-04-09T23:21:36Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c4a9cacd521f2a4df0bcd9d8e96704771b928f478f1f3067e4085bb53a1da298", upload-time = "2026-04-09T23:21:37Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:cb1f6184a7ba30fba40580e1a01a6604a86c55e79fdda187f40116ee680441ec", upload-time = "2026-03-23T15:36:22Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313-win_amd64.whl", hash = "sha256:0232cb219927a52d6c98ff202f32d1cdf4802c2195a85fc1f1a0c1b0b4983a4d", upload-time = "2026-04-09T23:21:38Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e594732552a8c2fee2ace9c6475c6c6904fc44ccca622ee6765a89a045416a44", upload-time = "2026-04-09T23:21:38Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6168abc019803ac9e97efce27eafd2fdb33db04dcc54a86039537729e5047b29", upload-time = "2026-03-23T15:36:23Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp313-cp313t-win_amd64.whl", hash = "sha256:367d42ea703844ecdb516e9d5eb09929012a58705d2622cf4e9e3c37f278cb85", upload-time = "2026-04-09T23:21:39Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:b3865fa227661dd75b7b28c96d3d14e739bd08bf0614132758922fe0e7206f91", upload-time = "2026-04-09T23:21:39Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:aac647c9130f1f25f5c8f5bca3d95cfd96bdfac93ab54529690b088e64e4fa64", upload-time = "2026-03-23T15:36:23Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314-win_amd64.whl", hash = "sha256:6319e1ba49c6f62ac9902f73d0eab207b8a4dc6b4d3392fe9edd9903fff1be0a", upload-time = "2026-04-09T23:21:40Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:e2ee9e16ee4518292694537fcbd20d2d27044e381d92b864f637e82795796a84", upload-time = "2026-04-09T23:21:40Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:b5772c55bfda4377df8f1930d43c4e0231ef231b0228eade4b227c8d3ba6e34e", upload-time = "2026-03-23T15:36:23Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp314-cp314t-win_amd64.whl", hash = "sha256:f160dc552a086244f7102c898f7be8ef46a41b36bce5ea80a4f2493cb30ca1fc", upload-time = "2026-04-09T23:21:41Z" },
+]
+
[[package]]
name = "tornado"
version = "6.5.5"
@@ -8672,7 +9209,7 @@ name = "tqdm"
version = "4.67.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" }
wheels = [
@@ -8866,7 +9403,7 @@ version = "6.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "id" },
- { name = "keyring", marker = "platform_machine != 'ppc64le' and platform_machine != 's390x'" },
+ { name = "keyring", marker = "(platform_machine != 'ppc64le' and platform_machine != 's390x') or (platform_machine == 'ppc64le' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (platform_machine == 's390x' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "readme-renderer" },
{ name = "requests" },
@@ -8979,7 +9516,7 @@ name = "tzlocal"
version = "5.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "tzdata", marker = "sys_platform == 'win32'" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" }
wheels = [
@@ -9032,11 +9569,11 @@ all-docs = [
{ name = "pdfminer-six" },
{ name = "pi-heif" },
{ name = "pikepdf" },
- { name = "pypandoc-binary", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "pypandoc-binary", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "pypdf" },
{ name = "python-docx" },
{ name = "python-pptx" },
- { name = "unstructured-inference", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "unstructured-inference", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "unstructured-pytesseract" },
{ name = "xlrd" },
]
@@ -9065,22 +9602,24 @@ name = "unstructured-inference"
version = "1.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "accelerate", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "matplotlib", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "onnx", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "onnxruntime", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "opencv-python", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pandas", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pdfminer-six", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "pypdfium2", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "python-multipart", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "rapidfuzz", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "scipy", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "timm", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "torch", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
- { name = "transformers", marker = "python_full_version < '3.13' or sys_platform != 'win32'" },
+ { name = "accelerate", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "matplotlib", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "onnx", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "onnxruntime", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "opencv-python", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pandas", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pdfminer-six", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pypdfium2", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "python-multipart", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "rapidfuzz", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "scipy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "timm", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "transformers", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ce/10/8f3bccfa9f1e0101a402ae1f529e07876541c6b18004747f0e793ed41f9e/unstructured_inference-1.2.0.tar.gz", hash = "sha256:19ca28512f3649c70a759cf2a4e98663e942a1b83c1acdb9506b0445f4862f23", size = 45732, upload-time = "2026-01-30T20:57:58.019Z" }
wheels = [
@@ -9155,11 +9694,11 @@ wheels = [
[package.optional-dependencies]
standard = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "httptools" },
{ name = "python-dotenv" },
{ name = "pyyaml" },
- { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" },
+ { name = "uvloop", marker = "(platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32') or (platform_python_implementation == 'PyPy' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'cygwin' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "watchfiles" },
{ name = "websockets" },
]
@@ -9236,7 +9775,7 @@ dependencies = [
{ name = "aiolimiter" },
{ name = "ffmpeg-python" },
{ name = "langchain-text-splitters" },
- { name = "numpy", marker = "python_full_version < '3.14'" },
+ { name = "numpy", marker = "python_full_version < '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "pillow" },
{ name = "pydantic" },
{ name = "requests" },
@@ -9253,7 +9792,7 @@ name = "wasabi"
version = "1.1.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32'" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ac/f9/054e6e2f1071e963b5e746b48d1e3727470b2a490834d18ad92364929db3/wasabi-1.1.3.tar.gz", hash = "sha256:4bb3008f003809db0c3e28b4daf20906ea871a2bb43f9914197d540f4f2e0878", size = 30391, upload-time = "2024-05-31T16:56:18.99Z" }
wheels = [
From f0ef3c02acb45bd32b79eb37af62013da22cb675 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Fri, 5 Jun 2026 22:25:32 +0530
Subject: [PATCH 04/18] feat(pyproject): add support for CUDA 12.6 in optional
dependencies
- Introduced a new optional dependency group for CUDA 12.6 in pyproject.toml.
- Updated conflict resolution to include CUDA 12.6 alongside existing configurations.
- Added source configurations for PyTorch and torchvision for CUDA 12.6.
---
surfsense_backend/pyproject.toml | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/surfsense_backend/pyproject.toml b/surfsense_backend/pyproject.toml
index 9f373c112..ca92ef617 100644
--- a/surfsense_backend/pyproject.toml
+++ b/surfsense_backend/pyproject.toml
@@ -94,6 +94,7 @@ dependencies = [
[project.optional-dependencies]
cpu = ["torch==2.11.0", "torchvision==0.26.0"]
+cu126 = ["torch==2.11.0", "torchvision==0.26.0"]
cu128 = ["torch==2.11.0", "torchvision==0.26.0"]
[dependency-groups]
@@ -106,15 +107,17 @@ dev = [
]
[tool.uv]
-conflicts = [[{ extra = "cpu" }, { extra = "cu128" }]]
+conflicts = [[{ extra = "cpu" }, { extra = "cu126" }, { extra = "cu128" }]]
[tool.uv.sources]
torch = [
{ index = "pytorch-cpu", extra = "cpu", marker = "sys_platform == 'linux'" },
+ { index = "pytorch-cu126", extra = "cu126", marker = "sys_platform == 'linux'" },
{ index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'linux'" },
]
torchvision = [
{ index = "pytorch-cpu", extra = "cpu", marker = "sys_platform == 'linux'" },
+ { index = "pytorch-cu126", extra = "cu126", marker = "sys_platform == 'linux'" },
{ index = "pytorch-cu128", extra = "cu128", marker = "sys_platform == 'linux'" },
]
@@ -123,6 +126,11 @@ name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
+[[tool.uv.index]]
+name = "pytorch-cu126"
+url = "https://download.pytorch.org/whl/cu126"
+explicit = true
+
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
From 3259e41d6bdd9c5859a2a667a2c7a5af333a67b7 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Fri, 5 Jun 2026 23:32:30 +0530
Subject: [PATCH 05/18] chore(uv.lock): update dependency resolution for CUDA
12.6
---
surfsense_backend/uv.lock | 1038 ++++++++++++++++++++++++++-----------
1 file changed, 740 insertions(+), 298 deletions(-)
diff --git a/surfsense_backend/uv.lock b/surfsense_backend/uv.lock
index 7d9293192..70fae3801 100644
--- a/surfsense_backend/uv.lock
+++ b/surfsense_backend/uv.lock
@@ -2,39 +2,51 @@ version = 1
revision = 3
requires-python = ">=3.12"
resolution-markers = [
- "python_full_version >= '3.14' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
]
conflicts = [[
{ package = "surf-new-backend", extra = "cpu" },
+ { package = "surf-new-backend", extra = "cu126" },
{ package = "surf-new-backend", extra = "cu128" },
]]
@@ -49,9 +61,10 @@ dependencies = [
{ name = "psutil" },
{ name = "pyyaml" },
{ name = "safetensors" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ca/14/787e5498cd062640f0f3d92ef4ae4063174f76f9afd29d13fc52a319daae/accelerate-1.13.0.tar.gz", hash = "sha256:d631b4e0f5b3de4aff2d7e9e6857d164810dfc3237d54d017f075122d057b236", size = 402835, upload-time = "2026-03-04T19:34:12.359Z" }
wheels = [
@@ -197,7 +210,7 @@ version = "1.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "frozenlist" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" }
wheels = [
@@ -288,7 +301,7 @@ version = "4.13.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "idna" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" }
wheels = [
@@ -734,7 +747,7 @@ name = "build"
version = "1.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "(os_name == 'nt' and sys_platform != 'linux') or (os_name != 'nt' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (os_name == 'nt' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "(os_name == 'nt' and sys_platform != 'linux') or (os_name != 'nt' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (os_name != 'nt' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (os_name != 'nt' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (os_name == 'nt' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pyproject-hooks" },
]
@@ -833,7 +846,7 @@ name = "cffi"
version = "2.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
wheels = [
@@ -1004,9 +1017,10 @@ all = [
{ name = "tabulate" },
{ name = "tiktoken" },
{ name = "tokenizers" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "transformers" },
{ name = "tree-sitter" },
{ name = "tree-sitter-language-pack" },
@@ -1091,7 +1105,7 @@ name = "click"
version = "8.1.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" }
wheels = [
@@ -1177,7 +1191,7 @@ name = "colorlog"
version = "6.10.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a2/61/f083b5ac52e505dfc1c624eafbf8c7589a0d7f32daa398d2e7590efa5fda/colorlog-6.10.1.tar.gz", hash = "sha256:eb4ae5cb65fe7fec7773c2306061a8e63e02efc2c72eba9d27b0fa23c94f1321", size = 17162, upload-time = "2025-10-16T16:14:11.978Z" }
wheels = [
@@ -1232,7 +1246,7 @@ name = "contourpy"
version = "1.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" }
wheels = [
@@ -1324,7 +1338,7 @@ name = "cryptography"
version = "46.0.6"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cffi", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cffi", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a4/ba/04b1bd4218cbc58dc90ce967106d51582371b898690f3ae0402876cc4f34/cryptography-46.0.6.tar.gz", hash = "sha256:27550628a518c5c6c903d84f637fbecf287f6cb9ced3804838a1295dc1fd0759", size = 750542, upload-time = "2026-03-25T23:34:53.396Z" }
wheels = [
@@ -1430,7 +1444,7 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform == 'linux'",
]
dependencies = [
- { name = "cuda-pathfinder", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-pathfinder", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/32/45/557d4ed1fa54f0c7db8aee083229f624990d69f7d00f55477eed5c7e169a/cuda_bindings-12.9.7-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0666d3c082ef8f4b2d670950589373550e9f3bf564d635dd883f24a0b40402ff", size = 7071026, upload-time = "2026-05-27T18:44:13.356Z" },
@@ -1460,7 +1474,7 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform != 'win32'",
]
dependencies = [
- { name = "cuda-pathfinder", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-pathfinder", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/52/c8/b2589d68acf7e3d63e2be330b84bc25712e97ed799affbca7edd7eae25d6/cuda_bindings-13.2.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e865447abfb83d6a98ad5130ed3c70b1fc295ae3eeee39fd07b4ddb0671b6788", size = 5722404, upload-time = "2026-03-11T00:12:44.041Z" },
@@ -1485,6 +1499,54 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/93/66/0c02bd330e7d976f83fa68583d6198d76f23581bcbb5c0e98a6148f326e5/cuda_pathfinder-1.5.0-py3-none-any.whl", hash = "sha256:498f90a9e9de36044a7924742aecce11c50c49f735f1bc53e05aa46de9ea4110", size = 49739, upload-time = "2026-03-24T21:14:30.869Z" },
]
+[[package]]
+name = "cuda-toolkit"
+version = "12.6.3"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ad/88/2dbc37975fffb874418b14380418a1b99cb36f2101fd1d08c54e06ee8c95/cuda_toolkit-12.6.3-py2.py3-none-any.whl", hash = "sha256:79d8605baeb6c2f695761e0efb54bc62dbc3c9e32eb0742df7669c07befaa8f7", size = 2288, upload-time = "2025-08-13T02:03:05.283Z" },
+]
+
+[package.optional-dependencies]
+cublas = [
+ { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cudart = [
+ { name = "nvidia-cuda-runtime-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cufft = [
+ { name = "nvidia-cufft-cu12", version = "11.3.0.4", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cufile = [
+ { name = "nvidia-cufile-cu12", version = "1.11.1.6", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cupti = [
+ { name = "nvidia-cuda-cupti-cu12", version = "12.6.80", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+curand = [
+ { name = "nvidia-curand-cu12", version = "10.3.7.77", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cusolver = [
+ { name = "nvidia-cusolver-cu12", version = "11.7.1.2", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cusparse = [
+ { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvjitlink = [
+ { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvrtc = [
+ { name = "nvidia-cuda-nvrtc-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+nvtx = [
+ { name = "nvidia-nvtx-cu12", version = "12.6.77", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+
[[package]]
name = "cuda-toolkit"
version = "12.8.1"
@@ -1500,37 +1562,37 @@ wheels = [
[package.optional-dependencies]
cublas = [
- { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cudart = [
- { name = "nvidia-cuda-runtime-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-runtime-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufft = [
- { name = "nvidia-cufft-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cufft-cu12", version = "11.3.3.83", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufile = [
- { name = "nvidia-cufile-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cufile-cu12", version = "1.13.1.3", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cupti = [
- { name = "nvidia-cuda-cupti-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-cupti-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
curand = [
- { name = "nvidia-curand-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-curand-cu12", version = "10.3.9.90", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusolver = [
- { name = "nvidia-cusolver-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusolver-cu12", version = "11.7.3.90", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusparse = [
- { name = "nvidia-cusparse-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvjitlink = [
- { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvrtc = [
- { name = "nvidia-cuda-nvrtc-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-nvrtc-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvtx = [
- { name = "nvidia-nvtx-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvtx-cu12", version = "12.8.90", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[[package]]
@@ -1548,37 +1610,37 @@ wheels = [
[package.optional-dependencies]
cublas = [
- { name = "nvidia-cublas", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cudart = [
- { name = "nvidia-cuda-runtime", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-runtime", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufft = [
- { name = "nvidia-cufft", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cufft", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cufile = [
- { name = "nvidia-cufile", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cufile", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cupti = [
- { name = "nvidia-cuda-cupti", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-cupti", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
curand = [
- { name = "nvidia-curand", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-curand", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusolver = [
- { name = "nvidia-cusolver", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusolver", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cusparse = [
- { name = "nvidia-cusparse", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvjitlink = [
- { name = "nvidia-nvjitlink", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvrtc = [
- { name = "nvidia-cuda-nvrtc", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cuda-nvrtc", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
nvtx = [
- { name = "nvidia-nvtx", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvtx", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[[package]]
@@ -1602,9 +1664,10 @@ name = "curated-transformers"
version = "0.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/70/06/6c12c149a7f737dacc76b4c3949dbc7ff87d622567b86996896ae4d104aa/curated-transformers-0.1.1.tar.gz", hash = "sha256:4671f03314df30efda2ec2b59bc7692ea34fcea44cb65382342c16684e8a2119", size = 16313, upload-time = "2023-05-24T07:29:22.801Z" }
wheels = [
@@ -1886,7 +1949,7 @@ version = "2.7.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aiohttp" },
- { name = "audioop-lts", marker = "python_full_version >= '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "audioop-lts", marker = "python_full_version >= '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ef/57/9a2d9abdabdc9db8ef28ce0cf4129669e1c8717ba28d607b5ba357c4de3b/discord_py-2.7.1.tar.gz", hash = "sha256:24d5e6a45535152e4b98148a9dd6b550d25dc2c9fb41b6d670319411641249da", size = 1106326, upload-time = "2026-03-03T18:40:46.24Z" }
wheels = [
@@ -1936,7 +1999,7 @@ dependencies = [
{ name = "huggingface-hub" },
{ name = "lxml" },
{ name = "marko" },
- { name = "ocrmac", marker = "sys_platform == 'darwin' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "ocrmac", marker = "sys_platform == 'darwin' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "openpyxl" },
{ name = "pandas" },
{ name = "pillow" },
@@ -1952,12 +2015,14 @@ dependencies = [
{ name = "requests" },
{ name = "rtree" },
{ name = "scipy" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "typer" },
]
@@ -2013,12 +2078,14 @@ dependencies = [
{ name = "pydantic" },
{ name = "rtree" },
{ name = "safetensors", extra = ["torch"] },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "transformers" },
]
@@ -2035,7 +2102,7 @@ dependencies = [
{ name = "docling-core" },
{ name = "pillow" },
{ name = "pydantic" },
- { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tabulate" },
]
sdist = { url = "https://files.pythonhosted.org/packages/76/34/f951e261d20cc71bc55703a3f4f51b13d8dc98ed634995905ecc41e5650a/docling_parse-5.6.1.tar.gz", hash = "sha256:e47d40a7c268a775c41a8cc7773555a5856a1bcfd5a05ee97ee0a162270ad7f9", size = 61127846, upload-time = "2026-03-24T11:15:01.304Z" }
@@ -2183,7 +2250,7 @@ name = "faker"
version = "40.11.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fa/e5/b16bf568a2f20fe7423282db4a4059dbcadef70e9029c1c106836f8edd84/faker-40.11.1.tar.gz", hash = "sha256:61965046e79e8cfde4337d243eac04c0d31481a7c010033141103b43f603100c", size = 1957415, upload-time = "2026-03-23T14:05:50.233Z" }
wheels = [
@@ -3110,7 +3177,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock" },
{ name = "fsspec" },
- { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "hf-xet", marker = "platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pyyaml" },
{ name = "requests" },
@@ -3450,9 +3517,9 @@ dependencies = [
{ name = "jaraco-classes" },
{ name = "jaraco-context" },
{ name = "jaraco-functools" },
- { name = "jeepney", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pywin32-ctypes", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "secretstorage", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jeepney", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32-ctypes", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "secretstorage", marker = "sys_platform == 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/43/4b/674af6ef2f97d56f0ab5153bf0bfa28ccb6c3ed4d1babf4305449668807b/keyring-25.7.0.tar.gz", hash = "sha256:fe01bd85eb3f8fb3dd0405defdeac9a5b4f6f0439edbb3149577f244a2e8245b", size = 63516, upload-time = "2025-11-16T16:26:09.482Z" }
wheels = [
@@ -3554,9 +3621,10 @@ dependencies = [
{ name = "loguru" },
{ name = "misaki", extra = ["en"] },
{ name = "numpy" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "transformers" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e8/48/88b8cdf28b068d070195c2817175549dee48e7682e3ab8994bee5f69217e/kokoro-0.9.4.tar.gz", hash = "sha256:fbf633262797f8cf46fdac3315cf9cade67dc8b762c0feccf334892772fb9ac4", size = 26215928, upload-time = "2025-04-05T22:01:35.294Z" }
@@ -3846,7 +3914,7 @@ version = "0.7.22"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "httpx" },
- { name = "orjson", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "orjson", marker = "platform_python_implementation != 'PyPy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "pydantic" },
{ name = "requests" },
@@ -4043,8 +4111,8 @@ name = "loguru"
version = "0.7.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "win32-setctime", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "win32-setctime", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" }
wheels = [
@@ -4308,15 +4376,15 @@ name = "matplotlib"
version = "3.10.8"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "contourpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "cycler", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "fonttools", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "kiwisolver", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "packaging", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pillow", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyparsing", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "python-dateutil", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "contourpy" },
+ { name = "cycler" },
+ { name = "fonttools" },
+ { name = "kiwisolver" },
+ { name = "numpy" },
+ { name = "packaging" },
+ { name = "pillow" },
+ { name = "pyparsing" },
+ { name = "python-dateutil" },
]
sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" }
wheels = [
@@ -4370,12 +4438,12 @@ dependencies = [
{ name = "pydantic-settings" },
{ name = "pyjwt", extra = ["crypto"] },
{ name = "python-multipart" },
- { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "sse-starlette" },
{ name = "starlette" },
{ name = "typing-extensions" },
{ name = "typing-inspection" },
- { name = "uvicorn", marker = "sys_platform != 'emscripten' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "uvicorn", marker = "sys_platform != 'emscripten' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/fc/6d/62e76bbb8144d6ed86e202b5edd8a4cb631e7c8130f3f4893c3f90262b10/mcp-1.26.0.tar.gz", hash = "sha256:db6e2ef491eecc1a0d93711a76f28dec2e05999f93afd48795da1c1137142c66", size = 608005, upload-time = "2026-01-24T19:40:32.468Z" }
wheels = [
@@ -4427,7 +4495,7 @@ name = "ml-dtypes"
version = "0.5.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy" },
]
sdist = { url = "https://files.pythonhosted.org/packages/0e/4a/c27b42ed9b1c7d13d9ba8b6905dece787d6259152f2309338aed29b2447b/ml_dtypes-0.5.4.tar.gz", hash = "sha256:8ab06a50fb9bf9666dd0fe5dfb4676fa2b0ac0f31ecff72a6c3af8e22c063453", size = 692314, upload-time = "2025-11-17T22:32:31.031Z" }
wheels = [
@@ -4574,7 +4642,7 @@ version = "2.10.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pygments" },
- { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3a/93/80ac75c20ce54c785648b4ed363c88f148bf22637e10c9863db4fbe73e74/mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97", size = 271270, upload-time = "2024-05-07T14:00:31.815Z" }
@@ -5006,10 +5074,30 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/10/f5/f50bc3f5c2bb57ab8f5b4d78bc1146b57810d42cb8fcb28cbe2e14050376/nvidia_cublas-13.1.0.3-py3-none-win_amd64.whl", hash = "sha256:2a3b94a37def342471c59fad7856caee4926809a72dd5270155d6a31b5b277be", size = 404355960, upload-time = "2025-10-09T09:07:00.987Z" },
]
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.6.4.1"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/af/eb/ff4b8c503fa1f1796679dce648854d58751982426e4e4b37d6fce49d259c/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:08ed2686e9875d01b58e3cb379c6896df8e76c75e0d4a7f7dace3d7b6d9ef8eb", size = 393138322, upload-time = "2024-11-20T17:40:25.65Z" },
+ { url = "https://files.pythonhosted.org/packages/97/0d/f1f0cadbf69d5b9ef2e4f744c9466cb0a850741d08350736dfdb4aa89569/nvidia_cublas_cu12-12.6.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:235f728d6e2a409eddf1df58d5b0921cf80cfa9e72b9f2775ccb7b4a87984668", size = 390794615, upload-time = "2024-11-20T17:39:52.715Z" },
+ { url = "https://files.pythonhosted.org/packages/84/f7/985e9bdbe3e0ac9298fcc8cfa51a392862a46a0ffaccbbd56939b62a9c83/nvidia_cublas_cu12-12.6.4.1-py3-none-win_amd64.whl", hash = "sha256:9e4fa264f4d8a4eb0cdbd34beadc029f453b3bafae02401e999cf3d5a5af75f8", size = 434535301, upload-time = "2024-11-20T17:50:41.681Z" },
+]
+
[[package]]
name = "nvidia-cublas-cu12"
version = "12.8.4.1"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/29/99/db44d685f0e257ff0e213ade1964fc459b4a690a73293220e98feb3307cf/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0", size = 590537124, upload-time = "2025-03-07T01:43:53.556Z" },
{ url = "https://files.pythonhosted.org/packages/dc/61/e24b560ab2e2eaeb3c839129175fb330dfcfc29e5203196e5541a4c44682/nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142", size = 594346921, upload-time = "2025-03-07T01:44:31.254Z" },
@@ -5026,10 +5114,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ad/df/b74b10025c1205695c5676373f2edd3e87a7202cc62ead0dfbc373b0f6ea/nvidia_cuda_cupti-13.0.85-py3-none-win_amd64.whl", hash = "sha256:683f58d301548deeefcb8f6fac1b8d907691b9d8b18eccab417f51e362102f00", size = 7736776, upload-time = "2025-09-04T08:38:08.38Z" },
]
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.6.80"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/e6/8b/2f6230cb715646c3a9425636e513227ce5c93c4d65823a734f4bb86d43c3/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:166ee35a3ff1587f2490364f90eeeb8da06cd867bd5b701bf7f9a02b78bc63fc", size = 8236764, upload-time = "2024-11-20T17:35:41.03Z" },
+ { url = "https://files.pythonhosted.org/packages/25/0f/acb326ac8fd26e13c799e0b4f3b2751543e1834f04d62e729485872198d4/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_aarch64.whl", hash = "sha256:358b4a1d35370353d52e12f0a7d1769fc01ff74a191689d3870b2123156184c4", size = 8236756, upload-time = "2024-10-01T16:57:45.507Z" },
+ { url = "https://files.pythonhosted.org/packages/49/60/7b6497946d74bcf1de852a21824d63baad12cd417db4195fc1bfe59db953/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6768bad6cab4f19e8292125e5f1ac8aa7d1718704012a0e3272a6f61c4bce132", size = 8917980, upload-time = "2024-11-20T17:36:04.019Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/24/120ee57b218d9952c379d1e026c4479c9ece9997a4fb46303611ee48f038/nvidia_cuda_cupti_cu12-12.6.80-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a3eff6cdfcc6a4c35db968a06fcadb061cbc7d6dde548609a941ff8701b98b73", size = 8917972, upload-time = "2024-10-01T16:58:06.036Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/81/7796f096afaf726796b1b648f3bc80cafc61fe7f77f44a483c89e6c5ef34/nvidia_cuda_cupti_cu12-12.6.80-py3-none-win_amd64.whl", hash = "sha256:bbe6ae76e83ce5251b56e8c8e61a964f757175682bbad058b170b136266ab00a", size = 5724175, upload-time = "2024-10-01T17:09:47.955Z" },
+]
+
[[package]]
name = "nvidia-cuda-cupti-cu12"
version = "12.8.90"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/d5/1f/b3bd73445e5cb342727fd24fe1f7b748f690b460acadc27ea22f904502c8/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed", size = 9533318, upload-time = "2025-03-07T01:40:10.421Z" },
{ url = "https://files.pythonhosted.org/packages/f8/02/2adcaa145158bf1a8295d83591d22e4103dbfd821bcaf6f3f53151ca4ffa/nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182", size = 10248621, upload-time = "2025-03-07T01:40:21.213Z" },
@@ -5046,10 +5156,30 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/4a/af/345fedb9f4c76c84ab4fa445b36bd4048a4d9db60e6bc76b4f913ff4b852/nvidia_cuda_nvrtc-13.0.88-py3-none-win_amd64.whl", hash = "sha256:6bcd4e7f8e205cbe644f5a98f2f799bef9556fefc89dd786e79a16312ce49872", size = 76807835, upload-time = "2025-09-04T08:39:15.274Z" },
]
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.6.85"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f5/31/ffb400c5ae99daf09687aa6c42831c5d824f71c4851363ed2a4a1ac52bab/nvidia_cuda_nvrtc_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:800927308ccc5dd6246d3f61f7fcef2ed7ec4e59e199090d360d3293f78bd5a2", size = 23649944, upload-time = "2024-11-20T17:38:06.511Z" },
+ { url = "https://files.pythonhosted.org/packages/48/ab/476146f59ff5ef5bd6e62c187097d859ea78b5752d19c6c3f9be5f90dafc/nvidia_cuda_nvrtc_cu12-12.6.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f3134f50963882373063901657554f230bedf6039d30b09f6be55c64c993a37", size = 23162872, upload-time = "2024-11-20T17:37:42.967Z" },
+ { url = "https://files.pythonhosted.org/packages/0c/f7/472414aee887d626373d0b2140a59ac4308e3eaed815060e5410fc83305a/nvidia_cuda_nvrtc_cu12-12.6.85-py3-none-win_amd64.whl", hash = "sha256:a419e2c95e75b88b602f8bb66f82a6c5651e8475a509841c958486b1b71510bf", size = 39026436, upload-time = "2024-11-20T17:49:13.633Z" },
+]
+
[[package]]
name = "nvidia-cuda-nvrtc-cu12"
version = "12.8.93"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/05/6b/32f747947df2da6994e999492ab306a903659555dddc0fbdeb9d71f75e52/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994", size = 88040029, upload-time = "2025-03-07T01:42:13.562Z" },
{ url = "https://files.pythonhosted.org/packages/eb/d1/e50d0acaab360482034b84b6e27ee83c6738f7d32182b987f9c7a4e32962/nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8", size = 43106076, upload-time = "2025-03-07T01:41:59.817Z" },
@@ -5066,22 +5196,67 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/94/6b867483bec07da24ffa32736c79fabb94ef3a7af4d787a9d4a974868576/nvidia_cuda_runtime-13.0.96-py3-none-win_amd64.whl", hash = "sha256:f79298c8a098cec150a597c8eba58ecdab96e3bdc4b9bc4f9983635031740492", size = 2927037, upload-time = "2025-10-09T09:04:23.782Z" },
]
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.6.77"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/8f/ea/590b2ac00d772a8abd1c387a92b46486d2679ca6622fd25c18ff76265663/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6116fad3e049e04791c0256a9778c16237837c08b27ed8c8401e2e45de8d60cd", size = 908052, upload-time = "2024-11-20T17:35:19.905Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/3d/159023799677126e20c8fd580cca09eeb28d5c5a624adc7f793b9aa8bbfa/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d461264ecb429c84c8879a7153499ddc7b19b5f8d84c204307491989a365588e", size = 908040, upload-time = "2024-10-01T16:57:22.221Z" },
+ { url = "https://files.pythonhosted.org/packages/e1/23/e717c5ac26d26cf39a27fbc076240fad2e3b817e5889d671b67f4f9f49c5/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba3b56a4f896141e25e19ab287cd71e52a6a0f4b29d0d31609f60e3b4d5219b7", size = 897690, upload-time = "2024-11-20T17:35:30.697Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/62/65c05e161eeddbafeca24dc461f47de550d9fa8a7e04eb213e32b55cfd99/nvidia_cuda_runtime_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a84d15d5e1da416dd4774cb42edf5e954a3e60cc945698dc1d5be02321c44dc8", size = 897678, upload-time = "2024-10-01T16:57:33.821Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/76/4c80fa138333cc975743fd0687a745fccb30d167f906f13c1c7f9a85e5ea/nvidia_cuda_runtime_cu12-12.6.77-py3-none-win_amd64.whl", hash = "sha256:86c58044c824bf3c173c49a2dbc7a6c8b53cb4e4dca50068be0bf64e9dab3f7f", size = 891773, upload-time = "2024-10-01T17:09:26.362Z" },
+]
+
[[package]]
name = "nvidia-cuda-runtime-cu12"
version = "12.8.90"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/7c/75/f865a3b236e4647605ea34cc450900854ba123834a5f1598e160b9530c3a/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d", size = 965265, upload-time = "2025-03-07T01:39:43.533Z" },
{ url = "https://files.pythonhosted.org/packages/0d/9b/a997b638fcd068ad6e4d53b8551a7d30fe8b404d6f1804abf1df69838932/nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90", size = 954765, upload-time = "2025-03-07T01:40:01.615Z" },
{ url = "https://files.pythonhosted.org/packages/30/a5/a515b7600ad361ea14bfa13fb4d6687abf500adc270f19e89849c0590492/nvidia_cuda_runtime_cu12-12.8.90-py3-none-win_amd64.whl", hash = "sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8", size = 944318, upload-time = "2025-03-07T01:51:01.794Z" },
]
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "9.10.2.21"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/90/0bd6e586701b3a890fd38aa71c387dab4883d619d6e5ad912ccbd05bfd67/nvidia_cudnn_cu12-9.10.2.21-py3-none-win_amd64.whl", hash = "sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e", size = 692992268, upload-time = "2025-06-06T21:55:18.114Z" },
+]
+
[[package]]
name = "nvidia-cudnn-cu12"
version = "9.19.0.56"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
dependencies = [
- { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/09/b8/277c51962ee46fa3e5b203ac5f76107c650f781d6891e681e28e6f3e9fe6/nvidia_cudnn_cu12-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:08caaf27fe556aca82a3ee3b5aa49a77e7de0cfcb7ff4e5c29da426387a8267e", size = 656910700, upload-time = "2026-02-03T20:40:25.508Z" },
@@ -5094,7 +5269,7 @@ name = "nvidia-cudnn-cu13"
version = "9.19.0.56"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/f1/84/26025437c1e6b61a707442184fa0c03d083b661adf3a3eecfd6d21677740/nvidia_cudnn_cu13-9.19.0.56-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:6ed29ffaee1176c612daf442e4dd6cfeb6a0caa43ddcbeb59da94953030b1be4", size = 433781201, upload-time = "2026-02-03T20:40:53.805Z" },
@@ -5107,7 +5282,7 @@ name = "nvidia-cufft"
version = "12.0.0.61"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/8b/ae/f417a75c0259e85c1d2f83ca4e960289a5f814ed0cea74d18c353d3e989d/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2708c852ef8cd89d1d2068bdbece0aa188813a0c934db3779b9b1faa8442e5f5", size = 214053554, upload-time = "2025-09-04T08:31:38.196Z" },
@@ -5115,12 +5290,37 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/85/b2/f8af21a2ed1beed337a6a02c5a28aeb85441f4d578ec3d529543c775ea4b/nvidia_cufft-12.0.0.61-py3-none-win_amd64.whl", hash = "sha256:2abce5b39d2f5ae12730fb7e5db6696533e36c26e2d3e8fd1750bdd2853364eb", size = 213342123, upload-time = "2025-09-04T08:40:51.145Z" },
]
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.3.0.4"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1f/37/c50d2b2f2c07e146776389e3080f4faf70bcc4fa6e19d65bb54ca174ebc3/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d16079550df460376455cba121db6564089176d9bac9e4f360493ca4741b22a6", size = 200164144, upload-time = "2024-11-20T17:40:58.288Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/f5/188566814b7339e893f8d210d3a5332352b1409815908dad6a363dcceac1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8510990de9f96c803a051822618d42bf6cb8f069ff3f48d93a8486efdacb48fb", size = 200164135, upload-time = "2024-10-01T17:03:24.212Z" },
+ { url = "https://files.pythonhosted.org/packages/8f/16/73727675941ab8e6ffd86ca3a4b7b47065edcca7a997920b831f8147c99d/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ccba62eb9cef5559abd5e0d54ceed2d9934030f51163df018532142a8ec533e5", size = 200221632, upload-time = "2024-11-20T17:41:32.357Z" },
+ { url = "https://files.pythonhosted.org/packages/60/de/99ec247a07ea40c969d904fc14f3a356b3e2a704121675b75c366b694ee1/nvidia_cufft_cu12-11.3.0.4-py3-none-manylinux2014_x86_64.whl", hash = "sha256:768160ac89f6f7b459bee747e8d175dbf53619cfe74b2a5636264163138013ca", size = 200221622, upload-time = "2024-10-01T17:03:58.79Z" },
+ { url = "https://files.pythonhosted.org/packages/b4/38/36fd800cec8f6e89b7c1576edaaf8076e69ec631644cdbc1b5f2e2b5a9df/nvidia_cufft_cu12-11.3.0.4-py3-none-win_amd64.whl", hash = "sha256:6048ebddfb90d09d2707efb1fd78d4e3a77cb3ae4dc60e19aab6be0ece2ae464", size = 199356881, upload-time = "2024-10-01T17:13:01.861Z" },
+]
+
[[package]]
name = "nvidia-cufft-cu12"
version = "11.3.3.83"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
dependencies = [
- { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/60/bc/7771846d3a0272026c416fbb7e5f4c1f146d6d80704534d0b187dd6f4800/nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a", size = 193109211, upload-time = "2025-03-07T01:44:56.873Z" },
@@ -5137,10 +5337,29 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/ab/73/cc4a14c9813a8a0d509417cf5f4bdaba76e924d58beb9864f5a7baceefbf/nvidia_cufile-1.15.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:bdc0deedc61f548bddf7733bdc216456c2fdb101d020e1ab4b88d232d5e2f6d1", size = 1136992, upload-time = "2025-09-04T08:32:14.119Z" },
]
+[[package]]
+name = "nvidia-cufile-cu12"
+version = "1.11.1.6"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b2/66/cc9876340ac68ae71b15c743ddb13f8b30d5244af344ec8322b449e35426/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc23469d1c7e52ce6c1d55253273d32c565dd22068647f3aa59b3c6b005bf159", size = 1142103, upload-time = "2024-11-20T17:42:11.83Z" },
+ { url = "https://files.pythonhosted.org/packages/17/bf/cc834147263b929229ce4aadd62869f0b195e98569d4c28b23edc72b85d9/nvidia_cufile_cu12-1.11.1.6-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8f57a0051dcf2543f6dc2b98a98cb2719c37d3cee1baba8965d57f3bbc90d4db", size = 1066155, upload-time = "2024-11-20T17:41:49.376Z" },
+]
+
[[package]]
name = "nvidia-cufile-cu12"
version = "1.13.1.3"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/bb/fe/1bcba1dfbfb8d01be8d93f07bfc502c93fa23afa6fd5ab3fc7c1df71038a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc", size = 1197834, upload-time = "2025-03-07T01:45:50.723Z" },
{ url = "https://files.pythonhosted.org/packages/1e/f5/5607710447a6fe9fd9b3283956fceeee8a06cda1d2f56ce31371f595db2a/nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a", size = 1120705, upload-time = "2025-03-07T01:45:41.434Z" },
@@ -5156,10 +5375,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/99/27/72103153b1ffc00e09fdc40ac970235343dcd1ea8bd762e84d2d73219ffa/nvidia_curand-10.4.0.35-py3-none-win_amd64.whl", hash = "sha256:65b1710aa6961d326b411e314b374290904c5ddf41dc3f766ebc3f1d7d4ca69f", size = 55242481, upload-time = "2025-08-04T10:30:41.831Z" },
]
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.7.77"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/42/ac/36543605358a355632f1a6faa3e2d5dfb91eab1e4bc7d552040e0383c335/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:6e82df077060ea28e37f48a3ec442a8f47690c7499bff392a5938614b56c98d8", size = 56289881, upload-time = "2024-10-01T17:04:18.981Z" },
+ { url = "https://files.pythonhosted.org/packages/73/1b/44a01c4e70933637c93e6e1a8063d1e998b50213a6b65ac5a9169c47e98e/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a42cd1344297f70b9e39a1e4f467a4e1c10f1da54ff7a85c12197f6c652c8bdf", size = 56279010, upload-time = "2024-11-20T17:42:50.958Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/aa/2c7ff0b5ee02eaef890c0ce7d4f74bc30901871c5e45dee1ae6d0083cd80/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:99f1a32f1ac2bd134897fc7a203f779303261268a65762a623bf30cc9fe79117", size = 56279000, upload-time = "2024-10-01T17:04:45.274Z" },
+ { url = "https://files.pythonhosted.org/packages/a6/02/5362a9396f23f7de1dd8a64369e87c85ffff8216fc8194ace0fa45ba27a5/nvidia_curand_cu12-10.3.7.77-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7b2ed8e95595c3591d984ea3603dd66fe6ce6812b886d59049988a712ed06b6e", size = 56289882, upload-time = "2024-11-20T17:42:25.222Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/a8/0cd0cec757bd4b4b4ef150fca62ec064db7d08a291dced835a0be7d2c147/nvidia_curand_cu12-10.3.7.77-py3-none-win_amd64.whl", hash = "sha256:6d6d935ffba0f3d439b7cd968192ff068fafd9018dbf1b85b37261b13cfc9905", size = 55783873, upload-time = "2024-10-01T17:13:30.377Z" },
+]
+
[[package]]
name = "nvidia-curand-cu12"
version = "10.3.9.90"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/45/5e/92aa15eca622a388b80fbf8375d4760738df6285b1e92c43d37390a33a9a/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd", size = 63625754, upload-time = "2025-03-07T01:46:10.735Z" },
{ url = "https://files.pythonhosted.org/packages/fb/aa/6584b56dc84ebe9cf93226a5cde4d99080c8e90ab40f0c27bda7a0f29aa1/nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9", size = 63619976, upload-time = "2025-03-07T01:46:23.323Z" },
@@ -5171,9 +5412,9 @@ name = "nvidia-cusolver"
version = "12.0.4.66"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cusparse", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/c8/c3/b30c9e935fc01e3da443ec0116ed1b2a009bb867f5324d3f2d7e533e776b/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:02c2457eaa9e39de20f880f4bd8820e6a1cfb9f9a34f820eb12a155aa5bc92d2", size = 223467760, upload-time = "2025-09-04T08:33:04.222Z" },
@@ -5181,14 +5422,41 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/99/ef/332a0101260ca78a1daef046bf0b06199e8ed4dac1d2aa698289c358169c/nvidia_cusolver-12.0.4.66-py3-none-win_amd64.whl", hash = "sha256:16515bd33a8e76bb54d024cfa068fa68d30e80fc34b9e1090813ea9362e0cb65", size = 193551444, upload-time = "2025-09-04T08:41:46.813Z" },
]
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.7.1.2"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "nvidia-cublas-cu12", version = "12.6.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse-cu12", version = "12.5.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/93/17/dbe1aa865e4fdc7b6d4d0dd308fdd5aaab60f939abfc0ea1954eac4fb113/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0ce237ef60acde1efc457335a2ddadfd7610b892d94efee7b776c64bb1cac9e0", size = 157833628, upload-time = "2024-10-01T17:05:05.591Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/6e/c2cf12c9ff8b872e92b4a5740701e51ff17689c4d726fca91875b07f655d/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e9e49843a7707e42022babb9bcfa33c29857a93b88020c4e4434656a655b698c", size = 158229790, upload-time = "2024-11-20T17:43:43.211Z" },
+ { url = "https://files.pythonhosted.org/packages/9f/81/baba53585da791d043c10084cf9553e074548408e04ae884cfe9193bd484/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6cf28f17f64107a0c4d7802be5ff5537b2130bfc112f25d5a30df227058ca0e6", size = 158229780, upload-time = "2024-10-01T17:05:39.875Z" },
+ { url = "https://files.pythonhosted.org/packages/7c/5f/07d0ba3b7f19be5a5ec32a8679fc9384cfd9fc6c869825e93be9f28d6690/nvidia_cusolver_cu12-11.7.1.2-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:dbbe4fc38ec1289c7e5230e16248365e375c3673c9c8bac5796e2e20db07f56e", size = 157833630, upload-time = "2024-11-20T17:43:16.77Z" },
+ { url = "https://files.pythonhosted.org/packages/d4/53/fff50a0808df7113d77e3bbc7c2b7eaed6f57d5eb80fbe93ead2aea1e09a/nvidia_cusolver_cu12-11.7.1.2-py3-none-win_amd64.whl", hash = "sha256:6813f9d8073f555444a8705f3ab0296d3e1cb37a16d694c5fc8b862a0d8706d7", size = 149287877, upload-time = "2024-10-01T17:13:49.804Z" },
+]
+
[[package]]
name = "nvidia-cusolver-cu12"
version = "11.7.3.90"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
dependencies = [
- { name = "nvidia-cublas-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cusparse-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cublas-cu12", version = "12.8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparse-cu12", version = "12.5.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/c8/32/f7cd6ce8a7690544d084ea21c26e910a97e077c9b7f07bf5de623ee19981/nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0", size = 267229841, upload-time = "2025-03-07T01:46:54.356Z" },
@@ -5201,7 +5469,7 @@ name = "nvidia-cusparse"
version = "12.6.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/f8/94/5c26f33738ae35276672f12615a64bd008ed5be6d1ebcb23579285d960a9/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:80bcc4662f23f1054ee334a15c72b8940402975e0eab63178fc7e670aa59472c", size = 162155568, upload-time = "2025-09-04T08:33:42.864Z" },
@@ -5209,12 +5477,37 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/02/b0/b043d6f3480f102f885cf87fc3ffd3edcb5e23b855025a50e2ef4d059185/nvidia_cusparse-12.6.3.3-py3-none-win_amd64.whl", hash = "sha256:cbcf42feb737bd7ec15b4c0a63e62351886bd3f975027b8815d7f720a2b5ea79", size = 143783033, upload-time = "2025-09-04T08:42:12.391Z" },
]
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.5.4.2"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "nvidia-nvjitlink-cu12", version = "12.6.85", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/eb/eb/6681efd0aa7df96b4f8067b3ce7246833dd36830bb4cec8896182773db7d/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d25b62fb18751758fe3c93a4a08eff08effedfe4edf1c6bb5afd0890fe88f887", size = 216451147, upload-time = "2024-11-20T17:44:18.055Z" },
+ { url = "https://files.pythonhosted.org/packages/d3/56/3af21e43014eb40134dea004e8d0f1ef19d9596a39e4d497d5a7de01669f/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7aa32fa5470cf754f72d1116c7cbc300b4e638d3ae5304cfa4a638a5b87161b1", size = 216451135, upload-time = "2024-10-01T17:06:03.826Z" },
+ { url = "https://files.pythonhosted.org/packages/06/1e/b8b7c2f4099a37b96af5c9bb158632ea9e5d9d27d7391d7eb8fc45236674/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7556d9eca156e18184b94947ade0fba5bb47d69cec46bf8660fd2c71a4b48b73", size = 216561367, upload-time = "2024-11-20T17:44:54.824Z" },
+ { url = "https://files.pythonhosted.org/packages/43/ac/64c4316ba163e8217a99680c7605f779accffc6a4bcd0c778c12948d3707/nvidia_cusparse_cu12-12.5.4.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:23749a6571191a215cb74d1cdbff4a86e7b19f1200c071b3fcf844a5bea23a2f", size = 216561357, upload-time = "2024-10-01T17:06:29.861Z" },
+ { url = "https://files.pythonhosted.org/packages/45/ef/876ad8e4260e1128e6d4aac803d9d51baf3791ebdb4a9b8d9b8db032b4b0/nvidia_cusparse_cu12-12.5.4.2-py3-none-win_amd64.whl", hash = "sha256:4acb8c08855a26d737398cba8fb6f8f5045d93f82612b4cfd84645a2332ccf20", size = 213712630, upload-time = "2024-10-01T17:14:23.779Z" },
+]
+
[[package]]
name = "nvidia-cusparse-cu12"
version = "12.5.8.93"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
dependencies = [
- { name = "nvidia-nvjitlink-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvjitlink-cu12", version = "12.8.93", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/bc/f7/cd777c4109681367721b00a106f491e0d0d15cfa1fd59672ce580ce42a97/nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc", size = 288117129, upload-time = "2025-03-07T01:47:40.407Z" },
@@ -5270,10 +5563,30 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/e4/01/07530b0e37546231052e30234540289c42eaffa486f1a34a87fed340157b/nvidia_nvjitlink-13.0.88-py3-none-win_amd64.whl", hash = "sha256:634e96e3da9ef845ae744097a1f289238ecf946ce0b82e93cdce14b9782e682f", size = 36035115, upload-time = "2025-09-04T08:43:03.001Z" },
]
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.6.85"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9d/d7/c5383e47c7e9bf1c99d5bd2a8c935af2b6d705ad831a7ec5c97db4d82f4f/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a", size = 19744971, upload-time = "2024-11-20T17:46:53.366Z" },
+ { url = "https://files.pythonhosted.org/packages/31/db/dc71113d441f208cdfe7ae10d4983884e13f464a6252450693365e166dcf/nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cf4eaa7d4b6b543ffd69d6abfb11efdeb2db48270d94dfd3a452c24150829e41", size = 19270338, upload-time = "2024-11-20T17:46:29.758Z" },
+ { url = "https://files.pythonhosted.org/packages/89/76/93c1467b1387387440a4d25102d86b7794535449b689f8e2dc22c1c8ff7f/nvidia_nvjitlink_cu12-12.6.85-py3-none-win_amd64.whl", hash = "sha256:e61120e52ed675747825cdd16febc6a0730537451d867ee58bee3853b1b13d1c", size = 161908572, upload-time = "2024-11-20T17:52:40.124Z" },
+]
+
[[package]]
name = "nvidia-nvjitlink-cu12"
version = "12.8.93"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/f6/74/86a07f1d0f42998ca31312f998bd3b9a7eff7f52378f4f270c8679c77fb9/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88", size = 39254836, upload-time = "2025-03-07T01:49:55.661Z" },
{ url = "https://files.pythonhosted.org/packages/2a/a2/8cee5da30d13430e87bf99bb33455d2724d0a4a9cb5d7926d80ccb96d008/nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7", size = 38386204, upload-time = "2025-03-07T01:49:43.612Z" },
@@ -5308,10 +5621,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/d2/50/0e2220f8620a177de994211186ffc5bfa9f2ce1e1282797f8f90096f9f88/nvidia_nvtx-13.0.85-py3-none-win_amd64.whl", hash = "sha256:d66ea44254dd3c6eacc300047af6e1288d2269dd072b417e0adffbf479e18519", size = 137066, upload-time = "2025-09-04T08:39:25.649Z" },
]
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.6.77"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b9/93/80f8a520375af9d7ee44571a6544653a176e53c2b8ccce85b97b83c2491b/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f44f8d86bb7d5629988d61c8d3ae61dddb2015dee142740536bc7481b022fe4b", size = 90549, upload-time = "2024-11-20T17:38:17.387Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/53/36e2fd6c7068997169b49ffc8c12d5af5e5ff209df6e1a2c4d373b3a638f/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:adcaabb9d436c9761fca2b13959a2d237c5f9fd406c8e4b723c695409ff88059", size = 90539, upload-time = "2024-10-01T17:00:27.179Z" },
+ { url = "https://files.pythonhosted.org/packages/56/9a/fff8376f8e3d084cd1530e1ef7b879bb7d6d265620c95c1b322725c694f4/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b90bed3df379fa79afbd21be8e04a0314336b8ae16768b58f2d34cb1d04cd7d2", size = 89276, upload-time = "2024-11-20T17:38:27.621Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/4e/0d0c945463719429b7bd21dece907ad0bde437a2ff12b9b12fee94722ab0/nvidia_nvtx_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6574241a3ec5fdc9334353ab8c479fe75841dbe8f4532a8fc97ce63503330ba1", size = 89265, upload-time = "2024-10-01T17:00:38.172Z" },
+ { url = "https://files.pythonhosted.org/packages/f7/cd/98a447919d4ed14d407ac82b14b0a0c9c1dbfe81099934b1fc3bfd1e6316/nvidia_nvtx_cu12-12.6.77-py3-none-win_amd64.whl", hash = "sha256:2fb11a4af04a5e6c84073e6404d26588a34afd35379f0855a99797897efa75c0", size = 56434, upload-time = "2024-10-01T17:11:13.124Z" },
+]
+
[[package]]
name = "nvidia-nvtx-cu12"
version = "12.8.90"
source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
wheels = [
{ url = "https://files.pythonhosted.org/packages/10/c0/1b303feea90d296f6176f32a2a70b5ef230f9bdeb3a72bddb0dc922dc137/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615", size = 91161, upload-time = "2025-03-07T01:42:23.922Z" },
{ url = "https://files.pythonhosted.org/packages/a2/eb/86626c1bbc2edb86323022371c39aa48df6fd8b0a1647bc274577f72e90b/nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f", size = 89954, upload-time = "2025-03-07T01:42:44.131Z" },
@@ -5332,7 +5667,7 @@ name = "obstore"
version = "0.8.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/a3/8c/9ec984edd0f3b72226adfaa19b1c61b15823b35b52f311ca4af36d009d15/obstore-0.8.2.tar.gz", hash = "sha256:a467bc4e97169e2ba749981b4fd0936015428d9b8f3fb83a5528536b1b6f377f", size = 168852, upload-time = "2025-09-16T15:34:55.786Z" }
wheels = [
@@ -5381,9 +5716,9 @@ name = "ocrmac"
version = "1.0.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "click", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pillow", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-vision", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "click", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-vision", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5e/07/3e15ab404f75875c5e48c47163300eb90b7409044d8711fc3aaf52503f2e/ocrmac-1.0.1.tar.gz", hash = "sha256:507fe5e4cbd67b2d03f6729a52bbc11f9d0b58241134eb958a5daafd4b9d93d9", size = 1454317, upload-time = "2026-01-08T16:44:26.412Z" }
wheels = [
@@ -5417,10 +5752,10 @@ name = "onnx"
version = "1.20.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "ml-dtypes", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "protobuf", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "ml-dtypes" },
+ { name = "numpy" },
+ { name = "protobuf" },
+ { name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/3b/8a/335c03a8683a88a32f9a6bb98899ea6df241a41df64b37b9696772414794/onnx-1.20.1.tar.gz", hash = "sha256:ded16de1df563d51fbc1ad885f2a426f814039d8b5f4feb77febe09c0295ad67", size = 12048980, upload-time = "2026-01-10T01:40:03.043Z" }
wheels = [
@@ -5924,7 +6259,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "numpy" },
{ name = "python-dateutil" },
- { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "tzdata", marker = "sys_platform == 'emscripten' or sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/2e/0c/b28ed414f080ee0ad153f848586d61d1878f91689950f037f976ce15f6c8/pandas-3.0.1.tar.gz", hash = "sha256:4186a699674af418f655dbd420ed87f50d56b4cd6603784279d9eef6627823c8", size = 4641901, upload-time = "2026-02-17T22:20:16.434Z" }
wheels = [
@@ -6269,7 +6604,7 @@ name = "portalocker"
version = "3.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pywin32", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/5e/77/65b857a69ed876e1951e88aaba60f5ce6120c33703f7cb61a3c894b8c1b6/portalocker-3.2.0.tar.gz", hash = "sha256:1f3002956a54a8c3730586c5c77bf18fae4149e07eaf1c29fc3faf4d5a3f89ac", size = 95644, upload-time = "2025-06-14T13:20:40.03Z" }
wheels = [
@@ -6494,8 +6829,8 @@ name = "psycopg"
version = "3.3.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d3/b6/379d0a960f8f435ec78720462fd94c4863e7a31237cf81bf76d0af5883bf/psycopg-3.3.3.tar.gz", hash = "sha256:5e9a47458b3c1583326513b2556a2a9473a1001a56c9efe9e587245b43148dd9", size = 165624, upload-time = "2026-02-18T16:52:16.546Z" }
wheels = [
@@ -6504,7 +6839,7 @@ wheels = [
[package.optional-dependencies]
binary = [
- { name = "psycopg-binary", marker = "implementation_name != 'pypy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "psycopg-binary", marker = "implementation_name != 'pypy' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
pool = [
{ name = "psycopg-pool" },
@@ -7055,7 +7390,7 @@ name = "pyobjc-framework-cocoa"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-core", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/02/a3/16ca9a15e77c061a9250afbae2eae26f2e1579eb8ca9462ae2d2c71e1169/pyobjc_framework_cocoa-12.1.tar.gz", hash = "sha256:5556c87db95711b985d5efdaaf01c917ddd41d148b1e52a0c66b1a2e2c5c1640", size = 2772191, upload-time = "2025-11-14T10:13:02.069Z" }
wheels = [
@@ -7071,8 +7406,8 @@ name = "pyobjc-framework-coreml"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-core", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/30/2d/baa9ea02cbb1c200683cb7273b69b4bee5070e86f2060b77e6a27c2a9d7e/pyobjc_framework_coreml-12.1.tar.gz", hash = "sha256:0d1a4216891a18775c9e0170d908714c18e4f53f9dc79fb0f5263b2aa81609ba", size = 40465, upload-time = "2025-11-14T10:14:02.265Z" }
wheels = [
@@ -7088,8 +7423,8 @@ name = "pyobjc-framework-quartz"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-core", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/94/18/cc59f3d4355c9456fc945eae7fe8797003c4da99212dd531ad1b0de8a0c6/pyobjc_framework_quartz-12.1.tar.gz", hash = "sha256:27f782f3513ac88ec9b6c82d9767eef95a5cf4175ce88a1e5a65875fee799608", size = 3159099, upload-time = "2025-11-14T10:21:24.31Z" }
wheels = [
@@ -7105,10 +7440,10 @@ name = "pyobjc-framework-vision"
version = "12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pyobjc-core", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-cocoa", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-coreml", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyobjc-framework-quartz", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten') or (sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-core", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-cocoa", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-coreml", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pyobjc-framework-quartz", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/c2/5a/08bb3e278f870443d226c141af14205ff41c0274da1e053b72b11dfc9fb2/pyobjc_framework_vision-12.1.tar.gz", hash = "sha256:a30959100e85dcede3a786c544e621ad6eb65ff6abf85721f805822b8c5fe9b0", size = 59538, upload-time = "2025-11-14T10:23:21.979Z" }
wheels = [
@@ -7222,7 +7557,7 @@ name = "pytest"
version = "9.0.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "iniconfig" },
{ name = "packaging" },
{ name = "pluggy" },
@@ -7239,7 +7574,7 @@ version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" }
wheels = [
@@ -7366,7 +7701,7 @@ name = "python-telegram-bot"
version = "22.7"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "httpcore", marker = "python_full_version >= '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "httpcore", marker = "python_full_version >= '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "httpx" },
]
sdist = { url = "https://files.pythonhosted.org/packages/e4/25/2258161b1069e66d6c39c0a602dbe57461d4767dc0012539970ea40bc9d6/python_telegram_bot-22.7.tar.gz", hash = "sha256:784b59ea3852fe4616ad63b4a0264c755637f5d725e87755ecdee28300febf61", size = 1516454, upload-time = "2026-03-16T09:36:03.174Z" }
@@ -7586,7 +7921,7 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
{ name = "rpds-py" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" }
wheels = [
@@ -7917,9 +8252,10 @@ wheels = [
torch = [
{ name = "numpy" },
{ name = "packaging" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[[package]]
@@ -8032,8 +8368,8 @@ name = "secretstorage"
version = "3.5.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "cryptography", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "jeepney", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cryptography", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jeepney", marker = "(python_full_version < '3.13' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or sys_platform == 'linux' or (sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1c/03/e834bcd866f2f8a49a85eaff47340affa3bfa391ee9912a952a1faa68c7b/secretstorage-3.5.0.tar.gz", hash = "sha256:f04b8e4689cbce351744d5537bf6b1329c6fc68f91fa666f60a380edddcd11be", size = 19884, upload-time = "2025-11-23T19:02:53.191Z" }
wheels = [
@@ -8075,9 +8411,10 @@ dependencies = [
{ name = "numpy" },
{ name = "scikit-learn" },
{ name = "scipy" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "tqdm" },
{ name = "transformers" },
{ name = "typing-extensions" },
@@ -8295,9 +8632,10 @@ source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "curated-tokenizers" },
{ name = "curated-transformers" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/d8/b3/a4fd3cf28008cbe1d95463b5c76a0d9c8da7b9ad4f06289c2be4aae62052/spacy_curated_transformers-0.3.1.tar.gz", hash = "sha256:7e53fccf64260e641b0a3f2b65b6d98381b86cef6eeb21ce279e8db849e8525d", size = 218990, upload-time = "2025-05-28T10:29:32.69Z" }
wheels = [
@@ -8327,7 +8665,7 @@ name = "sqlalchemy"
version = "2.0.48"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1f/73/b4a9737255583b5fa858e0bb8e116eb94b88c910164ed2ed719147bde3de/sqlalchemy-2.0.48.tar.gz", hash = "sha256:5ca74f37f3369b45e1f6b7b06afb182af1fd5dde009e4ffd831830d98cbe5fe7", size = 9886075, upload-time = "2026-03-02T15:28:51.474Z" }
@@ -8435,7 +8773,7 @@ version = "0.50.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" }
wheels = [
@@ -8564,16 +8902,22 @@ dependencies = [
[package.optional-dependencies]
cpu = [
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+cu126 = [
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
cu128 = [
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform != 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
[package.dev-dependencies]
@@ -8666,12 +9010,16 @@ requires-dist = [
{ name = "stripe", specifier = ">=15.0.0" },
{ name = "tavily-python", specifier = ">=0.3.2" },
{ name = "torch", marker = "sys_platform == 'linux' and extra == 'cpu'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "surf-new-backend", extra = "cpu" } },
+ { name = "torch", marker = "sys_platform == 'linux' and extra == 'cu126'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cu126", conflict = { package = "surf-new-backend", extra = "cu126" } },
{ name = "torch", marker = "sys_platform == 'linux' and extra == 'cu128'", specifier = "==2.11.0", index = "https://download.pytorch.org/whl/cu128", conflict = { package = "surf-new-backend", extra = "cu128" } },
{ name = "torch", marker = "sys_platform != 'linux' and extra == 'cpu'", specifier = "==2.11.0" },
+ { name = "torch", marker = "sys_platform != 'linux' and extra == 'cu126'", specifier = "==2.11.0" },
{ name = "torch", marker = "sys_platform != 'linux' and extra == 'cu128'", specifier = "==2.11.0" },
{ name = "torchvision", marker = "sys_platform == 'linux' and extra == 'cpu'", specifier = "==0.26.0", index = "https://download.pytorch.org/whl/cpu", conflict = { package = "surf-new-backend", extra = "cpu" } },
+ { name = "torchvision", marker = "sys_platform == 'linux' and extra == 'cu126'", specifier = "==0.26.0", index = "https://download.pytorch.org/whl/cu126", conflict = { package = "surf-new-backend", extra = "cu126" } },
{ name = "torchvision", marker = "sys_platform == 'linux' and extra == 'cu128'", specifier = "==0.26.0", index = "https://download.pytorch.org/whl/cu128", conflict = { package = "surf-new-backend", extra = "cu128" } },
{ name = "torchvision", marker = "sys_platform != 'linux' and extra == 'cpu'", specifier = "==0.26.0" },
+ { name = "torchvision", marker = "sys_platform != 'linux' and extra == 'cu126'", specifier = "==0.26.0" },
{ name = "torchvision", marker = "sys_platform != 'linux' and extra == 'cu128'", specifier = "==0.26.0" },
{ name = "tornado", specifier = ">=6.5.5" },
{ name = "trafilatura", specifier = ">=2.0.0" },
@@ -8682,7 +9030,7 @@ requires-dist = [
{ name = "validators", specifier = ">=0.34.0" },
{ name = "youtube-transcript-api", specifier = ">=1.0.3" },
]
-provides-extras = ["cpu", "cu128"]
+provides-extras = ["cpu", "cu126", "cu128"]
[package.metadata.requires-dev]
dev = [
@@ -8844,15 +9192,17 @@ name = "timm"
version = "1.0.26"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pyyaml", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "safetensors", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "huggingface-hub" },
+ { name = "pyyaml" },
+ { name = "safetensors" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torchvision", version = "0.26.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/7b/1e/e924b3b2326a856aaf68586f9c52a5fc81ef45715eca408393b68c597e0e/timm-1.0.26.tar.gz", hash = "sha256:f66f082f2f381cf68431c22714c8b70f723837fa2a185b155961eab90f2d5b10", size = 2419859, upload-time = "2026-03-23T18:12:10.272Z" }
wheels = [
@@ -8917,46 +9267,54 @@ name = "torch"
version = "2.11.0"
source = { registry = "https://pypi.org/simple" }
resolution-markers = [
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
]
dependencies = [
- { name = "cuda-bindings", version = "13.2.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "cuda-toolkit", version = "13.0.2", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "filelock", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "fsspec", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "jinja2", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "networkx", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cudnn-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cusparselt-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nccl-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nvshmem-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "setuptools", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "sympy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "triton", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "typing-extensions", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-bindings", version = "13.2.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-toolkit", version = "13.0.2", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cudnn-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparselt-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nccl-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvshmem-cu13", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "triton", marker = "(sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/6f/8b/69e3008d78e5cee2b30183340cc425081b78afc5eff3d080daab0adda9aa/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4b5866312ee6e52ea625cd211dcb97d6a2cdc1131a5f15cc0d87eec948f6dd34", size = 80606338, upload-time = "2026-03-23T18:11:34.781Z" },
@@ -8991,13 +9349,13 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform == 'linux'",
]
dependencies = [
- { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp312-cp312-linux_s390x.whl", hash = "sha256:2db3ae5404e32cb42b5fcbd94f13607761eaec0cf1687fde95095289d1e26cfb", upload-time = "2026-04-28T00:06:06Z" },
@@ -9022,6 +9380,49 @@ wheels = [
{ url = "https://download-r2.pytorch.org/whl/cpu/torch-2.11.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:6db45e7b2526d996fbf47c3d08737807a60a4e17996a6d91a97027fe260832c8", upload-time = "2026-04-28T00:08:57Z" },
]
+[[package]]
+name = "torch"
+version = "2.11.0+cu126"
+source = { registry = "https://download.pytorch.org/whl/cu126" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "cuda-bindings", version = "12.9.7", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-toolkit", version = "12.6.3", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cudnn-cu12", version = "9.10.2.21", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparselt-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nccl-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvshmem-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:dc05f49d97c04a32d139df19d77209ceca3c484083f0db1dc332f168a19ef8d8", upload-time = "2026-04-27T20:54:02Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9235c0c2f5032d1f8af75dd97493f3ad12aaedf81c0f3fab2d13c1d90bc54ff9", upload-time = "2026-04-27T20:54:34Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:1b7d728ddcf84b12f64ca10ec5f6ce91dd9edcc5e62ed5f0a7260ca00f029e8b", upload-time = "2026-04-27T20:56:19Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:3bbbfc7ed16d878aef9b91a8e78c033bf131ffb8357e23ff80911210683a31b3", upload-time = "2026-04-27T20:58:05Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5f6e2a5709876dd25a5fe0d4f0ab1ef33b33bb60431fcbfe768ab6468dcfe88a", upload-time = "2026-04-27T20:58:40Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:12f7f1b73ba522576ea2050fbe2dc720a30cf681c73b8ea2d4f5480d66fad8f3", upload-time = "2026-04-27T21:00:22Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:7945e39fe82b85d7d018f68085ffaa6c5305a1634adb0bc792d835953b36fc9b", upload-time = "2026-04-27T21:02:11Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:47adcccf4de0fdb4a1550f477d919daec74f1007d15d939acfcef3080d26f9ec", upload-time = "2026-04-27T21:02:46Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp313-cp313t-win_amd64.whl", hash = "sha256:478ba5a57cba329f6878cf4c9bf6baa21c17c2e2b39784e0f7d3ee56b10a85a7", upload-time = "2026-04-27T21:04:33Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:9bef6e2c04c24163bf0cafab82ee2aecdf503b1817f936e1e6f5c652231b06f1", upload-time = "2026-04-27T21:06:48Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:09083ecca5f6f6214b021d12c971763267cd1270df9ffcbb6291c815c483b1a0", upload-time = "2026-04-27T21:07:26Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314-win_amd64.whl", hash = "sha256:146a8016c5abba673ea8af7d78e45e297b23e1f53c2a6749418a7c94f5d8d9ed", upload-time = "2026-04-27T21:09:25Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:561ac0b9041f43c6acb927526f892cd64304eff8725536be0d86e27992588ab3", upload-time = "2026-04-27T21:11:25Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:e0e31c656a407c11164d2d9257e31773562ca9ad82f755851dac511d48e9fc4d", upload-time = "2026-04-27T21:12:00Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torch-2.11.0%2Bcu126-cp314-cp314t-win_amd64.whl", hash = "sha256:3b4deea8cb01bf8f336ac8f87298f67a44835044f24deea8e0dc2d33f5d3f68d", upload-time = "2026-04-27T21:13:49Z" },
+]
+
[[package]]
name = "torch"
version = "2.11.0+cu128"
@@ -9032,20 +9433,20 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform == 'linux'",
]
dependencies = [
- { name = "cuda-bindings", version = "12.9.7", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "cuda-toolkit", version = "12.8.1", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cudnn-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-cusparselt-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nccl-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "nvidia-nvshmem-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-bindings", version = "12.9.7", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "cuda-toolkit", version = "12.8.1", source = { registry = "https://pypi.org/simple" }, extra = ["cublas", "cudart", "cufft", "cufile", "cupti", "curand", "cusolver", "cusparse", "nvjitlink", "nvrtc", "nvtx"], marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "filelock", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "fsspec", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "jinja2", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "networkx", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cudnn-cu12", version = "9.19.0.56", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-cusparselt-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nccl-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "nvidia-nvshmem-cu12", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "setuptools", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "sympy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "triton", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "typing-extensions", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://download-r2.pytorch.org/whl/cu128/torch-2.11.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9c8f38efee365cb9d334de8a83ce52fc7e5fc9e5a7b0853285efa1b69e00b0f2", upload-time = "2026-04-27T17:41:30Z" },
@@ -9070,35 +9471,43 @@ name = "torchvision"
version = "0.26.0"
source = { registry = "https://pypi.org/simple" }
resolution-markers = [
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
- "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'linux' and sys_platform != 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform == 'emscripten' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version == '3.13.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform != 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
+ "python_full_version < '3.13' and sys_platform == 'win32' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128'",
]
dependencies = [
- { name = "numpy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "pillow", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://files.pythonhosted.org/packages/ae/e7/56b47cc3b132aea90ccce22bcb8975dec688b002150012acc842846039d0/torchvision-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c409e1c3fdebec7a3834465086dbda8bf7680eff79abf7fd2f10c6b59520a7a4", size = 1863502, upload-time = "2026-03-23T18:12:57.326Z" },
@@ -9133,9 +9542,9 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform == 'linux'",
]
dependencies = [
- { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:17f0b542331fc94230b4214c6d123f038af7330fd81019608c0d2402f3bc3079", upload-time = "2026-03-23T15:36:09Z" },
@@ -9155,6 +9564,38 @@ wheels = [
{ url = "https://download-r2.pytorch.org/whl/cpu/torchvision-0.26.0%2Bcpu-cp314-cp314t-win_amd64.whl", hash = "sha256:6139108231a29ffb607931360ee24594553a939467c65530f734a2ed9918f011", upload-time = "2026-03-23T15:36:09Z" },
]
+[[package]]
+name = "torchvision"
+version = "0.26.0+cu126"
+source = { registry = "https://download.pytorch.org/whl/cu126" }
+resolution-markers = [
+ "python_full_version >= '3.14' and sys_platform == 'linux'",
+ "python_full_version == '3.13.*' and sys_platform == 'linux'",
+ "python_full_version < '3.13' and sys_platform == 'linux'",
+]
+dependencies = [
+ { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+]
+wheels = [
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:b9422be894e6969bcd33f20e0a1599c5e7d43b39ef548f35d3f83557053fd1a4", upload-time = "2026-03-23T15:36:19Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:a127341237ec2e70a54d031d2bae7be395f5d24c5a7c3e8b8b03cdd1fcebcb53", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp312-cp312-win_amd64.whl", hash = "sha256:10cc643e8c01634728e4f96b725a6096ea8cec423f2b8ba234ad139947b2ae17", upload-time = "2026-04-09T23:21:30Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:e2b05253a352b32cd8bb0a5d4ffa4d2c479b011c235bb73fefb052b1c18ac87f", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9d155c55b6f3516b60de24e32f194f79607d0ab9c6df6ba89ca20e181a352ca2", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313-win_amd64.whl", hash = "sha256:67f460b5cf6d8b6ede4cdca0c73987e51a00da434a4f5fa6aa325a264e7926f6", upload-time = "2026-04-09T23:21:31Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:e5b7d96484a12491cb3f293464efa516154ccf9832862f32b601bb1a93645221", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:c22b31747f764ebb6d943f488f43a4de1d7ee4084ab0b945a6ca30d14407f9e8", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp313-cp313t-win_amd64.whl", hash = "sha256:bc331411de5b686012cdbf347169abc3973a6bdc333078a4c89c62431202d6a5", upload-time = "2026-04-09T23:21:31Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:5730139e4d03e2121559a1f45625b14d149f1b7ce080fca824da7f9d2b6c7fc5", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:45b1aa89b7dd1110881675dbbe7e2409789b29494c495b004860570273aa5c73", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314-win_amd64.whl", hash = "sha256:4ff60e8041277de2f6c1b13d226063878650898afac7f72281af03158da70a3f", upload-time = "2026-04-09T23:21:32Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:027ccbec15df76818557b6e0ae5afdb2cc8e389094e5ada19f75878e7def4aff", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:40cfd2c75ff3994b50c70f93220a6b5f2e77eb2acd08b4ad8340cebff89aeba2", upload-time = "2026-03-23T15:36:20Z" },
+ { url = "https://download-r2.pytorch.org/whl/cu126/torchvision-0.26.0%2Bcu126-cp314-cp314t-win_amd64.whl", hash = "sha256:56ebdb391066abcb28d748f8b0c67581a8cb03d2359d0cf3e86832e03c4fb1ee", upload-time = "2026-04-09T23:21:32Z" },
+]
+
[[package]]
name = "torchvision"
version = "0.26.0+cu128"
@@ -9165,9 +9606,9 @@ resolution-markers = [
"python_full_version < '3.13' and sys_platform == 'linux'",
]
dependencies = [
- { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pillow", marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
]
wheels = [
{ url = "https://download-r2.pytorch.org/whl/cu128/torchvision-0.26.0%2Bcu128-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:63e35234aed13b6edda37056f417b5c281249669db631e706811917af36b21d7", upload-time = "2026-04-09T23:21:35Z" },
@@ -9209,7 +9650,7 @@ name = "tqdm"
version = "4.67.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/09/a9/6ba95a270c6f1fbcd8dac228323f2777d886cb206987444e4bce66338dd4/tqdm-4.67.3.tar.gz", hash = "sha256:7d825f03f89244ef73f1d4ce193cb1774a8179fd96f31d7e1dcde62092b960bb", size = 169598, upload-time = "2026-02-03T17:35:53.048Z" }
wheels = [
@@ -9403,7 +9844,7 @@ version = "6.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "id" },
- { name = "keyring", marker = "(platform_machine != 'ppc64le' and platform_machine != 's390x') or (platform_machine == 'ppc64le' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (platform_machine == 's390x' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "keyring", marker = "(platform_machine != 'ppc64le' and platform_machine != 's390x') or (platform_machine == 'ppc64le' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (platform_machine == 'ppc64le' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (platform_machine == 'ppc64le' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (platform_machine == 's390x' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (platform_machine == 's390x' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (platform_machine == 's390x' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "packaging" },
{ name = "readme-renderer" },
{ name = "requests" },
@@ -9516,7 +9957,7 @@ name = "tzlocal"
version = "5.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "tzdata", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761, upload-time = "2025-03-05T21:17:41.549Z" }
wheels = [
@@ -9569,11 +10010,11 @@ all-docs = [
{ name = "pdfminer-six" },
{ name = "pi-heif" },
{ name = "pikepdf" },
- { name = "pypandoc-binary", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "pypandoc-binary", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "pypdf" },
{ name = "python-docx" },
{ name = "python-pptx" },
- { name = "unstructured-inference", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "unstructured-inference", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "unstructured-pytesseract" },
{ name = "xlrd" },
]
@@ -9602,24 +10043,25 @@ name = "unstructured-inference"
version = "1.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "accelerate", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "huggingface-hub", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "matplotlib", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "numpy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "onnx", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "onnxruntime", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "opencv-python", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pandas", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pdfminer-six", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "pypdfium2", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "python-multipart", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "rapidfuzz", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "scipy", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "timm", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and sys_platform == 'win32') or (sys_platform != 'linux' and sys_platform != 'win32') or (sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'linux' and extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
- { name = "transformers", marker = "python_full_version < '3.13' or sys_platform != 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "accelerate" },
+ { name = "huggingface-hub" },
+ { name = "matplotlib" },
+ { name = "numpy" },
+ { name = "onnx" },
+ { name = "onnxruntime" },
+ { name = "opencv-python" },
+ { name = "pandas" },
+ { name = "pdfminer-six" },
+ { name = "pypdfium2" },
+ { name = "python-multipart" },
+ { name = "rapidfuzz" },
+ { name = "scipy" },
+ { name = "timm" },
+ { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'linux' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra != 'extra-16-surf-new-backend-cpu' and extra != 'extra-16-surf-new-backend-cu126' and extra != 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cpu') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu126", source = { registry = "https://download.pytorch.org/whl/cu126" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "torch", version = "2.11.0+cu128", source = { registry = "https://download.pytorch.org/whl/cu128" }, marker = "(sys_platform == 'linux' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "transformers" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ce/10/8f3bccfa9f1e0101a402ae1f529e07876541c6b18004747f0e793ed41f9e/unstructured_inference-1.2.0.tar.gz", hash = "sha256:19ca28512f3649c70a759cf2a4e98663e942a1b83c1acdb9506b0445f4862f23", size = 45732, upload-time = "2026-01-30T20:57:58.019Z" }
wheels = [
@@ -9694,11 +10136,11 @@ wheels = [
[package.optional-dependencies]
standard = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "httptools" },
{ name = "python-dotenv" },
{ name = "pyyaml" },
- { name = "uvloop", marker = "(platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32') or (platform_python_implementation == 'PyPy' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'cygwin' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "uvloop", marker = "(platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32') or (platform_python_implementation == 'PyPy' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (platform_python_implementation == 'PyPy' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (platform_python_implementation == 'PyPy' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'cygwin' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (sys_platform == 'cygwin' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'cygwin' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (sys_platform == 'win32' and extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "watchfiles" },
{ name = "websockets" },
]
@@ -9775,7 +10217,7 @@ dependencies = [
{ name = "aiolimiter" },
{ name = "ffmpeg-python" },
{ name = "langchain-text-splitters" },
- { name = "numpy", marker = "python_full_version < '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "numpy", marker = "python_full_version < '3.14' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
{ name = "pillow" },
{ name = "pydantic" },
{ name = "requests" },
@@ -9792,7 +10234,7 @@ name = "wasabi"
version = "1.1.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128')" },
+ { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu126') or (extra == 'extra-16-surf-new-backend-cpu' and extra == 'extra-16-surf-new-backend-cu128') or (extra == 'extra-16-surf-new-backend-cu126' and extra == 'extra-16-surf-new-backend-cu128')" },
]
sdist = { url = "https://files.pythonhosted.org/packages/ac/f9/054e6e2f1071e963b5e746b48d1e3727470b2a490834d18ad92364929db3/wasabi-1.1.3.tar.gz", hash = "sha256:4bb3008f003809db0c3e28b4daf20906ea871a2bb43f9914197d540f4f2e0878", size = 30391, upload-time = "2024-05-31T16:56:18.99Z" }
wheels = [
From c1ee5fabf9e6d5a8c00e9f0656710c6ad156d748 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Fri, 5 Jun 2026 23:39:42 +0530
Subject: [PATCH 06/18] feat(docker): enhance multi-architecture and CUDA
support in Docker workflows
- Added support for multiple image variants (CPU, CUDA 12.8, CUDA 12.6) in the Docker build workflow.
- Updated Docker Compose configuration to utilize the new SURFSENSE_VARIANT environment variable for selecting image variants.
- Enhanced documentation to clarify usage of backend image variants and their corresponding environment variable settings.
---
.github/workflows/docker-build.yml | 73 ++++++++++++++++---
docker/.env.example | 4 +
docker/docker-compose.yml | 10 +--
.../docker-installation/docker-compose.mdx | 17 +++++
4 files changed, 87 insertions(+), 17 deletions(-)
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
index 224591d1f..0847ca76c 100644
--- a/.github/workflows/docker-build.yml
+++ b/.github/workflows/docker-build.yml
@@ -97,6 +97,12 @@ jobs:
matrix:
platform: [linux/amd64, linux/arm64]
image: [backend, web]
+ variant: [cpu, cuda, cuda126]
+ exclude:
+ - image: web
+ variant: cuda
+ - image: web
+ variant: cuda126
include:
- platform: linux/amd64
suffix: amd64
@@ -114,6 +120,18 @@ jobs:
context: ./surfsense_web
file: ./surfsense_web/Dockerfile
target: runner
+ - variant: cpu
+ tag_suffix: ""
+ use_cuda: "false"
+ cuda_extra: cpu
+ - variant: cuda
+ tag_suffix: "-cuda"
+ use_cuda: "true"
+ cuda_extra: cu128
+ - variant: cuda126
+ tag_suffix: "-cuda126"
+ use_cuda: "true"
+ cuda_extra: cu126
env:
REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ matrix.name }}
@@ -149,7 +167,7 @@ jobs:
sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true
docker system prune -af
- - name: Build and push by digest ${{ matrix.name }} (${{ matrix.suffix }})
+ - name: Build and push by digest ${{ matrix.name }} (${{ matrix.variant }}, ${{ matrix.suffix }})
id: build
uses: docker/build-push-action@v7
with:
@@ -160,10 +178,12 @@ jobs:
tags: ${{ steps.image.outputs.name }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
platforms: ${{ matrix.platform }}
- cache-from: type=gha,scope=${{ matrix.image }}-${{ matrix.suffix }}
- cache-to: type=gha,mode=max,scope=${{ matrix.image }}-${{ matrix.suffix }}
+ cache-from: type=registry,ref=${{ steps.image.outputs.name }}:buildcache-${{ matrix.variant }}-${{ matrix.suffix }}
+ cache-to: type=registry,ref=${{ steps.image.outputs.name }}:buildcache-${{ matrix.variant }}-${{ matrix.suffix }},mode=max,image-manifest=true,oci-mediatypes=true
provenance: false
build-args: |
+ ${{ matrix.image == 'backend' && format('USE_CUDA={0}', matrix.use_cuda) || '' }}
+ ${{ matrix.image == 'backend' && format('CUDA_EXTRA={0}', matrix.cuda_extra) || '' }}
${{ matrix.image == 'web' && 'NEXT_PUBLIC_FASTAPI_BACKEND_URL=__NEXT_PUBLIC_FASTAPI_BACKEND_URL__' || '' }}
${{ matrix.image == 'web' && 'NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE=__NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE__' || '' }}
${{ matrix.image == 'web' && 'NEXT_PUBLIC_ETL_SERVICE=__NEXT_PUBLIC_ETL_SERVICE__' || '' }}
@@ -179,7 +199,7 @@ jobs:
- name: Upload digest
uses: actions/upload-artifact@v7
with:
- name: digests-${{ matrix.image }}-${{ matrix.suffix }}
+ name: digests-${{ matrix.image }}-${{ matrix.variant }}-${{ matrix.suffix }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
@@ -187,7 +207,7 @@ jobs:
create_manifest:
runs-on: ubuntu-latest
needs: [tag_release, build]
- if: always() && needs.build.result == 'success'
+ if: ${{ !cancelled() }}
permissions:
packages: write
contents: read
@@ -197,8 +217,20 @@ jobs:
include:
- name: surfsense-backend
image: backend
+ variant: cpu
+ tag_suffix: ""
+ - name: surfsense-backend
+ image: backend
+ variant: cuda
+ tag_suffix: "-cuda"
+ - name: surfsense-backend
+ image: backend
+ variant: cuda126
+ tag_suffix: "-cuda126"
- name: surfsense-web
image: web
+ variant: cpu
+ tag_suffix: ""
env:
REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/${{ matrix.name }}
@@ -207,22 +239,33 @@ jobs:
id: image
run: echo "name=${REGISTRY_IMAGE,,}" >> $GITHUB_OUTPUT
- - name: Download amd64 digest
+ - name: Download digests
+ id: download
uses: actions/download-artifact@v8
with:
- name: digests-${{ matrix.image }}-amd64
+ pattern: digests-${{ matrix.image }}-${{ matrix.variant }}-*
path: /tmp/digests
+ merge-multiple: true
+ continue-on-error: true
- - name: Download arm64 digest
- uses: actions/download-artifact@v8
- with:
- name: digests-${{ matrix.image }}-arm64
- path: /tmp/digests
+ - name: Check digests
+ id: check
+ run: |
+ count=$(find /tmp/digests -type f 2>/dev/null | wc -l | tr -d ' ')
+ echo "digest_count=$count" >> $GITHUB_OUTPUT
+ if [ "$count" -lt 2 ]; then
+ echo "::warning::${{ matrix.variant }}: $count/2 digests, skipping merge"
+ echo "skip=true" >> $GITHUB_OUTPUT
+ else
+ echo "skip=false" >> $GITHUB_OUTPUT
+ fi
- name: Set up Docker Buildx
+ if: steps.check.outputs.skip != 'true'
uses: docker/setup-buildx-action@v4
- name: Login to GitHub Container Registry
+ if: steps.check.outputs.skip != 'true'
uses: docker/login-action@v4
with:
registry: ghcr.io
@@ -230,6 +273,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Compute app version
+ if: steps.check.outputs.skip != 'true'
id: appver
run: |
VERSION_TAG="${{ needs.tag_release.outputs.new_tag }}"
@@ -241,6 +285,7 @@ jobs:
echo "app_version=$APP_VERSION" >> $GITHUB_OUTPUT
- name: Docker meta
+ if: steps.check.outputs.skip != 'true'
id: meta
uses: docker/metadata-action@v6
with:
@@ -252,18 +297,22 @@ jobs:
type=sha,prefix=git-
flavor: |
latest=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch }}
+ ${{ matrix.tag_suffix != '' && format('suffix={0},onlatest=true', matrix.tag_suffix) || '' }}
- name: Create manifest list and push
+ if: steps.check.outputs.skip != 'true'
working-directory: /tmp/digests
run: |
docker buildx imagetools create \
$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ steps.image.outputs.name }}@sha256:%s ' *)
- name: Inspect image
+ if: steps.check.outputs.skip != 'true'
run: |
docker buildx imagetools inspect ${{ steps.image.outputs.name }}:${{ steps.meta.outputs.version }}
- name: Summary
+ if: steps.check.outputs.skip != 'true'
run: |
echo "Multi-arch manifest created for ${{ matrix.name }}!"
echo "Tags: $(jq -cr '.tags | join(", ")' <<< "$DOCKER_METADATA_OUTPUT_JSON")"
diff --git a/docker/.env.example b/docker/.env.example
index 12c5dcc55..4f33c92b0 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -7,6 +7,10 @@
# SurfSense version (use "latest" or a specific version like "0.0.14")
SURFSENSE_VERSION=latest
+# Image variant: empty = CPU (default), "cuda" = CUDA 12.8, "cuda126" = CUDA 12.6.
+# NOTE: this only selects the GPU-built image. GPU device access lands in Phase 3.
+SURFSENSE_VARIANT=
+
# Deployment environment: dev or production
SURFSENSE_ENV=production
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 073c8c1da..7cd89027f 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -34,7 +34,7 @@ services:
# migration halts the whole stack instead of silently producing a half-built
# system that crash-loops zero-cache on missing publications.
migrations:
- image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
+ image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
env_file:
- .env
environment:
@@ -98,7 +98,7 @@ services:
retries: 5
backend:
- image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
+ image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
ports:
- "${BACKEND_PORT:-8929}:8000"
volumes:
@@ -165,7 +165,7 @@ services:
# retries: 5
celery_worker:
- image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
+ image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
volumes:
- shared_temp:/shared_tmp
env_file:
@@ -195,7 +195,7 @@ services:
restart: unless-stopped
celery_beat:
- image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
+ image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
env_file:
- .env
environment:
@@ -219,7 +219,7 @@ services:
restart: unless-stopped
# flower:
- # image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}
+ # image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
# ports:
# - "${FLOWER_PORT:-5555}:5555"
# env_file:
diff --git a/surfsense_web/content/docs/docker-installation/docker-compose.mdx b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
index 488f4e24a..bf94c3dcc 100644
--- a/surfsense_web/content/docs/docker-installation/docker-compose.mdx
+++ b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
@@ -35,6 +35,7 @@ All configuration lives in a single `docker/.env` file (or `surfsense/.env` if y
| Variable | Description | Default |
|----------|-------------|---------|
| `SURFSENSE_VERSION` | Image tag to deploy. Use `latest`, a clean version (e.g. `0.0.14`), or a specific build (e.g. `0.0.14.1`) | `latest` |
+| `SURFSENSE_VARIANT` | Backend image variant. Leave empty for CPU, set `cuda` for CUDA 12.8, or `cuda126` for CUDA 12.6. | *(empty)* |
| `AUTH_TYPE` | Authentication method: `LOCAL` (email/password) or `GOOGLE` (OAuth) | `LOCAL` |
| `ETL_SERVICE` | Document parsing: `DOCLING` (local), `UNSTRUCTURED`, or `LLAMACLOUD` | `DOCLING` |
| `EMBEDDING_MODEL` | Embedding model for vector search | `sentence-transformers/all-MiniLM-L6-v2` |
@@ -42,6 +43,22 @@ All configuration lives in a single `docker/.env` file (or `surfsense/.env` if y
| `STT_SERVICE` | Speech-to-text provider for audio files | `local/base` |
| `REGISTRATION_ENABLED` | Allow new user registrations | `TRUE` |
+### Image Variants
+
+SurfSense publishes CPU and CUDA backend image variants. The frontend image is not variant-specific.
+
+| Backend tag | Use case | `SURFSENSE_VARIANT` |
+|-------------|----------|---------------------|
+| `:latest` | CPU-only default | *(empty)* |
+| `:latest-cuda` | NVIDIA CUDA 12.8 backend image | `cuda` |
+| `:latest-cuda126` | NVIDIA CUDA 12.6 backend image for older driver stacks | `cuda126` |
+
+All backend variants are published for `linux/amd64` and `linux/arm64`. CUDA on `linux/arm64` is best-effort.
+
+
+`SURFSENSE_VARIANT` only selects the GPU-built backend image. GPU device access is added separately in Phase 3.
+
+
### Ports
| Variable | Description | Default |
From 7e4077d67af82f495514fc67857e2af32a6df628 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 00:45:56 +0530
Subject: [PATCH 07/18] chore(docker): remove commented-out flower service from
Docker Compose files
---
docker/docker-compose.dev.yml | 15 ---------------
docker/docker-compose.yml | 16 ----------------
2 files changed, 31 deletions(-)
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
index 818611138..2e19d0791 100644
--- a/docker/docker-compose.dev.yml
+++ b/docker/docker-compose.dev.yml
@@ -217,21 +217,6 @@ services:
celery_worker:
condition: service_started
- # flower:
- # build: *backend-build
- # ports:
- # - "${FLOWER_PORT:-5555}:5555"
- # env_file:
- # - ../surfsense_backend/.env
- # environment:
- # - CELERY_BROKER_URL=${REDIS_URL:-redis://redis:6379/0}
- # - CELERY_RESULT_BACKEND=${REDIS_URL:-redis://redis:6379/0}
- # - PYTHONPATH=/app
- # command: celery -A app.celery_app flower --port=5555
- # depends_on:
- # - redis
- # - celery_worker
-
zero-cache:
image: rocicorp/zero:1.4.0
ports:
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 7cd89027f..93dc10ebe 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -218,22 +218,6 @@ services:
- "com.centurylinklabs.watchtower.enable=true"
restart: unless-stopped
- # flower:
- # image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
- # ports:
- # - "${FLOWER_PORT:-5555}:5555"
- # env_file:
- # - .env
- # environment:
- # CELERY_BROKER_URL: ${REDIS_URL:-redis://redis:6379/0}
- # CELERY_RESULT_BACKEND: ${REDIS_URL:-redis://redis:6379/0}
- # PYTHONPATH: /app
- # command: celery -A app.celery_app flower --port=5555
- # depends_on:
- # - redis
- # - celery_worker
- # restart: unless-stopped
-
zero-cache:
image: rocicorp/zero:1.4.0
ports:
From c5afce38733ab98d4817f111b1380ee4a98f5e3e Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 01:15:04 +0530
Subject: [PATCH 08/18] feat(docker): add GPU support and enhance installation
scripts
- Introduced a new docker-compose.gpu.yml file to define GPU resource reservations for backend services.
- Updated .env.example to include GPU-related environment variables and usage instructions.
- Enhanced install.ps1 and install.sh scripts to support GPU variant selection and validation for GPU count.
- Improved error handling and user feedback for invalid GPU configurations.
---
docker/.env.example | 8 +-
docker/docker-compose.gpu.yml | 30 ++++
docker/scripts/install.ps1 | 306 ++++++++++++++++++--------------
docker/scripts/install.sh | 321 ++++++++++++++++++++--------------
4 files changed, 401 insertions(+), 264 deletions(-)
create mode 100644 docker/docker-compose.gpu.yml
diff --git a/docker/.env.example b/docker/.env.example
index 4f33c92b0..5f0f3c018 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -8,8 +8,14 @@
SURFSENSE_VERSION=latest
# Image variant: empty = CPU (default), "cuda" = CUDA 12.8, "cuda126" = CUDA 12.6.
-# NOTE: this only selects the GPU-built image. GPU device access lands in Phase 3.
+# GPU acceleration also requires the NVIDIA Container Toolkit on the host and
+# the GPU overlay in COMPOSE_FILE. Linux/macOS use ":"; Windows uses ";".
+# Example Linux/macOS: COMPOSE_FILE=docker-compose.yml:docker-compose.gpu.yml
+# Example Windows: COMPOSE_FILE=docker-compose.yml;docker-compose.gpu.yml
+# Use "cuda126" for older NVIDIA driver stacks; use "cuda" for newer drivers.
SURFSENSE_VARIANT=
+# COMPOSE_FILE=docker-compose.yml:docker-compose.gpu.yml
+# SURFSENSE_GPU_COUNT=1
# Deployment environment: dev or production
SURFSENSE_ENV=production
diff --git a/docker/docker-compose.gpu.yml b/docker/docker-compose.gpu.yml
new file mode 100644
index 000000000..a40aeb32f
--- /dev/null
+++ b/docker/docker-compose.gpu.yml
@@ -0,0 +1,30 @@
+services:
+ backend:
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - driver: ${SURFSENSE_GPU_DRIVER:-nvidia}
+ count: ${SURFSENSE_GPU_COUNT:-1}
+ capabilities:
+ - gpu
+
+ celery_worker:
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - driver: ${SURFSENSE_GPU_DRIVER:-nvidia}
+ count: ${SURFSENSE_GPU_COUNT:-1}
+ capabilities:
+ - gpu
+
+ celery_beat:
+ deploy:
+ resources:
+ reservations:
+ devices:
+ - driver: ${SURFSENSE_GPU_DRIVER:-nvidia}
+ count: ${SURFSENSE_GPU_COUNT:-1}
+ capabilities:
+ - gpu
diff --git a/docker/scripts/install.ps1 b/docker/scripts/install.ps1
index 60c4fd5df..b44e17ef3 100644
--- a/docker/scripts/install.ps1
+++ b/docker/scripts/install.ps1
@@ -7,6 +7,8 @@
# To pass flags, save and run locally:
# .\install.ps1 -NoWatchtower
# .\install.ps1 -WatchtowerInterval 3600
+# .\install.ps1 -Variant cuda
+# .\install.ps1 -Variant cuda -GpuCount all
#
# Handles two cases automatically:
# 1. Fresh install — no prior SurfSense data detected
@@ -17,7 +19,11 @@
param(
[switch]$NoWatchtower,
- [int]$WatchtowerInterval = 86400
+ [int]$WatchtowerInterval = 86400,
+ [ValidateSet("cpu", "cuda", "cuda126")]
+ [string]$Variant,
+ [string]$GpuCount,
+ [switch]$Quiet
)
$ErrorActionPreference = 'Stop'
@@ -34,6 +40,11 @@ $MigrationMode = $false
$SetupWatchtower = -not $NoWatchtower
$WatchtowerContainer = "watchtower"
+if ($GpuCount -and $GpuCount -notmatch '^([0-9]+|all)$') {
+ Write-Host "[SurfSense] ERROR: Invalid -GpuCount '$GpuCount'. Use a number or 'all'." -ForegroundColor Red
+ exit 1
+}
+
# ── Output helpers ──────────────────────────────────────────────────────────
function Write-Info { param([string]$Msg) Write-Host "[SurfSense] " -ForegroundColor Cyan -NoNewline; Write-Host $Msg }
@@ -97,101 +108,7 @@ function Wait-ForPostgres {
Write-Ok "PostgreSQL is ready."
}
-# ── Stack health helpers ────────────────────────────────────────────────────
-
-function Get-ComposeServices {
- Push-Location $InstallDir
- try {
- $raw = Invoke-NativeSafe { docker compose ps -a --format json 2>$null }
- } finally {
- Pop-Location
- }
- if ([string]::IsNullOrWhiteSpace($raw)) { return @() }
-
- # Compose v2.21+ emits a JSON array; older versions emit one object per line.
- try {
- $parsed = $raw | ConvertFrom-Json
- if ($parsed -is [System.Collections.IEnumerable] -and -not ($parsed -is [string])) {
- return @($parsed)
- }
- return @($parsed)
- } catch {
- $services = @()
- foreach ($line in ($raw -split "`r?`n")) {
- $line = $line.Trim()
- if (-not $line) { continue }
- try { $services += ($line | ConvertFrom-Json) } catch { }
- }
- return $services
- }
-}
-
-function Wait-StackHealthy {
- param([int]$TimeoutSec = 300)
-
- $deadline = (Get-Date).AddSeconds($TimeoutSec)
- $lastReport = ""
-
- while ((Get-Date) -lt $deadline) {
- $services = Get-ComposeServices
- if (-not $services -or $services.Count -eq 0) {
- Start-Sleep -Seconds 3
- continue
- }
-
- $bad = @()
- $waiting = @()
- $good = @()
-
- foreach ($svc in $services) {
- $name = $svc.Service
- $state = $svc.State
- $health = if ($svc.PSObject.Properties.Name -contains 'Health') { $svc.Health } else { '' }
- $exit = if ($svc.PSObject.Properties.Name -contains 'ExitCode') { $svc.ExitCode } else { $null }
-
- if ($name -eq 'migrations') {
- if ($state -eq 'exited' -and $exit -eq 0) { $good += $name }
- elseif ($state -eq 'exited') { $bad += "${name} (exit=${exit})" }
- else { $waiting += "${name} (${state})" }
- continue
- }
-
- if ($state -eq 'running') {
- if ([string]::IsNullOrEmpty($health) -or $health -eq 'healthy') {
- $good += $name
- } elseif ($health -eq 'starting') {
- $waiting += "${name} (starting)"
- } elseif ($health -eq 'unhealthy') {
- $bad += "${name} (unhealthy)"
- } else {
- $waiting += "${name} (${health})"
- }
- } elseif ($state -eq 'restarting') {
- $bad += "${name} (restarting)"
- } elseif ($state -eq 'exited') {
- $bad += "${name} (exited, code=${exit})"
- } else {
- $waiting += "${name} (${state})"
- }
- }
-
- if ($bad.Count -gt 0) {
- return @{ Ok = $false; Reason = 'failure'; Bad = $bad; Waiting = $waiting; Good = $good }
- }
- if ($waiting.Count -eq 0) {
- return @{ Ok = $true; Reason = 'all_healthy'; Good = $good }
- }
-
- $report = "Waiting on: " + ($waiting -join ', ')
- if ($report -ne $lastReport) {
- Write-Info $report
- $lastReport = $report
- }
- Start-Sleep -Seconds 5
- }
-
- return @{ Ok = $false; Reason = 'timeout'; Bad = $bad; Waiting = $waiting; Good = $good }
-}
+# ── Stack startup helper ────────────────────────────────────────────────────
function Test-StaleZeroCacheVolume {
$raw = Invoke-NativeSafe { docker volume ls --format '{{.Name}}' 2>$null }
@@ -221,19 +138,9 @@ function Invoke-StaleZeroCacheCleanup {
Write-Ok "Removed surfsense-zero-cache volume; zero-cache will re-sync on next start."
}
-function Write-Err-NoExit {
- param([string]$Message)
- Write-Host "[ERROR] $Message" -ForegroundColor Red
-}
-
function Invoke-StackFailureReport {
- param([hashtable]$Result)
-
Write-Host ""
- Write-Err-NoExit "Stack did not reach a healthy state."
- if ($Result.Bad.Count -gt 0) { Write-Host (" Failed: " + ($Result.Bad -join ', ')) }
- if ($Result.Waiting.Count -gt 0) { Write-Host (" Stuck: " + ($Result.Waiting -join ', ')) }
-
+ Write-Host "[ERROR] Stack did not reach a healthy state." -ForegroundColor Red
Write-Host ""
Write-Info "Recent logs from migrations / zero-cache / backend:"
Push-Location $InstallDir
@@ -247,11 +154,151 @@ function Invoke-StackFailureReport {
Write-Host "Recovery hints:" -ForegroundColor Yellow
Write-Host " 1. Inspect migrations: cd $InstallDir; docker compose logs migrations"
Write-Host " 2. Verify publication: cd $InstallDir; docker compose exec db psql -U surfsense -d surfsense -c 'SELECT pubname FROM pg_publication;'"
- Write-Host " 3. Hard reset zero db: cd $InstallDir; docker compose down; docker volume rm surfsense-zero-cache; docker compose up -d"
+ Write-Host " 3. Hard reset zero db: cd $InstallDir; docker compose down; docker volume rm surfsense-zero-cache; docker compose up -d --wait"
Write-Host ""
exit 1
}
+function Invoke-ComposeUpWait {
+ Push-Location $InstallDir
+ try {
+ Invoke-NativeSafe { docker compose up -d --wait }
+ } finally {
+ Pop-Location
+ }
+ if ($LASTEXITCODE -ne 0) {
+ Invoke-StackFailureReport
+ }
+}
+
+# ── Variant and .env helpers ────────────────────────────────────────────────
+
+function Set-EnvValue {
+ param([string]$Path, [string]$Key, [string]$Value)
+ $lines = @()
+ if (Test-Path $Path) {
+ $lines = @(Get-Content $Path)
+ }
+ $updated = $false
+ $newLines = foreach ($line in $lines) {
+ if ($line -match "^$([regex]::Escape($Key))=") {
+ $updated = $true
+ "$Key=$Value"
+ } else {
+ $line
+ }
+ }
+ if (-not $updated) {
+ $newLines += "$Key=$Value"
+ }
+ Set-Content -Path $Path -Value $newLines
+}
+
+function Remove-EnvValue {
+ param([string]$Path, [string]$Key)
+ if (-not (Test-Path $Path)) { return }
+ $newLines = Get-Content $Path | Where-Object { $_ -notmatch "^$([regex]::Escape($Key))=" }
+ Set-Content -Path $Path -Value $newLines
+}
+
+function Test-NvidiaGpu {
+ if (-not (Get-Command nvidia-smi -ErrorAction SilentlyContinue)) { return $false }
+ Invoke-NativeSafe { nvidia-smi *>$null } | Out-Null
+ return ($LASTEXITCODE -eq 0)
+}
+
+function Test-NvidiaRuntime {
+ $info = Invoke-NativeSafe { docker info 2>$null }
+ if ($info -match 'nvidia') { return $true }
+ if (Get-Command nvidia-ctk -ErrorAction SilentlyContinue) { return $true }
+ if (Get-Command nvidia-container-runtime -ErrorAction SilentlyContinue) { return $true }
+ return $false
+}
+
+function Get-RecommendedVariant {
+ $driver = (Invoke-NativeSafe { nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>$null } | Select-Object -First 1)
+ $major = 0
+ if ($driver -match '^(\d+)') {
+ $major = [int]$Matches[1]
+ }
+ if ($major -gt 0 -and $major -lt 570) {
+ return "cuda126"
+ }
+ return "cuda"
+}
+
+function Resolve-Variant {
+ $hasGpu = Test-NvidiaGpu
+ $hasRuntime = $false
+ $recommended = "cpu"
+
+ if ($hasGpu) {
+ $recommended = Get-RecommendedVariant
+ $hasRuntime = Test-NvidiaRuntime
+ }
+
+ if ($Variant) {
+ if ($Variant -eq "cpu") { return "cpu" }
+ if (-not $hasGpu) {
+ Write-Warn "No NVIDIA GPU detected; falling back to CPU variant."
+ return "cpu"
+ }
+ if (-not $hasRuntime) {
+ Write-Warn "NVIDIA GPU detected, but NVIDIA Container Toolkit was not detected; falling back to CPU variant."
+ Write-Warn "Install the toolkit before enabling SurfSense GPU acceleration."
+ return "cpu"
+ }
+ return $Variant
+ }
+
+ if ($hasGpu -and -not $hasRuntime) {
+ Write-Warn "NVIDIA GPU detected, but NVIDIA Container Toolkit was not detected; using CPU variant."
+ }
+
+ if ($hasGpu -and $hasRuntime -and -not $Quiet -and [Environment]::UserInteractive) {
+ Write-Host ""
+ Write-Host "SurfSense detected an NVIDIA GPU." -ForegroundColor Cyan
+ $choice = Read-Host "Use GPU acceleration? [Y/n]"
+ switch ($choice) {
+ "" { return $recommended }
+ { $_ -match '^(?i)y(es)?$' } { return $recommended }
+ { $_ -match '^(?i)n(o)?$' } { return "cpu" }
+ default {
+ Write-Warn "Unrecognized choice '$choice'; using CPU variant."
+ return "cpu"
+ }
+ }
+ }
+
+ return "cpu"
+}
+
+function Set-VariantEnv {
+ param([string]$Path, [string]$SelectedVariant, [bool]$AllowExistingUpdate)
+
+ if ((Test-Path $Path) -and -not $AllowExistingUpdate) {
+ Write-Warn ".env already exists - keeping your existing configuration."
+ Write-Info "To change variants later, edit SURFSENSE_VARIANT and COMPOSE_FILE in $Path, then run docker compose up -d --wait."
+ return
+ }
+
+ if ($SelectedVariant -eq "cpu") {
+ Set-EnvValue -Path $Path -Key "SURFSENSE_VARIANT" -Value ""
+ Remove-EnvValue -Path $Path -Key "COMPOSE_FILE"
+ Remove-EnvValue -Path $Path -Key "SURFSENSE_GPU_COUNT"
+ } else {
+ Set-EnvValue -Path $Path -Key "SURFSENSE_VARIANT" -Value $SelectedVariant
+ Set-EnvValue -Path $Path -Key "COMPOSE_FILE" -Value "docker-compose.yml;docker-compose.gpu.yml"
+ if ($GpuCount) {
+ Set-EnvValue -Path $Path -Key "SURFSENSE_GPU_COUNT" -Value $GpuCount
+ }
+ }
+
+ Remove-EnvValue -Path $Path -Key "COMPOSE_PROFILES"
+}
+
+$SelectedVariant = Resolve-Variant
+
# ── Download files ──────────────────────────────────────────────────────────
Write-Step "Downloading SurfSense files"
@@ -262,6 +309,7 @@ New-Item -ItemType Directory -Path "$InstallDir\searxng" -Force | Out-Null
$Files = @(
@{ Src = "docker/docker-compose.yml"; Dest = "docker-compose.yml" }
+ @{ Src = "docker/docker-compose.gpu.yml"; Dest = "docker-compose.gpu.yml" }
@{ Src = "docker/.env.example"; Dest = ".env.example" }
@{ Src = "docker/postgresql.conf"; Dest = "postgresql.conf" }
@{ Src = "docker/scripts/migrate-database.ps1"; Dest = "scripts/migrate-database.ps1" }
@@ -339,9 +387,15 @@ if (-not (Test-Path $envPath)) {
$content = $content -replace 'SECRET_KEY=replace_me_with_a_random_string', "SECRET_KEY=$SecretKey"
Set-Content -Path $envPath -Value $content -NoNewline
+ Set-VariantEnv -Path $envPath -SelectedVariant $SelectedVariant -AllowExistingUpdate $false
Write-Info "Created $envPath"
} else {
- Write-Warn ".env already exists - keeping your existing configuration."
+ if ($PSBoundParameters.ContainsKey('Variant')) {
+ Set-VariantEnv -Path $envPath -SelectedVariant $SelectedVariant -AllowExistingUpdate $true
+ Write-Info "Updated SurfSense image variant in existing $envPath"
+ } else {
+ Set-VariantEnv -Path $envPath -SelectedVariant $SelectedVariant -AllowExistingUpdate $false
+ }
}
# ── Start containers ────────────────────────────────────────────────────────
@@ -405,31 +459,15 @@ if ($MigrationMode) {
}
Write-Step "Starting all SurfSense services"
- Push-Location $InstallDir
- Invoke-NativeSafe { docker compose up -d }
- Pop-Location
- Write-Ok "All containers started; waiting for stack to become healthy..."
-
- $waitResult = Wait-StackHealthy -TimeoutSec 300
- if (-not $waitResult.Ok) {
- Invoke-StackFailureReport -Result $waitResult
- }
- Write-Ok "All services healthy."
+ Invoke-ComposeUpWait
+ Write-Ok "All services started and healthy."
Remove-Item $KeyFile -ErrorAction SilentlyContinue
} else {
Write-Step "Starting SurfSense"
- Push-Location $InstallDir
- Invoke-NativeSafe { docker compose up -d }
- Pop-Location
- Write-Ok "All containers started; waiting for stack to become healthy..."
-
- $waitResult = Wait-StackHealthy -TimeoutSec 300
- if (-not $waitResult.Ok) {
- Invoke-StackFailureReport -Result $waitResult
- }
- Write-Ok "All services healthy."
+ Invoke-ComposeUpWait
+ Write-Ok "All services started and healthy."
}
# ── Watchtower (auto-update) ────────────────────────────────────────────────
@@ -461,7 +499,7 @@ if ($SetupWatchtower) {
if ($LASTEXITCODE -eq 0) {
Write-Ok "Watchtower started - labeled SurfSense containers will auto-update."
} else {
- Write-Warn "Could not start Watchtower. You can set it up manually or use: docker compose pull; docker compose up -d"
+ Write-Warn "Could not start Watchtower. You can set it up manually or use: docker compose pull; docker compose up -d --wait"
}
}
} else {
@@ -488,6 +526,9 @@ Y88b d88P Y88b 888 888 888 Y88b d88P Y8b. 888 888 X88 Y8b.
$versionDisplay = (Get-Content $envPath | Select-String '^SURFSENSE_VERSION=' | ForEach-Object { ($_ -split '=',2)[1].Trim('"') }) | Select-Object -First 1
if (-not $versionDisplay) { $versionDisplay = "latest" }
+$variantDisplay = (Get-Content $envPath | Select-String '^SURFSENSE_VARIANT=' | ForEach-Object { ($_ -split '=',2)[1].Trim('"') }) | Select-Object -First 1
+if (-not $variantDisplay) { $variantDisplay = "cpu" }
+$wtHours = [math]::Floor($WatchtowerInterval / 3600)
Write-Host " OSS Alternative to NotebookLM for Teams [$versionDisplay]" -ForegroundColor Yellow
Write-Host ("=" * 62) -ForegroundColor Cyan
Write-Host ""
@@ -497,13 +538,14 @@ Write-Info " Backend: http://localhost:8929"
Write-Info " API Docs: http://localhost:8929/docs"
Write-Info ""
Write-Info " Config: $InstallDir\.env"
+Write-Info " Variant: $variantDisplay"
Write-Info " Logs: cd $InstallDir; docker compose logs -f"
Write-Info " Stop: cd $InstallDir; docker compose down"
-Write-Info " Update: cd $InstallDir; docker compose pull; docker compose up -d"
+Write-Info " Update: cd $InstallDir; docker compose pull; docker compose up -d --wait"
Write-Info ""
if ($SetupWatchtower) {
- Write-Info " Watchtower: auto-updates every ${wtHours}h (stop: docker rm -f $WatchtowerContainer)"
+ Write-Info " Watchtower: auto-updates every ${wtHours}h (disable: docker rm -f $WatchtowerContainer)"
} else {
Write-Warn " Watchtower skipped. For auto-updates, re-run without -NoWatchtower."
}
diff --git a/docker/scripts/install.sh b/docker/scripts/install.sh
index db81f95eb..8d53519d9 100644
--- a/docker/scripts/install.sh
+++ b/docker/scripts/install.sh
@@ -8,6 +8,11 @@
# Flags:
# --no-watchtower Skip automatic Watchtower setup
# --watchtower-interval=SECS Check interval in seconds (default: 86400 = 24h)
+# --variant=cpu|cuda|cuda126 Select backend image variant
+# --gpu Alias for --variant=cuda
+# --cpu Alias for --variant=cpu
+# --gpu-count=N|all Number of GPUs to reserve when GPU is enabled
+# --quiet Skip interactive prompts
#
# Handles two cases automatically:
# 1. Fresh install — no prior SurfSense data detected
@@ -35,12 +40,21 @@ MIGRATION_MODE=false
SETUP_WATCHTOWER=true
WATCHTOWER_INTERVAL=86400
WATCHTOWER_CONTAINER="watchtower"
+REQUESTED_VARIANT=""
+VARIANT_EXPLICIT=false
+GPU_COUNT=""
+QUIET=false
# ── Parse flags ─────────────────────────────────────────────────────────────
for arg in "$@"; do
case "$arg" in
--no-watchtower) SETUP_WATCHTOWER=false ;;
--watchtower-interval=*) WATCHTOWER_INTERVAL="${arg#*=}" ;;
+ --variant=*) REQUESTED_VARIANT="${arg#*=}"; VARIANT_EXPLICIT=true ;;
+ --gpu) REQUESTED_VARIANT="cuda"; VARIANT_EXPLICIT=true ;;
+ --cpu) REQUESTED_VARIANT="cpu"; VARIANT_EXPLICIT=true ;;
+ --gpu-count=*) GPU_COUNT="${arg#*=}" ;;
+ --quiet) QUIET=true ;;
esac
done
@@ -57,6 +71,15 @@ warn() { printf "${YELLOW}[SurfSense]${NC} %s\n" "$1"; }
error() { printf "${RED}[SurfSense]${NC} ERROR: %s\n" "$1" >&2; exit 1; }
step() { printf "\n${BOLD}${CYAN}── %s${NC}\n" "$1"; }
+case "${REQUESTED_VARIANT}" in
+ ""|cpu|cuda|cuda126) ;;
+ *) error "Invalid --variant='${REQUESTED_VARIANT}'. Use cpu, cuda, or cuda126." ;;
+esac
+
+if [[ -n "${GPU_COUNT}" && ! "${GPU_COUNT}" =~ ^([0-9]+|all)$ ]]; then
+ error "Invalid --gpu-count='${GPU_COUNT}'. Use a number or 'all'."
+fi
+
# ── Pre-flight checks ────────────────────────────────────────────────────────
step "Checking prerequisites"
@@ -97,126 +120,11 @@ wait_for_pg() {
success "PostgreSQL is ready."
}
-# ── Stack health helpers ─────────────────────────────────────────────────────
-
-# Enumerate compose services for project `surfsense` as `service|state|health|exitcode`
-# lines. Uses `docker inspect` so we don't depend on `jq`, `python3`, or the
-# exact ordering of fields in `docker compose ps --format json` output.
-get_compose_services() {
- local containers
- containers=$(docker ps -a --filter "label=com.docker.compose.project=surfsense" --format '{{.Names}}' 2>/dev/null) || true
- [[ -z "$containers" ]] && return 0
-
- while IFS= read -r container; do
- [[ -z "$container" ]] && continue
- local svc state health code
- svc=$(docker inspect -f '{{index .Config.Labels "com.docker.compose.service"}}' "$container" 2>/dev/null || echo "")
- state=$(docker inspect -f '{{.State.Status}}' "$container" 2>/dev/null || echo "unknown")
- health=$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{end}}' "$container" 2>/dev/null || echo "")
- code=$(docker inspect -f '{{.State.ExitCode}}' "$container" 2>/dev/null || echo "")
- [[ -z "$svc" ]] && continue
- printf '%s|%s|%s|%s\n' "$svc" "$state" "$health" "$code"
- done <<< "$containers"
-}
-
-# Globals populated by wait_stack_healthy / consumed by stack_failure_report.
-STACK_BAD=()
-STACK_WAITING=()
-STACK_GOOD=()
-STACK_TIMEOUT=false
-
-wait_stack_healthy() {
- local timeout_sec=${1:-300}
- local deadline=$(($(date +%s) + timeout_sec))
- local last_report=""
- local bad=()
- local waiting=()
- local good=()
-
- while [[ $(date +%s) -lt $deadline ]]; do
- local lines
- lines=$(get_compose_services)
- if [[ -z "$lines" ]]; then
- sleep 3
- continue
- fi
-
- bad=()
- waiting=()
- good=()
-
- while IFS='|' read -r name state health code; do
- [[ -z "$name" ]] && continue
- if [[ "$name" == "migrations" ]]; then
- if [[ "$state" == "exited" && "$code" == "0" ]]; then
- good+=("$name")
- elif [[ "$state" == "exited" ]]; then
- bad+=("${name} (exit=${code})")
- else
- waiting+=("${name} (${state})")
- fi
- continue
- fi
-
- if [[ "$state" == "running" ]]; then
- if [[ -z "$health" || "$health" == "healthy" ]]; then
- good+=("$name")
- elif [[ "$health" == "starting" ]]; then
- waiting+=("${name} (starting)")
- elif [[ "$health" == "unhealthy" ]]; then
- bad+=("${name} (unhealthy)")
- else
- waiting+=("${name} (${health})")
- fi
- elif [[ "$state" == "restarting" ]]; then
- bad+=("${name} (restarting)")
- elif [[ "$state" == "exited" ]]; then
- bad+=("${name} (exited, code=${code})")
- else
- waiting+=("${name} (${state})")
- fi
- done <<< "$lines"
-
- if (( ${#bad[@]} > 0 )); then
- STACK_BAD=("${bad[@]}")
- STACK_WAITING=("${waiting[@]}")
- STACK_GOOD=("${good[@]}")
- return 1
- fi
- if (( ${#waiting[@]} == 0 )); then
- STACK_GOOD=("${good[@]}")
- return 0
- fi
-
- local report="Waiting on: ${waiting[*]}"
- if [[ "$report" != "$last_report" ]]; then
- info "$report"
- last_report="$report"
- fi
- sleep 5
- done
-
- # bad/waiting/good are declared at function scope so referencing them is
- # safe even if the polling loop never executed its body.
- STACK_BAD=()
- [[ ${#bad[@]} -gt 0 ]] && STACK_BAD=("${bad[@]}")
- STACK_WAITING=()
- [[ ${#waiting[@]} -gt 0 ]] && STACK_WAITING=("${waiting[@]}")
- STACK_GOOD=()
- [[ ${#good[@]} -gt 0 ]] && STACK_GOOD=("${good[@]}")
- STACK_TIMEOUT=true
- return 1
-}
+# ── Stack startup helper ─────────────────────────────────────────────────────
stack_failure_report() {
echo ""
echo -e "\033[31m[ERROR]\033[0m Stack did not reach a healthy state."
- if (( ${#STACK_BAD[@]} > 0 )) && [[ -n "${STACK_BAD[0]}" ]]; then
- echo " Failed: ${STACK_BAD[*]}"
- fi
- if (( ${#STACK_WAITING[@]} > 0 )) && [[ -n "${STACK_WAITING[0]}" ]]; then
- echo " Stuck: ${STACK_WAITING[*]}"
- fi
echo ""
info "Recent logs from migrations / zero-cache / backend:"
(cd "${INSTALL_DIR}" && ${DC} logs --tail=60 migrations zero-cache backend 2>&1) || true
@@ -224,11 +132,20 @@ stack_failure_report() {
echo "Recovery hints:"
echo " 1. Inspect migrations: cd ${INSTALL_DIR} && ${DC} logs migrations"
echo " 2. Verify publication: cd ${INSTALL_DIR} && ${DC} exec db psql -U surfsense -d surfsense -c 'SELECT pubname FROM pg_publication;'"
- echo " 3. Hard reset zero db: cd ${INSTALL_DIR} && ${DC} down && docker volume rm surfsense-zero-cache && ${DC} up -d"
+ echo " 3. Hard reset zero db: cd ${INSTALL_DIR} && ${DC} down && docker volume rm surfsense-zero-cache && ${DC} up -d --wait"
echo ""
exit 1
}
+compose_up_wait() {
+ local service="${1:-}"
+ if [[ -n "$service" ]]; then
+ (cd "${INSTALL_DIR}" && ${DC} up -d --wait "$service") < /dev/null
+ else
+ (cd "${INSTALL_DIR}" && ${DC} up -d --wait) < /dev/null
+ fi
+}
+
# True if `surfsense-zero-cache` exists but `surfsense-zero-init` does not.
# That signals an install that predates the migrations-service fix; the old
# replica may be half-initialized and would block zero-cache on next start.
@@ -254,6 +171,144 @@ invoke_stale_zero_cache_cleanup() {
success "Removed surfsense-zero-cache volume; zero-cache will re-sync on next start."
}
+# ── Variant and .env helpers ─────────────────────────────────────────────────
+
+set_env_value() {
+ local file="$1"
+ local key="$2"
+ local value="$3"
+ local tmp
+ tmp=$(mktemp)
+
+ if grep -q "^${key}=" "$file" 2>/dev/null; then
+ awk -v key="$key" -v value="$value" 'BEGIN { prefix = key "=" } $0 ~ "^" prefix { print prefix value; next } { print }' "$file" > "$tmp"
+ else
+ cp "$file" "$tmp"
+ printf '\n%s=%s\n' "$key" "$value" >> "$tmp"
+ fi
+ mv "$tmp" "$file"
+}
+
+remove_env_value() {
+ local file="$1"
+ local key="$2"
+ local tmp
+ tmp=$(mktemp)
+ awk -v key="$key" 'BEGIN { prefix = key "=" } $0 !~ "^" prefix { print }' "$file" > "$tmp"
+ mv "$tmp" "$file"
+}
+
+version_major() {
+ printf '%s' "$1" | cut -d. -f1
+}
+
+recommend_cuda_variant() {
+ local driver_version driver_major
+ driver_version=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -n 1 | tr -d '[:space:]' || true)
+ driver_major=$(version_major "$driver_version")
+
+ # CUDA 12.8 generally requires an R570+ driver. Use CUDA 12.6 as the
+ # compatibility fallback for older 12.x driver stacks and GPUs.
+ if [[ "$driver_major" =~ ^[0-9]+$ && "$driver_major" -lt 570 ]]; then
+ printf 'cuda126'
+ else
+ printf 'cuda'
+ fi
+}
+
+gpu_runtime_available() {
+ docker info 2>/dev/null | grep -qi 'nvidia' \
+ || command -v nvidia-ctk >/dev/null 2>&1 \
+ || command -v nvidia-container-runtime >/dev/null 2>&1
+}
+
+host_has_nvidia_gpu() {
+ command -v nvidia-smi >/dev/null 2>&1 && nvidia-smi >/dev/null 2>&1
+}
+
+resolve_variant() {
+ local detected_variant="cpu"
+ local has_gpu=false
+ local has_runtime=false
+
+ if host_has_nvidia_gpu; then
+ has_gpu=true
+ detected_variant=$(recommend_cuda_variant)
+ if gpu_runtime_available; then
+ has_runtime=true
+ fi
+ fi
+
+ if $VARIANT_EXPLICIT; then
+ if [[ "$REQUESTED_VARIANT" == "cpu" ]]; then
+ printf 'cpu'
+ return 0
+ fi
+ if ! $has_gpu; then
+ warn "No NVIDIA GPU detected; falling back to CPU variant." >&2
+ printf 'cpu'
+ return 0
+ fi
+ if ! $has_runtime; then
+ warn "NVIDIA GPU detected, but NVIDIA Container Toolkit was not detected; falling back to CPU variant." >&2
+ warn "Install the toolkit before enabling SurfSense GPU acceleration." >&2
+ printf 'cpu'
+ return 0
+ fi
+ printf '%s' "$REQUESTED_VARIANT"
+ return 0
+ fi
+
+ if $has_gpu && ! $has_runtime; then
+ warn "NVIDIA GPU detected, but NVIDIA Container Toolkit was not detected; using CPU variant." >&2
+ fi
+
+ if $has_gpu && $has_runtime && ! $QUIET && [[ -r /dev/tty && -w /dev/tty ]]; then
+ local choice
+ echo "" > /dev/tty
+ printf "${BOLD}${CYAN}SurfSense detected an NVIDIA GPU.${NC}\n" > /dev/tty
+ printf "Use GPU acceleration? [Y/n]: " > /dev/tty
+ read -r choice < /dev/tty || choice=""
+ case "$choice" in
+ "") printf '%s' "$detected_variant" ;;
+ [Yy]|[Yy][Ee][Ss]) printf '%s' "$detected_variant" ;;
+ [Nn]|[Nn][Oo]) printf 'cpu' ;;
+ *) warn "Unrecognized choice '${choice}', using CPU variant." >&2; printf 'cpu' ;;
+ esac
+ return 0
+ fi
+
+ printf 'cpu'
+}
+
+apply_variant_env() {
+ local env_file="$1"
+ local variant="$2"
+ local allow_existing_update="$3"
+
+ if [[ -f "$env_file" && "$allow_existing_update" != "true" ]]; then
+ warn ".env already exists — keeping your existing configuration."
+ info "To change variants later, edit SURFSENSE_VARIANT and COMPOSE_FILE in ${env_file}, then run ${DC} up -d --wait."
+ return 0
+ fi
+
+ if [[ "$variant" == "cpu" ]]; then
+ set_env_value "$env_file" "SURFSENSE_VARIANT" ""
+ remove_env_value "$env_file" "COMPOSE_FILE"
+ remove_env_value "$env_file" "SURFSENSE_GPU_COUNT"
+ else
+ set_env_value "$env_file" "SURFSENSE_VARIANT" "$variant"
+ set_env_value "$env_file" "COMPOSE_FILE" "docker-compose.yml:docker-compose.gpu.yml"
+ if [[ -n "$GPU_COUNT" ]]; then
+ set_env_value "$env_file" "SURFSENSE_GPU_COUNT" "$GPU_COUNT"
+ fi
+ fi
+
+ remove_env_value "$env_file" "COMPOSE_PROFILES"
+}
+
+SELECTED_VARIANT=$(resolve_variant)
+
# ── Download files ───────────────────────────────────────────────────────────
step "Downloading SurfSense files"
@@ -263,6 +318,7 @@ mkdir -p "${INSTALL_DIR}/searxng"
FILES=(
"docker/docker-compose.yml:docker-compose.yml"
+ "docker/docker-compose.gpu.yml:docker-compose.gpu.yml"
"docker/.env.example:.env.example"
"docker/postgresql.conf:postgresql.conf"
"docker/scripts/migrate-database.sh:scripts/migrate-database.sh"
@@ -336,9 +392,15 @@ if [ ! -f "${INSTALL_DIR}/.env" ]; then
else
sed -i "s|SECRET_KEY=replace_me_with_a_random_string|SECRET_KEY=${SECRET_KEY}|" "${INSTALL_DIR}/.env"
fi
+ apply_variant_env "${INSTALL_DIR}/.env" "$SELECTED_VARIANT" "false"
info "Created ${INSTALL_DIR}/.env"
else
- warn ".env already exists — keeping your existing configuration."
+ if $VARIANT_EXPLICIT; then
+ apply_variant_env "${INSTALL_DIR}/.env" "$SELECTED_VARIANT" "true"
+ info "Updated SurfSense image variant in existing ${INSTALL_DIR}/.env"
+ else
+ apply_variant_env "${INSTALL_DIR}/.env" "$SELECTED_VARIANT" "false"
+ fi
fi
# ── Start containers ─────────────────────────────────────────────────────────
@@ -401,26 +463,20 @@ if $MIGRATION_MODE; then
fi
step "Starting all SurfSense services"
- (cd "${INSTALL_DIR}" && ${DC} up -d) < /dev/null
- success "All containers started; waiting for stack to become healthy..."
-
- if ! wait_stack_healthy 300; then
+ if ! compose_up_wait; then
stack_failure_report
fi
- success "All services healthy."
+ success "All services started and healthy."
# Key file is no longer needed — SECRET_KEY is now in .env
rm -f "${KEY_FILE}"
else
step "Starting SurfSense"
- (cd "${INSTALL_DIR}" && ${DC} up -d) < /dev/null
- success "All containers started; waiting for stack to become healthy..."
-
- if ! wait_stack_healthy 300; then
+ if ! compose_up_wait; then
stack_failure_report
fi
- success "All services healthy."
+ success "All services started and healthy."
fi
# ── Watchtower (auto-update) ─────────────────────────────────────────────────
@@ -445,7 +501,7 @@ if $SETUP_WATCHTOWER; then
--label-enable \
--interval "${WATCHTOWER_INTERVAL}" >/dev/null 2>&1 < /dev/null \
&& success "Watchtower started — labeled SurfSense containers will auto-update." \
- || warn "Could not start Watchtower. You can set it up manually or use: docker compose pull && docker compose up -d"
+ || warn "Could not start Watchtower. You can set it up manually or use: docker compose pull && docker compose up -d --wait"
fi
else
info "Skipping Watchtower setup (--no-watchtower flag)."
@@ -471,6 +527,8 @@ Y88b d88P Y88b 888 888 888 Y88b d88P Y8b. 888 888 X88 Y8b.
EOF
_version_display=$(grep '^SURFSENSE_VERSION=' "${INSTALL_DIR}/.env" 2>/dev/null | cut -d= -f2 | tr -d '"' | head -1 || true)
_version_display="${_version_display:-latest}"
+_variant_display=$(grep '^SURFSENSE_VARIANT=' "${INSTALL_DIR}/.env" 2>/dev/null | cut -d= -f2 | tr -d '"' | head -1 || true)
+_variant_display="${_variant_display:-cpu}"
printf " OSS Alternative to NotebookLM for Teams ${YELLOW}[%s]${NC}\n" "${_version_display}"
printf "${CYAN}══════════════════════════════════════════════════════════════${NC}\n\n"
@@ -479,13 +537,14 @@ info " Backend: http://localhost:8929"
info " API Docs: http://localhost:8929/docs"
info ""
info " Config: ${INSTALL_DIR}/.env"
+info " Variant: ${_variant_display}"
info " Logs: cd ${INSTALL_DIR} && ${DC} logs -f"
info " Stop: cd ${INSTALL_DIR} && ${DC} down"
-info " Update: cd ${INSTALL_DIR} && ${DC} pull && ${DC} up -d"
+info " Update: cd ${INSTALL_DIR} && ${DC} pull && ${DC} up -d --wait"
info ""
if $SETUP_WATCHTOWER; then
- info " Watchtower: auto-updates every $((WATCHTOWER_INTERVAL / 3600))h (stop: docker rm -f ${WATCHTOWER_CONTAINER})"
+ info " Watchtower: auto-updates every $((WATCHTOWER_INTERVAL / 3600))h (disable: docker rm -f ${WATCHTOWER_CONTAINER})"
else
warn " Watchtower skipped. For auto-updates, re-run without --no-watchtower."
fi
From f56e2325b03ece2809e9f62161a50a81862a334f Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 01:15:25 +0530
Subject: [PATCH 09/18] docs(docker): enhance GPU installation instructions and
update script behavior
---
.../docker-installation/docker-compose.mdx | 44 ++++++++++++++++++-
.../docker-installation/install-script.mdx | 41 ++++++++++++++++-
2 files changed, 81 insertions(+), 4 deletions(-)
diff --git a/surfsense_web/content/docs/docker-installation/docker-compose.mdx b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
index bf94c3dcc..560b64464 100644
--- a/surfsense_web/content/docs/docker-installation/docker-compose.mdx
+++ b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
@@ -55,10 +55,50 @@ SurfSense publishes CPU and CUDA backend image variants. The frontend image is n
All backend variants are published for `linux/amd64` and `linux/arm64`. CUDA on `linux/arm64` is best-effort.
-
-`SURFSENSE_VARIANT` only selects the GPU-built backend image. GPU device access is added separately in Phase 3.
+
+GPU acceleration needs two settings: `SURFSENSE_VARIANT` selects the CUDA image, and `COMPOSE_FILE` enables the GPU device overlay. The host must have the NVIDIA Container Toolkit installed.
+### NVIDIA GPU Acceleration
+
+For most NVIDIA systems, add these values to `.env` to use the CUDA 12.8 image:
+
+```dotenv
+SURFSENSE_VARIANT=cuda
+COMPOSE_FILE=docker-compose.yml:docker-compose.gpu.yml
+SURFSENSE_GPU_COUNT=1
+```
+
+Use `SURFSENSE_VARIANT=cuda126` for older NVIDIA driver stacks or older GPUs that need the CUDA 12.6 fallback image.
+
+On Windows, use `;` instead of `:` in `COMPOSE_FILE` inside `.env`:
+
+```dotenv
+COMPOSE_FILE=docker-compose.yml;docker-compose.gpu.yml
+```
+
+To switch variants later, edit `SURFSENSE_VARIANT` and `COMPOSE_FILE` in `.env`, then run:
+
+```bash
+docker compose pull
+docker compose up -d --wait
+```
+
+### Automatic Updates
+
+Manual Docker Compose installs do not start Watchtower automatically. To enable external automatic updates, run Watchtower separately:
+
+```bash
+docker run -d --name watchtower \
+ --restart unless-stopped \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ nickfedor/watchtower \
+ --label-enable \
+ --interval 86400
+```
+
+SurfSense containers are labeled for Watchtower, so `--label-enable` limits updates to the SurfSense services.
+
### Ports
| Variable | Description | Default |
diff --git a/surfsense_web/content/docs/docker-installation/install-script.mdx b/surfsense_web/content/docs/docker-installation/install-script.mdx
index 50ccc7288..8b42c1962 100644
--- a/surfsense_web/content/docs/docker-installation/install-script.mdx
+++ b/surfsense_web/content/docs/docker-installation/install-script.mdx
@@ -3,7 +3,7 @@ title: One-Line Install Script
description: One-command installation of SurfSense using Docker
---
-Downloads the compose files, generates a `SECRET_KEY`, starts all services, and sets up [Watchtower](https://github.com/nicholas-fedor/watchtower) for automatic daily updates.
+Downloads the compose files, generates a `SECRET_KEY`, starts all services with `docker compose up -d --wait`, and starts [Watchtower](https://github.com/nicholas-fedor/watchtower) as an external updater for automatic daily updates.
**Prerequisites:** [Docker Desktop](https://www.docker.com/products/docker-desktop/) must be installed and running.
@@ -19,7 +19,34 @@ curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scr
irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex
```
-This creates a `./surfsense/` directory with `docker-compose.yml` and `.env`, then runs `docker compose up -d`.
+This creates a `./surfsense/` directory with `docker-compose.yml`, `docker-compose.gpu.yml`, and `.env`, then runs `docker compose up -d --wait`.
+
+If an NVIDIA GPU and NVIDIA Container Toolkit are detected, the installer prompts for the backend variant. Non-interactive installs default to CPU unless you pass an explicit flag.
+
+### GPU options
+
+Linux/macOS:
+
+```bash
+# CUDA 12.8
+curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --variant=cuda
+
+# CUDA 12.6 fallback for older driver stacks
+curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --variant=cuda126
+
+# Reserve all available GPUs
+curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --gpu --gpu-count=all
+```
+
+PowerShell:
+
+```powershell
+# Save the script locally first when passing PowerShell parameters.
+.\install.ps1 -Variant cuda
+.\install.ps1 -Variant cuda126 -GpuCount all
+```
+
+The installer writes the same `.env` settings you would configure manually: `SURFSENSE_VARIANT` selects the backend image and `COMPOSE_FILE` enables the GPU overlay.
To skip Watchtower (e.g. in production where you manage updates yourself):
@@ -29,6 +56,16 @@ curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scr
To customise the check interval (default 24h), use `--watchtower-interval=SECONDS`.
+Manual updates use the same compose state stored in `.env`, so GPU overlays and variants are preserved:
+
+```bash
+cd surfsense
+docker compose pull
+docker compose up -d --wait
+```
+
+If Watchtower is enabled, it preserves the running image variant tag automatically. Because SurfSense images are large, use `--no-watchtower` when you prefer to manage update timing yourself.
+
---
## Access SurfSense
From 4bfa04ed5707ec88053919b106aa17505f4ba8a4 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 01:45:27 +0530
Subject: [PATCH 10/18] feat(docker): add interactive Watchtower update
preference to installation scripts
---
docker/scripts/install.ps1 | 22 ++++++++++++++++++
docker/scripts/install.sh | 23 ++++++++++++++++++-
.../docker-installation/install-script.mdx | 6 +++--
3 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/docker/scripts/install.ps1 b/docker/scripts/install.ps1
index b44e17ef3..0bdda95e1 100644
--- a/docker/scripts/install.ps1
+++ b/docker/scripts/install.ps1
@@ -64,6 +64,28 @@ function Invoke-NativeSafe {
}
}
+function Resolve-WatchtowerPreference {
+ if ($NoWatchtower -or $Quiet -or -not [Environment]::UserInteractive) {
+ return
+ }
+
+ Write-Host ""
+ Write-Host "Automatic updates" -ForegroundColor Cyan
+ $choice = Read-Host "Enable automatic daily updates with Watchtower? (may download several GB in the background) [Y/n]"
+
+ switch ($choice) {
+ "" { $script:SetupWatchtower = $true }
+ { $_ -match '^(?i)y(es)?$' } { $script:SetupWatchtower = $true }
+ { $_ -match '^(?i)n(o)?$' } { $script:SetupWatchtower = $false }
+ default {
+ Write-Warn "Unrecognized choice '$choice'; enabling Watchtower by default. Use -NoWatchtower to skip it."
+ $script:SetupWatchtower = $true
+ }
+ }
+}
+
+Resolve-WatchtowerPreference
+
# ── Pre-flight checks ──────────────────────────────────────────────────────
Write-Step "Checking prerequisites"
diff --git a/docker/scripts/install.sh b/docker/scripts/install.sh
index 8d53519d9..84570d5f6 100644
--- a/docker/scripts/install.sh
+++ b/docker/scripts/install.sh
@@ -40,6 +40,7 @@ MIGRATION_MODE=false
SETUP_WATCHTOWER=true
WATCHTOWER_INTERVAL=86400
WATCHTOWER_CONTAINER="watchtower"
+WATCHTOWER_EXPLICIT=false
REQUESTED_VARIANT=""
VARIANT_EXPLICIT=false
GPU_COUNT=""
@@ -48,7 +49,7 @@ QUIET=false
# ── Parse flags ─────────────────────────────────────────────────────────────
for arg in "$@"; do
case "$arg" in
- --no-watchtower) SETUP_WATCHTOWER=false ;;
+ --no-watchtower) SETUP_WATCHTOWER=false; WATCHTOWER_EXPLICIT=true ;;
--watchtower-interval=*) WATCHTOWER_INTERVAL="${arg#*=}" ;;
--variant=*) REQUESTED_VARIANT="${arg#*=}"; VARIANT_EXPLICIT=true ;;
--gpu) REQUESTED_VARIANT="cuda"; VARIANT_EXPLICIT=true ;;
@@ -80,6 +81,26 @@ if [[ -n "${GPU_COUNT}" && ! "${GPU_COUNT}" =~ ^([0-9]+|all)$ ]]; then
error "Invalid --gpu-count='${GPU_COUNT}'. Use a number or 'all'."
fi
+resolve_watchtower_preference() {
+ if $WATCHTOWER_EXPLICIT || $QUIET || [[ ! -r /dev/tty || ! -w /dev/tty ]]; then
+ return 0
+ fi
+
+ local choice
+ echo "" > /dev/tty
+ printf "${BOLD}${CYAN}Automatic updates${NC}\n" > /dev/tty
+ printf "Enable automatic daily updates with Watchtower? (may download several GB in the background) [Y/n]: " > /dev/tty
+ read -r choice < /dev/tty || choice=""
+
+ case "$choice" in
+ ""|[Yy]|[Yy][Ee][Ss]) SETUP_WATCHTOWER=true ;;
+ [Nn]|[Nn][Oo]) SETUP_WATCHTOWER=false ;;
+ *) warn "Unrecognized choice '${choice}', enabling Watchtower by default. Use --no-watchtower to skip it." >&2; SETUP_WATCHTOWER=true ;;
+ esac
+}
+
+resolve_watchtower_preference
+
# ── Pre-flight checks ────────────────────────────────────────────────────────
step "Checking prerequisites"
diff --git a/surfsense_web/content/docs/docker-installation/install-script.mdx b/surfsense_web/content/docs/docker-installation/install-script.mdx
index 8b42c1962..9f8acf9e5 100644
--- a/surfsense_web/content/docs/docker-installation/install-script.mdx
+++ b/surfsense_web/content/docs/docker-installation/install-script.mdx
@@ -21,7 +21,9 @@ irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/in
This creates a `./surfsense/` directory with `docker-compose.yml`, `docker-compose.gpu.yml`, and `.env`, then runs `docker compose up -d --wait`.
-If an NVIDIA GPU and NVIDIA Container Toolkit are detected, the installer prompts for the backend variant. Non-interactive installs default to CPU unless you pass an explicit flag.
+If an NVIDIA GPU and NVIDIA Container Toolkit are detected, the installer asks whether to use GPU acceleration and chooses the compatible backend image automatically. Non-interactive installs default to CPU unless you pass an explicit flag.
+
+Interactive installs also ask whether to enable automatic daily updates with Watchtower, noting that updates may download several GB in the background.
### GPU options
@@ -48,7 +50,7 @@ PowerShell:
The installer writes the same `.env` settings you would configure manually: `SURFSENSE_VARIANT` selects the backend image and `COMPOSE_FILE` enables the GPU overlay.
-To skip Watchtower (e.g. in production where you manage updates yourself):
+To skip Watchtower (e.g. in production where you manage updates yourself, or to avoid large background image downloads):
```bash
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash -s -- --no-watchtower
From 19fabaf0116f9774d7c7e74fe6d0417b3c979f07 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 01:49:41 +0530
Subject: [PATCH 11/18] feat(docker): enhance banner display to installation
scripts
---
docker/scripts/install.ps1 | 40 +++++++++++++++++++++-----------------
docker/scripts/install.sh | 40 ++++++++++++++++++++++----------------
2 files changed, 45 insertions(+), 35 deletions(-)
diff --git a/docker/scripts/install.ps1 b/docker/scripts/install.ps1
index 0bdda95e1..23812b2e8 100644
--- a/docker/scripts/install.ps1
+++ b/docker/scripts/install.ps1
@@ -53,6 +53,27 @@ function Write-Warn { param([string]$Msg) Write-Host "[SurfSense] " -Foregrou
function Write-Step { param([string]$Msg) Write-Host "`n-- $Msg" -ForegroundColor Cyan }
function Write-Err { param([string]$Msg) Write-Host "[SurfSense] ERROR: $Msg" -ForegroundColor Red; exit 1 }
+function Show-Banner {
+ Write-Host ""
+ Write-Host @"
+
+
+███████╗██╗ ██╗██████╗ ███████╗███████╗███████╗███╗ ██╗███████╗███████╗
+██╔════╝██║ ██║██╔══██╗██╔════╝██╔════╝██╔════╝████╗ ██║██╔════╝██╔════╝
+███████╗██║ ██║██████╔╝█████╗ ███████╗█████╗ ██╔██╗ ██║███████╗█████╗
+╚════██║██║ ██║██╔══██╗██╔══╝ ╚════██║██╔══╝ ██║╚██╗██║╚════██║██╔══╝
+███████║╚██████╔╝██║ ██║██║ ███████║███████╗██║ ╚████║███████║███████╗
+╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═══╝╚══════╝╚══════╝
+
+
+"@ -ForegroundColor White
+ Write-Host " OSS Alternative to NotebookLM for Teams" -ForegroundColor Yellow
+ Write-Host ("=" * 62) -ForegroundColor Cyan
+ Write-Info "This installer will create $InstallDir\ and start SurfSense with Docker Compose."
+}
+
+Show-Banner
+
function Invoke-NativeSafe {
param([scriptblock]$Command)
$previousErrorActionPreference = $ErrorActionPreference
@@ -531,29 +552,12 @@ if ($SetupWatchtower) {
# ── Done ────────────────────────────────────────────────────────────────────
Write-Host ""
-Write-Host @"
-
-
- .d8888b. .d888 .d8888b.
-d88P Y88b d88P" d88P Y88b
-Y88b. 888 Y88b.
- "Y888b. 888 888 888d888 888888 "Y888b. .d88b. 88888b. .d8888b .d88b.
- "Y88b. 888 888 888P" 888 "Y88b. d8P Y8b 888 "88b 88K d8P Y8b
- "888 888 888 888 888 "888 88888888 888 888 "Y8888b. 88888888
-Y88b d88P Y88b 888 888 888 Y88b d88P Y8b. 888 888 X88 Y8b.
- "Y8888P" "Y88888 888 888 "Y8888P" "Y8888 888 888 88888P' "Y8888
-
-
-"@ -ForegroundColor White
-
$versionDisplay = (Get-Content $envPath | Select-String '^SURFSENSE_VERSION=' | ForEach-Object { ($_ -split '=',2)[1].Trim('"') }) | Select-Object -First 1
if (-not $versionDisplay) { $versionDisplay = "latest" }
$variantDisplay = (Get-Content $envPath | Select-String '^SURFSENSE_VARIANT=' | ForEach-Object { ($_ -split '=',2)[1].Trim('"') }) | Select-Object -First 1
if (-not $variantDisplay) { $variantDisplay = "cpu" }
$wtHours = [math]::Floor($WatchtowerInterval / 3600)
-Write-Host " OSS Alternative to NotebookLM for Teams [$versionDisplay]" -ForegroundColor Yellow
-Write-Host ("=" * 62) -ForegroundColor Cyan
-Write-Host ""
+Write-Step "SurfSense is now installed [$versionDisplay]"
Write-Info " Frontend: http://localhost:3929"
Write-Info " Backend: http://localhost:8929"
diff --git a/docker/scripts/install.sh b/docker/scripts/install.sh
index 84570d5f6..d21d38d79 100644
--- a/docker/scripts/install.sh
+++ b/docker/scripts/install.sh
@@ -72,6 +72,28 @@ warn() { printf "${YELLOW}[SurfSense]${NC} %s\n" "$1"; }
error() { printf "${RED}[SurfSense]${NC} ERROR: %s\n" "$1" >&2; exit 1; }
step() { printf "\n${BOLD}${CYAN}── %s${NC}\n" "$1"; }
+show_banner() {
+ echo ""
+ printf '\033[1;37m'
+ cat << 'EOF'
+
+
+███████╗██╗ ██╗██████╗ ███████╗███████╗███████╗███╗ ██╗███████╗███████╗
+██╔════╝██║ ██║██╔══██╗██╔════╝██╔════╝██╔════╝████╗ ██║██╔════╝██╔════╝
+███████╗██║ ██║██████╔╝█████╗ ███████╗█████╗ ██╔██╗ ██║███████╗█████╗
+╚════██║██║ ██║██╔══██╗██╔══╝ ╚════██║██╔══╝ ██║╚██╗██║╚════██║██╔══╝
+███████║╚██████╔╝██║ ██║██║ ███████║███████╗██║ ╚████║███████║███████╗
+╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═══╝╚══════╝╚══════╝
+
+
+EOF
+ printf "${YELLOW} OSS Alternative to NotebookLM for Teams${NC}\n"
+ printf "${CYAN}══════════════════════════════════════════════════════════════${NC}\n"
+ info "This installer will create ${INSTALL_DIR}/ and start SurfSense with Docker Compose."
+}
+
+show_banner
+
case "${REQUESTED_VARIANT}" in
""|cpu|cuda|cuda126) ;;
*) error "Invalid --variant='${REQUESTED_VARIANT}'. Use cpu, cuda, or cuda126." ;;
@@ -531,27 +553,11 @@ fi
# ── Done ─────────────────────────────────────────────────────────────────────
echo ""
-printf '\033[1;37m'
-cat << 'EOF'
-
-
- .d8888b. .d888 .d8888b.
-d88P Y88b d88P" d88P Y88b
-Y88b. 888 Y88b.
- "Y888b. 888 888 888d888 888888 "Y888b. .d88b. 88888b. .d8888b .d88b.
- "Y88b. 888 888 888P" 888 "Y88b. d8P Y8b 888 "88b 88K d8P Y8b
- "888 888 888 888 888 "888 88888888 888 888 "Y8888b. 88888888
-Y88b d88P Y88b 888 888 888 Y88b d88P Y8b. 888 888 X88 Y8b.
- "Y8888P" "Y88888 888 888 "Y8888P" "Y8888 888 888 88888P' "Y8888
-
-
-EOF
_version_display=$(grep '^SURFSENSE_VERSION=' "${INSTALL_DIR}/.env" 2>/dev/null | cut -d= -f2 | tr -d '"' | head -1 || true)
_version_display="${_version_display:-latest}"
_variant_display=$(grep '^SURFSENSE_VARIANT=' "${INSTALL_DIR}/.env" 2>/dev/null | cut -d= -f2 | tr -d '"' | head -1 || true)
_variant_display="${_variant_display:-cpu}"
-printf " OSS Alternative to NotebookLM for Teams ${YELLOW}[%s]${NC}\n" "${_version_display}"
-printf "${CYAN}══════════════════════════════════════════════════════════════${NC}\n\n"
+step "SurfSense is now installed [${_version_display}]"
info " Frontend: http://localhost:3929"
info " Backend: http://localhost:8929"
From 4e00f24a031453d6b4030c94d9c787fa7de2f2e1 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sat, 6 Jun 2026 14:21:14 +0530
Subject: [PATCH 12/18] feat(docker): add ZERO_AUTO_RESET configuration for
improved replication safety
- Introduced the ZERO_AUTO_RESET environment variable to enable automatic reset of the SQLite replica in case of replication halts.
- Updated Docker Compose files to include ZERO_AUTO_RESET in service configurations.
- Enhanced documentation to clarify the purpose and usage of the new variable.
---
docker/.env.example | 4 +
docker/docker-compose.deps-only.yml | 3 +
docker/docker-compose.dev.yml | 13 +-
docker/docker-compose.yml | 23 +-
docker/scripts/install.ps1 | 30 ---
docker/scripts/install.sh | 27 ---
surfsense_backend/alembic/env.py | 22 +-
.../143_force_zero_publication_resync.py | 1 -
.../155_reconcile_zero_publication.py | 23 ++
surfsense_backend/app/zero_publication.py | 229 ++++++++++++++++++
.../scripts/docker/entrypoint.sh | 55 +----
.../docker-installation/docker-compose.mdx | 25 +-
12 files changed, 304 insertions(+), 151 deletions(-)
create mode 100644 surfsense_backend/alembic/versions/155_reconcile_zero_publication.py
create mode 100644 surfsense_backend/app/zero_publication.py
diff --git a/docker/.env.example b/docker/.env.example
index 5f0f3c018..ba81543d3 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -102,6 +102,10 @@ EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
# Only change this if you manage publications manually.
# ZERO_APP_PUBLICATIONS=zero_publication
+# Keep Zero's documented halt safety net enabled. If replication halts, Zero
+# can wipe and re-sync its local SQLite replica without touching Postgres.
+# ZERO_AUTO_RESET=true
+
# Sync worker tuning. zero-cache defaults ZERO_NUM_SYNC_WORKERS to the number
# of CPU cores, which can exceed the connection pool limits on high-core machines.
# Each sync worker needs at least 1 connection from both the UPSTREAM and CVR
diff --git a/docker/docker-compose.deps-only.yml b/docker/docker-compose.deps-only.yml
index 528f6df0b..ad4cc3127 100644
--- a/docker/docker-compose.deps-only.yml
+++ b/docker/docker-compose.deps-only.yml
@@ -114,6 +114,7 @@ services:
- ZERO_REPLICA_FILE=/data/zero.db
- ZERO_ADMIN_PASSWORD=${ZERO_ADMIN_PASSWORD:-surfsense-zero-admin}
- ZERO_APP_PUBLICATIONS=${ZERO_APP_PUBLICATIONS:-zero_publication}
+ - ZERO_AUTO_RESET=${ZERO_AUTO_RESET:-true}
- ZERO_NUM_SYNC_WORKERS=${ZERO_NUM_SYNC_WORKERS:-4}
- ZERO_UPSTREAM_MAX_CONNS=${ZERO_UPSTREAM_MAX_CONNS:-20}
- ZERO_CVR_MAX_CONNS=${ZERO_CVR_MAX_CONNS:-30}
@@ -122,11 +123,13 @@ services:
volumes:
- zero_cache_data:/data
restart: unless-stopped
+ stop_grace_period: 300s
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4848/keepalive"]
interval: 10s
timeout: 5s
retries: 5
+ start_period: 600s
# OPTIONAL — Azurite emulates Azure Blob Storage for testing the Azure
# original-file backend. The default filesystem backend needs none of this.
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
index 2e19d0791..35effefc0 100644
--- a/docker/docker-compose.dev.yml
+++ b/docker/docker-compose.dev.yml
@@ -46,8 +46,6 @@ services:
- PYTHONPATH=/app
- SERVICE_ROLE=migrate
- MIGRATION_TIMEOUT=${MIGRATION_TIMEOUT:-900}
- volumes:
- - zero_init:/zero-init
depends_on:
db:
condition: service_healthy
@@ -235,6 +233,7 @@ services:
- ZERO_REPLICA_FILE=/data/zero.db
- ZERO_ADMIN_PASSWORD=${ZERO_ADMIN_PASSWORD:-surfsense-zero-admin}
- ZERO_APP_PUBLICATIONS=${ZERO_APP_PUBLICATIONS:-zero_publication}
+ - ZERO_AUTO_RESET=${ZERO_AUTO_RESET:-true}
- ZERO_NUM_SYNC_WORKERS=${ZERO_NUM_SYNC_WORKERS:-4}
- ZERO_UPSTREAM_MAX_CONNS=${ZERO_UPSTREAM_MAX_CONNS:-20}
- ZERO_CVR_MAX_CONNS=${ZERO_CVR_MAX_CONNS:-30}
@@ -242,18 +241,14 @@ services:
- ZERO_MUTATE_URL=${ZERO_MUTATE_URL:-http://frontend:3000/api/zero/mutate}
volumes:
- zero_cache_data:/data
- - zero_init:/zero-init
- # Wrapper: see docker/docker-compose.yml `zero-cache` for rationale.
- entrypoint: ["sh", "-c"]
- # Pass the script as a single list element so Compose does not tokenize it.
- command:
- - 'if [ -f /zero-init/needs_reset ]; then echo "[zero-init] publication change detected; wiping replica file(s) under /data" && rm -f /data/zero.db /data/zero.db-shm /data/zero.db-wal && rm -f /zero-init/needs_reset; fi; exec zero-cache'
restart: unless-stopped
+ stop_grace_period: 300s
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4848/keepalive"]
interval: 10s
timeout: 5s
retries: 5
+ start_period: 600s
frontend:
build:
@@ -285,7 +280,5 @@ volumes:
name: surfsense-dev-shared-temp
zero_cache_data:
name: surfsense-dev-zero-cache
- zero_init:
- name: surfsense-dev-zero-init
whatsapp_sessions:
name: surfsense-dev-whatsapp-sessions
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 93dc10ebe..9bbf28ffd 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -29,10 +29,9 @@ services:
# Short-lived schema runner. Executes `alembic upgrade head` and verifies
# that the `zero_publication` Postgres logical-replication publication
- # exists, then exits 0. Downstream services (backend, celery_*, zero-cache)
- # gate on this with `condition: service_completed_successfully` so a failed
- # migration halts the whole stack instead of silently producing a half-built
- # system that crash-loops zero-cache on missing publications.
+ # matches the canonical shape, then exits 0. Downstream services gate on this
+ # with `condition: service_completed_successfully` so a failed migration halts
+ # the whole stack instead of booting zero-cache against a drifted publication.
migrations:
image: ghcr.io/modsetter/surfsense-backend:${SURFSENSE_VERSION:-latest}${SURFSENSE_VARIANT:+-${SURFSENSE_VARIANT}}
env_file:
@@ -42,8 +41,6 @@ services:
PYTHONPATH: /app
SERVICE_ROLE: migrate
MIGRATION_TIMEOUT: ${MIGRATION_TIMEOUT:-900}
- volumes:
- - zero_init:/zero-init
depends_on:
db:
condition: service_healthy
@@ -231,6 +228,7 @@ services:
ZERO_REPLICA_FILE: /data/zero.db
ZERO_ADMIN_PASSWORD: ${ZERO_ADMIN_PASSWORD:-surfsense-zero-admin}
ZERO_APP_PUBLICATIONS: ${ZERO_APP_PUBLICATIONS:-zero_publication}
+ ZERO_AUTO_RESET: ${ZERO_AUTO_RESET:-true}
ZERO_NUM_SYNC_WORKERS: ${ZERO_NUM_SYNC_WORKERS:-4}
ZERO_UPSTREAM_MAX_CONNS: ${ZERO_UPSTREAM_MAX_CONNS:-20}
ZERO_CVR_MAX_CONNS: ${ZERO_CVR_MAX_CONNS:-30}
@@ -238,16 +236,8 @@ services:
ZERO_MUTATE_URL: ${ZERO_MUTATE_URL:-http://frontend:3000/api/zero/mutate}
volumes:
- zero_cache_data:/data
- - zero_init:/zero-init
- # Wrapper: if the migrations service flagged a publication change via
- # /zero-init/needs_reset, wipe the SQLite replica before starting so
- # zero-cache does a clean initial sync. Recovers from the half-built
- # replica state (`_zero.tableMetadata` missing) caused by earlier crashes.
- entrypoint: ["sh", "-c"]
- # Pass the script as a single list element so Compose does not tokenize it.
- command:
- - 'if [ -f /zero-init/needs_reset ]; then echo "[zero-init] publication change detected; wiping replica file(s) under /data" && rm -f /data/zero.db /data/zero.db-shm /data/zero.db-wal && rm -f /zero-init/needs_reset; fi; exec zero-cache'
restart: unless-stopped
+ stop_grace_period: 300s
depends_on:
db:
condition: service_healthy
@@ -258,6 +248,7 @@ services:
interval: 10s
timeout: 5s
retries: 5
+ start_period: 600s
frontend:
image: ghcr.io/modsetter/surfsense-web:${SURFSENSE_VERSION:-latest}
@@ -289,7 +280,5 @@ volumes:
name: surfsense-shared-temp
zero_cache_data:
name: surfsense-zero-cache
- zero_init:
- name: surfsense-zero-init
whatsapp_sessions:
name: surfsense-whatsapp-sessions
diff --git a/docker/scripts/install.ps1 b/docker/scripts/install.ps1
index 23812b2e8..6e973a520 100644
--- a/docker/scripts/install.ps1
+++ b/docker/scripts/install.ps1
@@ -153,34 +153,6 @@ function Wait-ForPostgres {
# ── Stack startup helper ────────────────────────────────────────────────────
-function Test-StaleZeroCacheVolume {
- $raw = Invoke-NativeSafe { docker volume ls --format '{{.Name}}' 2>$null }
- if ([string]::IsNullOrWhiteSpace($raw)) { return $false }
- $names = $raw -split "`r?`n" | ForEach-Object { $_.Trim() } | Where-Object { $_ }
- $hasZeroCache = $names -contains 'surfsense-zero-cache'
- $hasZeroInit = $names -contains 'surfsense-zero-init'
- # Pre-fix installs created surfsense-zero-cache but never surfsense-zero-init.
- # Such a volume may hold a half-initialized SQLite replica from an earlier
- # crash-loop. Wiping it forces zero-cache to do a fresh initial sync.
- return ($hasZeroCache -and -not $hasZeroInit)
-}
-
-function Invoke-StaleZeroCacheCleanup {
- if (-not (Test-StaleZeroCacheVolume)) { return }
-
- Write-Warn "Detected pre-existing 'surfsense-zero-cache' volume from an install that"
- Write-Warn "predates the migrations-service fix. It may contain a half-initialized"
- Write-Warn "SQLite replica that would block zero-cache from starting."
- Write-Warn "The volume will be removed in 5 seconds; press Ctrl+C to cancel."
- Start-Sleep -Seconds 5
-
- Push-Location $InstallDir
- Invoke-NativeSafe { docker compose down --remove-orphans 2>$null } | Out-Null
- Pop-Location
- Invoke-NativeSafe { docker volume rm surfsense-zero-cache 2>$null } | Out-Null
- Write-Ok "Removed surfsense-zero-cache volume; zero-cache will re-sync on next start."
-}
-
function Invoke-StackFailureReport {
Write-Host ""
Write-Host "[ERROR] Stack did not reach a healthy state." -ForegroundColor Red
@@ -443,8 +415,6 @@ if (-not (Test-Path $envPath)) {
# ── Start containers ────────────────────────────────────────────────────────
-Invoke-StaleZeroCacheCleanup
-
if ($MigrationMode) {
$envContent = Get-Content $envPath
$DbUser = ($envContent | Select-String '^DB_USER=' | ForEach-Object { ($_ -split '=',2)[1].Trim('"') }) | Select-Object -First 1
diff --git a/docker/scripts/install.sh b/docker/scripts/install.sh
index d21d38d79..4df15fbd0 100644
--- a/docker/scripts/install.sh
+++ b/docker/scripts/install.sh
@@ -189,31 +189,6 @@ compose_up_wait() {
fi
}
-# True if `surfsense-zero-cache` exists but `surfsense-zero-init` does not.
-# That signals an install that predates the migrations-service fix; the old
-# replica may be half-initialized and would block zero-cache on next start.
-test_stale_zero_cache_volume() {
- local has_zc has_zi
- has_zc=$(docker volume ls --format '{{.Name}}' 2>/dev/null | grep -Fx 'surfsense-zero-cache' || true)
- has_zi=$(docker volume ls --format '{{.Name}}' 2>/dev/null | grep -Fx 'surfsense-zero-init' || true)
- [[ -n "$has_zc" && -z "$has_zi" ]]
-}
-
-invoke_stale_zero_cache_cleanup() {
- if ! test_stale_zero_cache_volume; then
- return 0
- fi
- warn "Detected pre-existing 'surfsense-zero-cache' volume from an install that"
- warn "predates the migrations-service fix. It may contain a half-initialized"
- warn "SQLite replica that would block zero-cache from starting."
- warn "The volume will be removed in 5 seconds; press Ctrl+C to cancel."
- sleep 5
-
- (cd "${INSTALL_DIR}" && ${DC} down --remove-orphans 2>/dev/null) || true
- docker volume rm surfsense-zero-cache 2>/dev/null || true
- success "Removed surfsense-zero-cache volume; zero-cache will re-sync on next start."
-}
-
# ── Variant and .env helpers ─────────────────────────────────────────────────
set_env_value() {
@@ -448,8 +423,6 @@ fi
# ── Start containers ─────────────────────────────────────────────────────────
-invoke_stale_zero_cache_cleanup
-
if $MIGRATION_MODE; then
# Read DB credentials from .env (fall back to defaults from docker-compose.yml)
DB_USER=$(grep '^DB_USER=' "${INSTALL_DIR}/.env" 2>/dev/null | cut -d= -f2 | tr -d '"' | head -1 || true)
diff --git a/surfsense_backend/alembic/env.py b/surfsense_backend/alembic/env.py
index 5354211aa..04a6b50ff 100644
--- a/surfsense_backend/alembic/env.py
+++ b/surfsense_backend/alembic/env.py
@@ -3,6 +3,7 @@ import os
import sys
from logging.config import fileConfig
+import sqlalchemy as sa
from sqlalchemy import pool
from sqlalchemy.engine import Connection
from sqlalchemy.ext.asyncio import async_engine_from_config
@@ -36,6 +37,9 @@ if config.config_file_name is not None:
# target_metadata = mymodel.Base.metadata
target_metadata = Base.metadata
+MIGRATION_ADVISORY_LOCK_NAMESPACE = "surfsense"
+MIGRATION_ADVISORY_LOCK_NAME = "alembic_migrations"
+
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
@@ -73,8 +77,22 @@ def do_run_migrations(connection: Connection) -> None:
transaction_per_migration=True,
)
- with context.begin_transaction():
- context.run_migrations()
+ lock_params = {
+ "namespace": MIGRATION_ADVISORY_LOCK_NAMESPACE,
+ "name": MIGRATION_ADVISORY_LOCK_NAME,
+ }
+ connection.execute(
+ sa.text("SELECT pg_advisory_lock(hashtext(:namespace), hashtext(:name))"),
+ lock_params,
+ )
+ try:
+ with context.begin_transaction():
+ context.run_migrations()
+ finally:
+ connection.execute(
+ sa.text("SELECT pg_advisory_unlock(hashtext(:namespace), hashtext(:name))"),
+ lock_params,
+ )
async def run_async_migrations() -> None:
diff --git a/surfsense_backend/alembic/versions/143_force_zero_publication_resync.py b/surfsense_backend/alembic/versions/143_force_zero_publication_resync.py
index 147cbde56..193d51039 100644
--- a/surfsense_backend/alembic/versions/143_force_zero_publication_resync.py
+++ b/surfsense_backend/alembic/versions/143_force_zero_publication_resync.py
@@ -47,7 +47,6 @@ depends_on: str | Sequence[str] | None = None
PUBLICATION_NAME = "zero_publication"
-# Must stay in sync with the column lists in migrations 117 / 139 / 140.
DOCUMENT_COLS = [
"id",
"title",
diff --git a/surfsense_backend/alembic/versions/155_reconcile_zero_publication.py b/surfsense_backend/alembic/versions/155_reconcile_zero_publication.py
new file mode 100644
index 000000000..1d2e6ed34
--- /dev/null
+++ b/surfsense_backend/alembic/versions/155_reconcile_zero_publication.py
@@ -0,0 +1,23 @@
+"""reconcile zero_publication from canonical definition
+
+Revision ID: 155
+Revises: 154
+"""
+
+from collections.abc import Sequence
+
+from alembic import op
+from app.zero_publication import apply_publication
+
+revision: str = "155"
+down_revision: str | None = "154"
+branch_labels: str | Sequence[str] | None = None
+depends_on: str | Sequence[str] | None = None
+
+
+def upgrade() -> None:
+ apply_publication(op.get_bind())
+
+
+def downgrade() -> None:
+ """No-op. Historical publication shapes are immutable."""
diff --git a/surfsense_backend/app/zero_publication.py b/surfsense_backend/app/zero_publication.py
new file mode 100644
index 000000000..c3e41ef9b
--- /dev/null
+++ b/surfsense_backend/app/zero_publication.py
@@ -0,0 +1,229 @@
+"""Canonical Zero publication definition for SurfSense.
+
+This module is the single source of truth for ``zero_publication``. Future
+publication changes should update ``ZERO_PUBLICATION`` and call
+``apply_publication()`` from a migration instead of hand-copying table lists.
+
+SurfSense runs Zero on Postgres with Zero's event triggers installed, so the
+official Zero path is a plain ``ALTER PUBLICATION ... SET TABLE``. If a future
+deployment cannot use event triggers, use Zero's documented
+``zero_0.update_schemas()`` hook as the fallback instead of COMMENT bookends.
+"""
+
+from __future__ import annotations
+
+import argparse
+import asyncio
+import os
+import sys
+from collections.abc import Mapping, Sequence
+
+from sqlalchemy import text
+from sqlalchemy.engine import Connection
+from sqlalchemy.ext.asyncio import create_async_engine
+
+PUBLICATION_NAME = "zero_publication"
+
+DOCUMENT_COLS = [
+ "id",
+ "title",
+ "document_type",
+ "search_space_id",
+ "folder_id",
+ "created_by_id",
+ "status",
+ "created_at",
+ "updated_at",
+]
+
+USER_COLS = [
+ "id",
+ "pages_limit",
+ "pages_used",
+ "premium_credit_micros_limit",
+ "premium_credit_micros_used",
+]
+
+AUTOMATION_RUN_COLS = [
+ "id",
+ "automation_id",
+ "trigger_id",
+ "status",
+ "step_results",
+ "started_at",
+ "finished_at",
+ "created_at",
+]
+
+ZERO_PUBLICATION: Mapping[str, Sequence[str] | None] = {
+ "notifications": None,
+ "documents": DOCUMENT_COLS,
+ "folders": None,
+ "search_source_connectors": None,
+ "new_chat_messages": None,
+ "chat_comments": None,
+ "chat_session_state": None,
+ "user": USER_COLS,
+ "automation_runs": AUTOMATION_RUN_COLS,
+}
+
+
+def _quote_identifier(identifier: str) -> str:
+ return '"' + identifier.replace('"', '""') + '"'
+
+
+def _column_exists(conn: Connection, table: str, column: str) -> bool:
+ return (
+ conn.execute(
+ text(
+ "SELECT 1 FROM information_schema.columns "
+ "WHERE table_schema = current_schema() "
+ "AND table_name = :table AND column_name = :column"
+ ),
+ {"table": table, "column": column},
+ ).fetchone()
+ is not None
+ )
+
+
+def _expected_columns(conn: Connection, table: str) -> list[str] | None:
+ columns = ZERO_PUBLICATION[table]
+ if columns is None:
+ return None
+
+ expected = list(columns)
+ if table in {"documents", "user"} and _column_exists(conn, table, "_0_version"):
+ expected.append("_0_version")
+ return expected
+
+
+def _format_table_entry(conn: Connection, table: str) -> str:
+ columns = _expected_columns(conn, table)
+ table_sql = _quote_identifier(table)
+ if columns is None:
+ return table_sql
+
+ column_sql = ", ".join(_quote_identifier(column) for column in columns)
+ return f"{table_sql} ({column_sql})"
+
+
+def build_set_table_sql(conn: Connection) -> str:
+ """Build the canonical plain SET TABLE statement for Zero's event triggers."""
+
+ table_list = ", ".join(_format_table_entry(conn, table) for table in ZERO_PUBLICATION)
+ return f"ALTER PUBLICATION {_quote_identifier(PUBLICATION_NAME)} SET TABLE {table_list}"
+
+
+def apply_publication(conn: Connection) -> None:
+ """Reconcile ``zero_publication`` to the canonical shape."""
+
+ exists = conn.execute(
+ text("SELECT 1 FROM pg_publication WHERE pubname = :name"),
+ {"name": PUBLICATION_NAME},
+ ).fetchone()
+ if not exists:
+ return
+
+ conn.execute(text(build_set_table_sql(conn)))
+
+
+def _actual_publication_shape(conn: Connection) -> dict[str, list[str] | None]:
+ rows = conn.execute(
+ text(
+ "SELECT pt.tablename, pr.prattrs IS NULL AS all_columns, pt.attnames "
+ "FROM pg_publication_tables pt "
+ "JOIN pg_publication p ON p.pubname = pt.pubname "
+ "JOIN pg_class c ON c.relname = pt.tablename "
+ "JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = pt.schemaname "
+ "JOIN pg_publication_rel pr ON pr.prpubid = p.oid AND pr.prrelid = c.oid "
+ "WHERE pt.pubname = :name AND pt.schemaname = current_schema() "
+ "ORDER BY pt.tablename"
+ ),
+ {"name": PUBLICATION_NAME},
+ ).mappings()
+
+ return {
+ str(row["tablename"]): None
+ if row["all_columns"]
+ else list(row["attnames"] or [])
+ for row in rows
+ }
+
+
+def expected_publication_shape(conn: Connection) -> dict[str, list[str] | None]:
+ return {table: _expected_columns(conn, table) for table in ZERO_PUBLICATION}
+
+
+def verify_publication(conn: Connection) -> list[str]:
+ """Return human-readable mismatches between Postgres and the canonical shape."""
+
+ publication_exists = conn.execute(
+ text("SELECT 1 FROM pg_publication WHERE pubname = :name"),
+ {"name": PUBLICATION_NAME},
+ ).fetchone()
+ if not publication_exists:
+ return [f"Publication {PUBLICATION_NAME!r} does not exist"]
+
+ actual = _actual_publication_shape(conn)
+ expected = expected_publication_shape(conn)
+ mismatches: list[str] = []
+
+ for table, expected_columns in expected.items():
+ if table not in actual:
+ mismatches.append(f"{table}: missing from publication")
+ continue
+
+ actual_columns = actual[table]
+ actual_key = sorted(actual_columns) if actual_columns is not None else None
+ expected_key = sorted(expected_columns) if expected_columns is not None else None
+ if actual_key != expected_key:
+ mismatches.append(
+ f"{table}: expected columns {expected_columns or 'ALL'}, "
+ f"got {actual_columns or 'ALL'}"
+ )
+
+ for table in sorted(set(actual) - set(expected)):
+ mismatches.append(f"{table}: unexpected table in publication")
+
+ return mismatches
+
+
+async def _verify_cli() -> int:
+ database_url = os.getenv("DATABASE_URL")
+ if not database_url:
+ print("DATABASE_URL is required to verify zero_publication.", file=sys.stderr)
+ return 2
+
+ engine = create_async_engine(database_url)
+ async with engine.connect() as async_conn:
+ def run_verify(sync_conn: Connection) -> list[str]:
+ return verify_publication(sync_conn)
+
+ mismatches = await async_conn.run_sync(run_verify)
+
+ await engine.dispose()
+
+ if mismatches:
+ print("zero_publication shape mismatch:", file=sys.stderr)
+ for mismatch in mismatches:
+ print(f" - {mismatch}", file=sys.stderr)
+ return 1
+
+ print("zero_publication shape verified.")
+ return 0
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(description="Manage SurfSense's Zero publication")
+ parser.add_argument("--verify", action="store_true", help="verify zero_publication shape")
+ args = parser.parse_args()
+
+ if args.verify:
+ return asyncio.run(_verify_cli())
+
+ parser.print_help()
+ return 2
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/surfsense_backend/scripts/docker/entrypoint.sh b/surfsense_backend/scripts/docker/entrypoint.sh
index 0c1e66790..2efd78f94 100644
--- a/surfsense_backend/scripts/docker/entrypoint.sh
+++ b/surfsense_backend/scripts/docker/entrypoint.sh
@@ -49,10 +49,10 @@ trap cleanup SIGTERM SIGINT
# ── Database migrations (only for migrate / all) ─────────────
# Fail-fast contract:
# - alembic upgrade head must succeed within ${MIGRATION_TIMEOUT:-900}s
-# - zero_publication must exist in pg_publication afterwards
+# - zero_publication must match the canonical app.zero_publication shape
# Either failure exits non-zero so the dedicated `migrations` compose
# service exits non-zero, halting the rest of the stack instead of
-# silently producing a half-built system that crash-loops zero-cache.
+# silently producing a drifted Zero publication.
run_migrations() {
echo "Running database migrations..."
for i in {1..30}; do
@@ -73,58 +73,13 @@ run_migrations() {
fi
echo "Migrations completed successfully."
- echo "Verifying zero_publication exists in Postgres..."
- local pub_oid
- pub_oid=$(python <<'PY' 2>/dev/null || true
-import asyncio
-import sys
-from sqlalchemy import text
-from app.db import engine
-
-
-async def get_oid():
- async with engine.connect() as conn:
- result = await conn.execute(
- text("SELECT oid FROM pg_publication WHERE pubname = 'zero_publication'")
- )
- row = result.first()
- if row is None:
- sys.exit(1)
- print(int(row[0]))
-
-
-asyncio.run(get_oid())
-PY
-)
- if [ -z "${pub_oid}" ]; then
- echo "ERROR: zero_publication is missing from Postgres after running alembic." >&2
- echo "This usually means migration 116 (or a later publication migration) did not run." >&2
+ echo "Verifying zero_publication matches the canonical shape..."
+ if ! python -m app.zero_publication --verify; then
+ echo "ERROR: zero_publication does not match the canonical shape." >&2
echo "Inspect alembic state with:" >&2
echo " docker compose exec db psql -U \"\$DB_USER\" -d \"\$DB_NAME\" -c 'SELECT * FROM alembic_version;'" >&2
exit 1
fi
- echo "zero_publication verified (oid=${pub_oid})."
-
- # Stale-replica safety net: if /zero-init is mounted (i.e. we are the
- # dedicated `migrations` compose service), drop a marker file when the
- # publication oid changed (or on first run) so the wrapped zero-cache
- # entrypoint can wipe /data/zero.db before starting. This recovers from
- # the case where a previous zero-cache crashed mid-init and left a
- # half-built SQLite replica without a `_zero.tableMetadata` table.
- if [ -d /zero-init ]; then
- local stored_oid=""
- [ -f /zero-init/last_pub_oid ] && stored_oid=$(cat /zero-init/last_pub_oid 2>/dev/null || true)
- if [ -z "${stored_oid}" ] || [ "${stored_oid}" != "${pub_oid}" ]; then
- echo "Publication oid changed (stored=${stored_oid:-}, current=${pub_oid}); writing /zero-init/needs_reset."
- : > /zero-init/needs_reset
- chmod 666 /zero-init/needs_reset 2>/dev/null || true
- fi
- echo "${pub_oid}" > /zero-init/last_pub_oid
- chmod 666 /zero-init/last_pub_oid 2>/dev/null || true
- # World-writable dir so the (possibly non-root) zero-cache container
- # can `rm -f /zero-init/needs_reset` after acting on the marker.
- chmod 777 /zero-init 2>/dev/null || true
- fi
}
# ── Service starters ─────────────────────────────────────────
diff --git a/surfsense_web/content/docs/docker-installation/docker-compose.mdx b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
index 560b64464..8f71ec77e 100644
--- a/surfsense_web/content/docs/docker-installation/docker-compose.mdx
+++ b/surfsense_web/content/docs/docker-installation/docker-compose.mdx
@@ -327,11 +327,13 @@ Symptom (in `docker compose logs zero-cache`):
Error: Unknown or invalid publications. Specified: [zero_publication]. Found: []
```
-This means `zero-cache` started before `zero_publication` was created. With
-the current compose files this should be impossible. The `migrations`
-service blocks `zero-cache` from starting. If you see it, your stack
-predates the fix or you brought up `zero-cache` manually with `docker
-compose up zero-cache` before the migrations service ran.
+This means `zero-cache` started before `zero_publication` was created or the
+publication does not match SurfSense's canonical Zero shape. With the current
+compose files this should be impossible: the `migrations` service blocks
+`zero-cache` from starting and verifies the publication before exiting
+successfully. If you see it, your stack predates the fix or you brought up
+`zero-cache` manually with `docker compose up zero-cache` before the migrations
+service ran.
Recovery:
@@ -341,18 +343,13 @@ docker volume rm surfsense-zero-cache # wipe half-built SQLite replica
docker compose up -d # migrations runs first, then zero-cache
```
-The install script (`install.ps1` / `install.sh`) detects this case
-automatically: if it finds a `surfsense-zero-cache` volume from a previous
-install with no matching `surfsense-zero-init` volume, it removes the stale
-volume before bringing the stack up.
-
### Zero-cache crashes with `_zero.tableMetadata` errors
This indicates a half-initialized SQLite replica left behind by a previous
-crash. The `migrations` service writes a marker file on a shared volume
-(`surfsense-zero-init`) when the publication oid changes; zero-cache wipes
-its replica and re-syncs on next start. If the marker mechanism somehow did
-not trigger, run the recovery one-liner above.
+crash. Zero's own event triggers and `ZERO_AUTO_RESET` handle schema and
+replication halts automatically. If the local SQLite replica is wedged, run the
+recovery one-liner above to wipe `surfsense-zero-cache`; zero-cache will
+re-sync from Postgres on the next start.
### Ensuring `wal_level = logical`
From 4c1b8fc315cdff3a0e4ffefab2d16b2932bb75e7 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 11:41:26 +0530
Subject: [PATCH 13/18] feat(docker): enhance Docker build workflow with commit
SHA output and digest verification
- Added output for commit SHA in the Docker build workflow to facilitate tagging.
- Introduced a new verification step to ensure both architectures are present for each required variant before proceeding with the release.
- Updated the finalize_release job to tag the correct commit after successful builds and verifications.
---
.github/workflows/docker-build.yml | 94 +++++++++++++++++++++++-------
1 file changed, 72 insertions(+), 22 deletions(-)
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
index 0847ca76c..08135cb4e 100644
--- a/.github/workflows/docker-build.yml
+++ b/.github/workflows/docker-build.yml
@@ -29,6 +29,7 @@ jobs:
if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch'
outputs:
new_tag: ${{ steps.tag_version.outputs.next_version }}
+ commit_sha: ${{ steps.tag_version.outputs.commit_sha }}
steps:
- name: Checkout code
uses: actions/checkout@v6
@@ -37,6 +38,7 @@ jobs:
ref: ${{ github.event.inputs.branch }}
token: ${{ secrets.GITHUB_TOKEN }}
+ # Compute-only: tag is pushed by finalize_release after everything succeeds.
- name: Read app version and calculate next Docker build version
id: tag_version
run: |
@@ -64,26 +66,7 @@ jobs:
echo "Calculated next Docker version: $NEXT_VERSION"
echo "next_version=$NEXT_VERSION" >> $GITHUB_OUTPUT
-
- - name: Create and Push Tag
- run: |
- git config --global user.name 'github-actions[bot]'
- git config --global user.email 'github-actions[bot]@users.noreply.github.com'
-
- NEXT_TAG="${{ steps.tag_version.outputs.next_version }}"
- COMMIT_SHA=$(git rev-parse HEAD)
- echo "Tagging commit $COMMIT_SHA with $NEXT_TAG"
-
- git tag -a "$NEXT_TAG" -m "Docker build $NEXT_TAG"
- echo "Pushing tag $NEXT_TAG to origin"
- git push origin "$NEXT_TAG"
-
- - name: Verify Tag Push
- run: |
- echo "Checking if tag ${{ steps.tag_version.outputs.next_version }} exists remotely..."
- sleep 5
- git ls-remote --tags origin | grep "refs/tags/${{ steps.tag_version.outputs.next_version }}" || (echo "Tag push verification failed!" && exit 1)
- echo "Tag successfully pushed."
+ echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
build:
needs: tag_release
@@ -204,10 +187,42 @@ jobs:
if-no-files-found: error
retention-days: 1
- create_manifest:
+ # Release gate: require both arches for every variant, else block publishing.
+ # Release-only; skipped on dev so the tolerant create_manifest path is kept.
+ verify_digests:
runs-on: ubuntu-latest
needs: [tag_release, build]
- if: ${{ !cancelled() }}
+ if: ${{ always() && needs.tag_release.result == 'success' && needs.tag_release.outputs.new_tag != '' }}
+ steps:
+ - name: Download all digests
+ uses: actions/download-artifact@v8
+ with:
+ pattern: digests-*
+ path: /tmp/digests
+ merge-multiple: false
+
+ - name: Require both arches for every required variant
+ run: |
+ fail=0
+ check() {
+ c=$(find /tmp/digests -type f -path "*/digests-$1-*/*" 2>/dev/null | wc -l | tr -d ' ')
+ if [ "$c" -lt 2 ]; then
+ echo "::error::$1 has $c/2 arch digests — blocking release"
+ fail=1
+ else
+ echo "OK: $1 ($c/2)"
+ fi
+ }
+ check backend-cpu
+ check backend-cuda
+ check backend-cuda126
+ check web-cpu
+ [ "$fail" -eq 0 ] || exit 1
+
+ create_manifest:
+ runs-on: ubuntu-latest
+ needs: [tag_release, build, verify_digests]
+ if: ${{ !cancelled() && needs.verify_digests.result != 'failure' }}
permissions:
packages: write
contents: read
@@ -316,3 +331,38 @@ jobs:
run: |
echo "Multi-arch manifest created for ${{ matrix.name }}!"
echo "Tags: $(jq -cr '.tags | join(", ")' <<< "$DOCKER_METADATA_OUTPUT_JSON")"
+
+ # Push the git tag only after build, gate, and manifest publish all succeed.
+ finalize_release:
+ runs-on: ubuntu-latest
+ needs: [tag_release, create_manifest]
+ if: ${{ success() && needs.tag_release.outputs.new_tag != '' }}
+ permissions:
+ contents: write
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+ ref: ${{ github.event.inputs.branch }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Create and push git tag
+ run: |
+ git config --global user.name 'github-actions[bot]'
+ git config --global user.email 'github-actions[bot]@users.noreply.github.com'
+
+ NEXT_TAG="${{ needs.tag_release.outputs.new_tag }}"
+ COMMIT_SHA="${{ needs.tag_release.outputs.commit_sha }}"
+ echo "Tagging commit $COMMIT_SHA with $NEXT_TAG"
+
+ git tag -a "$NEXT_TAG" "$COMMIT_SHA" -m "Docker build $NEXT_TAG"
+ echo "Pushing tag $NEXT_TAG to origin"
+ git push origin "$NEXT_TAG"
+
+ - name: Verify tag push
+ run: |
+ echo "Checking if tag ${{ needs.tag_release.outputs.new_tag }} exists remotely..."
+ sleep 5
+ git ls-remote --tags origin | grep "refs/tags/${{ needs.tag_release.outputs.new_tag }}" || (echo "Tag push verification failed!" && exit 1)
+ echo "Tag successfully pushed."
From 6ebee0393185b415d117a153ef4956121ec82090 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 11:50:32 +0530
Subject: [PATCH 14/18] feat(docker): enhance Docker build workflow for version
tagging and release identification
- Added support for version tagging with 'v*' and 'beta-v*' patterns in the Docker build workflow.
- Updated the tag_release job to identify release tags and calculate the next Docker version accordingly.
- Improved error handling for version validation and adjusted conditions for build and release processes.
---
.github/workflows/docker-build.yml | 70 +++++++++++++++++++++---------
1 file changed, 50 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
index 08135cb4e..5f0d38cfd 100644
--- a/.github/workflows/docker-build.yml
+++ b/.github/workflows/docker-build.yml
@@ -5,6 +5,9 @@ on:
branches:
- main
- dev
+ tags:
+ - 'v*'
+ - 'beta-v*'
paths:
- 'surfsense_backend/**'
- 'surfsense_web/**'
@@ -26,10 +29,11 @@ permissions:
jobs:
tag_release:
runs-on: ubuntu-latest
- if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch'
+ if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/beta-v')
outputs:
new_tag: ${{ steps.tag_version.outputs.next_version }}
commit_sha: ${{ steps.tag_version.outputs.commit_sha }}
+ is_release_tag: ${{ steps.tag_version.outputs.is_release_tag }}
steps:
- name: Checkout code
uses: actions/checkout@v6
@@ -42,31 +46,57 @@ jobs:
- name: Read app version and calculate next Docker build version
id: tag_version
run: |
- APP_VERSION=$(tr -d '[:space:]' < VERSION)
- echo "App version from VERSION file: $APP_VERSION"
+ if [[ "$GITHUB_REF" == refs/tags/beta-v* ]]; then
+ VERSION="${GITHUB_REF#refs/tags/beta-v}"
+ NEXT_VERSION="beta-${VERSION}"
+ IS_RELEASE_TAG="true"
- if [ -z "$APP_VERSION" ]; then
- echo "Error: Could not read version from VERSION file"
- exit 1
- fi
+ if ! echo "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
+ echo "::error::Version '$VERSION' is not valid semver (expected X.Y.Z). Fix your tag name."
+ exit 1
+ fi
- git fetch --tags
+ echo "Docker beta release version from git tag: $NEXT_VERSION"
+ elif [[ "$GITHUB_REF" == refs/tags/v* ]]; then
+ NEXT_VERSION="${GITHUB_REF#refs/tags/v}"
+ IS_RELEASE_TAG="true"
- LATEST_BUILD_TAG=$(git tag --list "${APP_VERSION}.*" --sort='-v:refname' | head -n 1)
+ if ! echo "$NEXT_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
+ echo "::error::Version '$NEXT_VERSION' is not valid semver (expected X.Y.Z). Fix your tag name."
+ exit 1
+ fi
- if [ -z "$LATEST_BUILD_TAG" ]; then
- echo "No previous Docker build tag found for version ${APP_VERSION}. Starting with ${APP_VERSION}.1"
- NEXT_VERSION="${APP_VERSION}.1"
+ echo "Docker release version from git tag: $NEXT_VERSION"
else
- echo "Latest Docker build tag found: $LATEST_BUILD_TAG"
- BUILD_NUMBER=$(echo "$LATEST_BUILD_TAG" | rev | cut -d. -f1 | rev)
- NEXT_BUILD=$((BUILD_NUMBER + 1))
- NEXT_VERSION="${APP_VERSION}.${NEXT_BUILD}"
+ APP_VERSION=$(tr -d '[:space:]' < VERSION)
+ echo "App version from VERSION file: $APP_VERSION"
+
+ if [ -z "$APP_VERSION" ]; then
+ echo "Error: Could not read version from VERSION file"
+ exit 1
+ fi
+
+ git fetch --tags
+
+ LATEST_BUILD_TAG=$(git tag --list "${APP_VERSION}.*" --sort='-v:refname' | head -n 1)
+
+ if [ -z "$LATEST_BUILD_TAG" ]; then
+ echo "No previous Docker build tag found for version ${APP_VERSION}. Starting with ${APP_VERSION}.1"
+ NEXT_VERSION="${APP_VERSION}.1"
+ else
+ echo "Latest Docker build tag found: $LATEST_BUILD_TAG"
+ BUILD_NUMBER=$(echo "$LATEST_BUILD_TAG" | rev | cut -d. -f1 | rev)
+ NEXT_BUILD=$((BUILD_NUMBER + 1))
+ NEXT_VERSION="${APP_VERSION}.${NEXT_BUILD}"
+ fi
+
+ IS_RELEASE_TAG="false"
+ echo "Calculated next Docker version: $NEXT_VERSION"
fi
- echo "Calculated next Docker version: $NEXT_VERSION"
echo "next_version=$NEXT_VERSION" >> $GITHUB_OUTPUT
echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
+ echo "is_release_tag=$IS_RELEASE_TAG" >> $GITHUB_OUTPUT
build:
needs: tag_release
@@ -307,11 +337,11 @@ jobs:
images: ${{ steps.image.outputs.name }}
tags: |
type=raw,value=${{ needs.tag_release.outputs.new_tag }},enable=${{ needs.tag_release.outputs.new_tag != '' }}
- type=raw,value=${{ steps.appver.outputs.app_version }},enable=${{ needs.tag_release.outputs.new_tag != '' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch) }}
+ type=raw,value=${{ steps.appver.outputs.app_version }},enable=${{ needs.tag_release.outputs.new_tag != '' && needs.tag_release.outputs.is_release_tag != 'true' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch) }}
type=ref,event=branch
type=sha,prefix=git-
flavor: |
- latest=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch }}
+ latest=${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch || startsWith(github.ref, 'refs/tags/v') }}
${{ matrix.tag_suffix != '' && format('suffix={0},onlatest=true', matrix.tag_suffix) || '' }}
- name: Create manifest list and push
@@ -336,7 +366,7 @@ jobs:
finalize_release:
runs-on: ubuntu-latest
needs: [tag_release, create_manifest]
- if: ${{ success() && needs.tag_release.outputs.new_tag != '' }}
+ if: ${{ success() && needs.tag_release.outputs.new_tag != '' && needs.tag_release.outputs.is_release_tag != 'true' }}
permissions:
contents: write
steps:
From b254ef32e2abedcd8b02d189a852765cd4c7328f Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 12:06:34 +0530
Subject: [PATCH 15/18] feat(docker): integrate HF_TOKEN secret into Docker
build process
- Added support for HF_TOKEN as a secret in the Docker build workflow to enhance security during model embedding retrieval.
- Updated the Dockerfile to utilize the HF_TOKEN secret for fetching embeddings, ensuring sensitive information is handled securely.
---
.github/workflows/docker-build.yml | 2 ++
surfsense_backend/Dockerfile | 5 ++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
index 5f0d38cfd..65fec623f 100644
--- a/.github/workflows/docker-build.yml
+++ b/.github/workflows/docker-build.yml
@@ -193,6 +193,8 @@ jobs:
platforms: ${{ matrix.platform }}
cache-from: type=registry,ref=${{ steps.image.outputs.name }}:buildcache-${{ matrix.variant }}-${{ matrix.suffix }}
cache-to: type=registry,ref=${{ steps.image.outputs.name }}:buildcache-${{ matrix.variant }}-${{ matrix.suffix }},mode=max,image-manifest=true,oci-mediatypes=true
+ secrets: |
+ HF_TOKEN=${{ secrets.HF_TOKEN }}
provenance: false
build-args: |
${{ matrix.image == 'backend' && format('USE_CUDA={0}', matrix.use_cuda) || '' }}
diff --git a/surfsense_backend/Dockerfile b/surfsense_backend/Dockerfile
index 1cf6e9793..d886f48bc 100644
--- a/surfsense_backend/Dockerfile
+++ b/surfsense_backend/Dockerfile
@@ -1,3 +1,4 @@
+# syntax=docker.io/docker/dockerfile:1
# =============================================================================
# SurfSense Backend — Multi-stage Dockerfile
# =============================================================================
@@ -104,7 +105,9 @@ RUN printf '%s\n' \
| python || true
ARG EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
-RUN python -c "from chonkie import AutoEmbeddings; AutoEmbeddings.get_embeddings('${EMBEDDING_MODEL}')"
+RUN --mount=type=secret,id=HF_TOKEN \
+ HF_TOKEN="$(cat /run/secrets/HF_TOKEN 2>/dev/null || true)" \
+ python -c "from chonkie import AutoEmbeddings; AutoEmbeddings.get_embeddings('${EMBEDDING_MODEL}')"
# Install Playwright browsers (the playwright python package itself is in deps)
RUN playwright install chromium --with-deps
From 8e32df4496a97ed8970601f9cc068487931247ca Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 12:14:18 +0530
Subject: [PATCH 16/18] refactor(docker): rename tag_release job to
compute_version in Docker build workflow
---
.github/workflows/docker-build.yml | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml
index 65fec623f..8da56fc33 100644
--- a/.github/workflows/docker-build.yml
+++ b/.github/workflows/docker-build.yml
@@ -27,7 +27,7 @@ permissions:
packages: write
jobs:
- tag_release:
+ compute_version:
runs-on: ubuntu-latest
if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/beta-v')
outputs:
@@ -99,8 +99,8 @@ jobs:
echo "is_release_tag=$IS_RELEASE_TAG" >> $GITHUB_OUTPUT
build:
- needs: tag_release
- if: always() && (needs.tag_release.result == 'success' || needs.tag_release.result == 'skipped')
+ needs: compute_version
+ if: always() && (needs.compute_version.result == 'success' || needs.compute_version.result == 'skipped')
runs-on: ${{ matrix.os }}
permissions:
packages: write
@@ -223,8 +223,8 @@ jobs:
# Release-only; skipped on dev so the tolerant create_manifest path is kept.
verify_digests:
runs-on: ubuntu-latest
- needs: [tag_release, build]
- if: ${{ always() && needs.tag_release.result == 'success' && needs.tag_release.outputs.new_tag != '' }}
+ needs: [compute_version, build]
+ if: ${{ always() && needs.compute_version.result == 'success' && needs.compute_version.outputs.new_tag != '' }}
steps:
- name: Download all digests
uses: actions/download-artifact@v8
@@ -253,7 +253,7 @@ jobs:
create_manifest:
runs-on: ubuntu-latest
- needs: [tag_release, build, verify_digests]
+ needs: [compute_version, build, verify_digests]
if: ${{ !cancelled() && needs.verify_digests.result != 'failure' }}
permissions:
packages: write
@@ -323,7 +323,7 @@ jobs:
if: steps.check.outputs.skip != 'true'
id: appver
run: |
- VERSION_TAG="${{ needs.tag_release.outputs.new_tag }}"
+ VERSION_TAG="${{ needs.compute_version.outputs.new_tag }}"
if [ -n "$VERSION_TAG" ]; then
APP_VERSION=$(echo "$VERSION_TAG" | rev | cut -d. -f2- | rev)
else
@@ -338,8 +338,8 @@ jobs:
with:
images: ${{ steps.image.outputs.name }}
tags: |
- type=raw,value=${{ needs.tag_release.outputs.new_tag }},enable=${{ needs.tag_release.outputs.new_tag != '' }}
- type=raw,value=${{ steps.appver.outputs.app_version }},enable=${{ needs.tag_release.outputs.new_tag != '' && needs.tag_release.outputs.is_release_tag != 'true' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch) }}
+ type=raw,value=${{ needs.compute_version.outputs.new_tag }},enable=${{ needs.compute_version.outputs.new_tag != '' }}
+ type=raw,value=${{ steps.appver.outputs.app_version }},enable=${{ needs.compute_version.outputs.new_tag != '' && needs.compute_version.outputs.is_release_tag != 'true' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || github.event.inputs.branch == github.event.repository.default_branch) }}
type=ref,event=branch
type=sha,prefix=git-
flavor: |
@@ -367,8 +367,8 @@ jobs:
# Push the git tag only after build, gate, and manifest publish all succeed.
finalize_release:
runs-on: ubuntu-latest
- needs: [tag_release, create_manifest]
- if: ${{ success() && needs.tag_release.outputs.new_tag != '' && needs.tag_release.outputs.is_release_tag != 'true' }}
+ needs: [compute_version, create_manifest]
+ if: ${{ success() && needs.compute_version.outputs.new_tag != '' && needs.compute_version.outputs.is_release_tag != 'true' }}
permissions:
contents: write
steps:
@@ -384,8 +384,8 @@ jobs:
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- NEXT_TAG="${{ needs.tag_release.outputs.new_tag }}"
- COMMIT_SHA="${{ needs.tag_release.outputs.commit_sha }}"
+ NEXT_TAG="${{ needs.compute_version.outputs.new_tag }}"
+ COMMIT_SHA="${{ needs.compute_version.outputs.commit_sha }}"
echo "Tagging commit $COMMIT_SHA with $NEXT_TAG"
git tag -a "$NEXT_TAG" "$COMMIT_SHA" -m "Docker build $NEXT_TAG"
@@ -394,7 +394,7 @@ jobs:
- name: Verify tag push
run: |
- echo "Checking if tag ${{ needs.tag_release.outputs.new_tag }} exists remotely..."
+ echo "Checking if tag ${{ needs.compute_version.outputs.new_tag }} exists remotely..."
sleep 5
- git ls-remote --tags origin | grep "refs/tags/${{ needs.tag_release.outputs.new_tag }}" || (echo "Tag push verification failed!" && exit 1)
+ git ls-remote --tags origin | grep "refs/tags/${{ needs.compute_version.outputs.new_tag }}" || (echo "Tag push verification failed!" && exit 1)
echo "Tag successfully pushed."
From 39bc903eab0b02b9c1faaa1f7b7e452969340fe4 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 17:05:14 +0530
Subject: [PATCH 17/18] refactor(api): replace backend URL constant with
dynamic function for improved flexibility
- Updated the backend URL initialization to use a function that retrieves the URL from environment variables, enhancing configurability for different environments.
---
surfsense_web/app/api/zero/query/route.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/surfsense_web/app/api/zero/query/route.ts b/surfsense_web/app/api/zero/query/route.ts
index 0e64c932f..34a977f22 100644
--- a/surfsense_web/app/api/zero/query/route.ts
+++ b/surfsense_web/app/api/zero/query/route.ts
@@ -1,12 +1,16 @@
import { mustGetQuery } from "@rocicorp/zero";
import { handleQueryRequest } from "@rocicorp/zero/server";
import { NextResponse } from "next/server";
-import { BACKEND_URL } from "@/lib/env-config";
import type { Context } from "@/types/zero";
import { queries } from "@/zero/queries";
import { schema } from "@/zero/schema";
-const backendURL = BACKEND_URL;
+function getBackendBaseUrl() {
+ const base = process.env.FASTAPI_BACKEND_INTERNAL_URL || "http://localhost:8000";
+ return base.endsWith("/") ? base.slice(0, -1) : base;
+}
+
+const backendURL = getBackendBaseUrl();
async function authenticateRequest(
request: Request
From 901c72cdcc15133f91752230ceb0d24ede97ad07 Mon Sep 17 00:00:00 2001
From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com>
Date: Sun, 7 Jun 2026 17:53:18 +0530
Subject: [PATCH 18/18] feat(onboarding): implement onboarding completion check
utility
- Added a new utility function `isLlmOnboardingComplete` to determine if the onboarding process is complete based on the agent LLM ID and the presence of global configurations.
- Updated the onboarding logic in the `OnboardPage` and `DashboardClientLayout` components to utilize the new utility function for improved readability and maintainability.
---
.../dashboard/[search_space_id]/client-layout.tsx | 6 +++---
.../app/dashboard/[search_space_id]/onboard/page.tsx | 12 +++++++-----
surfsense_web/lib/onboarding.ts | 8 ++++++++
3 files changed, 18 insertions(+), 8 deletions(-)
create mode 100644 surfsense_web/lib/onboarding.ts
diff --git a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx
index 7c9fcb1a0..3a41b5998 100644
--- a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx
+++ b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx
@@ -21,6 +21,7 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/com
import { useFolderSync } from "@/hooks/use-folder-sync";
import { useGlobalLoadingEffect } from "@/hooks/use-global-loading";
import { useElectronAPI } from "@/hooks/use-platform";
+import { isLlmOnboardingComplete } from "@/lib/onboarding";
export function DashboardClientLayout({
children,
@@ -47,9 +48,8 @@ export function DashboardClientLayout({
const { mutateAsync: updatePreferences } = useAtomValue(updateLLMPreferencesMutationAtom);
const isOnboardingComplete = useCallback(() => {
- // Check that the Agent LLM ID is set, including 0 for Auto mode.
- return preferences.agent_llm_id !== null && preferences.agent_llm_id !== undefined;
- }, [preferences.agent_llm_id]);
+ return isLlmOnboardingComplete(preferences.agent_llm_id, globalConfigs.length > 0);
+ }, [preferences.agent_llm_id, globalConfigs.length]);
const { data: access = null, isLoading: accessLoading } = useAtomValue(myAccessAtom);
const [hasCheckedOnboarding, setHasCheckedOnboarding] = useState(false);
diff --git a/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx
index 6c1393a23..de5c961e8 100644
--- a/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx
+++ b/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx
@@ -18,6 +18,7 @@ import { Button } from "@/components/ui/button";
import { Spinner } from "@/components/ui/spinner";
import { useGlobalLoadingEffect } from "@/hooks/use-global-loading";
import { getBearerToken, redirectToLogin } from "@/lib/auth-utils";
+import { isLlmOnboardingComplete } from "@/lib/onboarding";
export default function OnboardPage() {
const router = useRouter();
@@ -52,15 +53,16 @@ export default function OnboardPage() {
}
}, []);
- // Check if onboarding is already complete (including 0 for Auto mode)
- const isOnboardingComplete =
- preferences.agent_llm_id !== null && preferences.agent_llm_id !== undefined;
+ const isOnboardingComplete = isLlmOnboardingComplete(
+ preferences.agent_llm_id,
+ globalConfigs.length > 0
+ );
useEffect(() => {
- if (!preferencesLoading && isOnboardingComplete) {
+ if (!preferencesLoading && globalConfigsLoaded && isOnboardingComplete) {
router.push(`/dashboard/${searchSpaceId}/new-chat`);
}
- }, [preferencesLoading, isOnboardingComplete, router, searchSpaceId]);
+ }, [preferencesLoading, globalConfigsLoaded, isOnboardingComplete, router, searchSpaceId]);
useEffect(() => {
const autoConfigureWithGlobal = async () => {
diff --git a/surfsense_web/lib/onboarding.ts b/surfsense_web/lib/onboarding.ts
new file mode 100644
index 000000000..b87f822a0
--- /dev/null
+++ b/surfsense_web/lib/onboarding.ts
@@ -0,0 +1,8 @@
+export function isLlmOnboardingComplete(
+ agentLlmId: number | null | undefined,
+ hasGlobalConfigs: boolean
+): boolean {
+ if (agentLlmId === null || agentLlmId === undefined) return false;
+ if (agentLlmId === 0) return hasGlobalConfigs;
+ return true;
+}