Files
lancedb/docs/web-tests/blob-v2
Will JonesandClaude Opus 5.5 2f496529ca chore: bump dependencies with critical security advisories (#4883)
## Summary

Bumps dependencies that Aikido flags with critical advisories, where a
patched version is available without code changes.

| Package | Where | From → To | Ships to users |
|---|---|---|---|
| jackson (BOM) | `java/pom.xml` | 2.18.11 → 2.18.12 | Yes, via the
published pom |
| zerovec / zerovec-derive | `Cargo.lock` | 0.11.6 → 0.11.8 / 0.11.3 →
0.11.7 | Yes, linked into the wheels and Node binaries |
| pillow | `python/uv.lock` | 12.3.0 → 13.0.0 | No, dev lockfile |
| pyarrow | `python/uv.lock` | 24.0.0 → 26.0.1 | No, dev lockfile |
| pyjwt, urllib3, anyio, cryptography | `python/uv.lock` | → 2.15.1,
2.8.0, 4.16.0, 50.0.2 | No, dev lockfile |
| pillow | `docs/web-tests/blob-v2/py/requirements.txt` | 12.1.1 →
13.0.0 | No |

pyarrow was held at 24.0.0 by a `pyarrow<25` pin in the `tests` extra.
It came in with #3675 without a stated reason, so this PR removes it.

pillow 13 and pyarrow 26 require Python 3.11+, so the lockfile keeps
pillow 12.3.0 and pyarrow 25.0.1 on Python 3.10, and those remain
flagged.

The sharp findings in the Node examples and docs are not addressed here.
They come from the `@huggingface/transformers@3.0.2` optional
dependency, which needs a major upgrade to 4.3+.

## Evidence

With the pyarrow pin removed and pyarrow 26.0.1 installed, the Python
suite (`-m "not slow and not s3_test"`) passed locally on Python 3.12:
3319 passed, 164 skipped. That run was on main as of #4879; this branch
is based on a slightly newer main.

## Merge Risk

**Door:** Two-way. Patch and minor version bumps that a revert undoes.
**Blast Radius:** Java consumers (jackson patch release), native
binaries (zerovec patch release), Python test environments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 15:29:11 -08:00
..

Blob v2 documentation tests

docs/web-tests/ts pins @lancedb/lancedb 0.31.0 and docs/web-tests/rs pins lancedb 0.31.0. Those releases do not include blob(). Run the Blob v2 examples here.

Python

lancedb==0.41.0b10 from the LanceDB package index, without pylance. PyPI lancedb 0.40.0 does not provide lancedb.blob().

python3.13 -m venv .venv
.venv/bin/pip install -r docs/web-tests/blob-v2/py/requirements.txt
.venv/bin/python -m pytest docs/web-tests/blob-v2/py/test_multimodal.py

test_blob_pylance.py checks custom thresholds and to_pandas() in lazy and bytes mode. Those calls import pylance. Use a second virtualenv. test_multimodal.py fails if lance can be imported. Snippets from this file are written to docs/web/snippets/blob_pylance.mdx.

This install is for the optional tests only. The public guide does not tell users to bypass the dependency resolver. PyPI pylance 13.0.0 requires lance-namespace<0.12, and lancedb==0.41.0b10 requires lance-namespace>=0.13, so lancedb[pylance] does not resolve. The three tests passed with pylance installed after the base requirements, without its own dependency pin.

python3.13 -m venv .venv-pylance
.venv-pylance/bin/pip install -r docs/web-tests/blob-v2/py/requirements.txt
.venv-pylance/bin/pip install --no-deps pylance==13.0.0
.venv-pylance/bin/python -m pytest docs/web-tests/blob-v2/py/test_blob_pylance.py

TypeScript

@lancedb/lancedb@0.41.0-beta.8. Node.js 22.6 or newer. npm test passes --experimental-strip-types, which Node added in 22.6.0.

cd docs/web-tests/blob-v2/ts
npm ci
npm test

Rust

crates.io lancedb 0.40.0 does not include blob(). This example builds the workspace crate, lancedb 0.41.0-beta.10. Pass --features remote so this checkout compiles. The example uses a local database. The Rust workflow runs this example. It is not a default feature, so a workspace build without remote does not turn that feature on for the rest of the workspace.

cargo run -p lancedb-blob-v2-docs --features remote --example multimodal

CI

Python and TypeScript above install preview packages. Pre-release builds are not guaranteed to stay available for more than 6 months, so those runs are not required PR checks. Run them when the guide's pins change. The Rust example is the in-repo check.

Regenerate snippets from the repository root:

python3 docs/web-tests/mdx_snippets_gen.py \
  -s docs/web-tests/py -s docs/web-tests/ts -s docs/web-tests/rs \
  -s docs/web-tests/blob-v2/py -s docs/web-tests/blob-v2/ts -s docs/web-tests/blob-v2/rs \
  -o docs/web/snippets