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; +}