Skip to content

chore(deps): bump the python-deps group across 1 directory with 8 updates - #56

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/python-deps-f2a9f05501
Open

chore(deps): bump the python-deps group across 1 directory with 8 updates#56
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/python-deps-f2a9f05501

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor

Bumps the python-deps group with 8 updates in the / directory:

Package From To
pydantic-settings 2.14.2 2.15.0
typer 0.27.0 0.27.1
faiss-cpu 1.14.3 1.15.0
filelock 3.32.2 3.32.3
sentence-transformers 5.6.1 5.7.0
numpy 2.5.1 2.5.2
packaging 26.2 26.3
ruff 0.16.1 0.16.3

Updates pydantic-settings from 2.14.2 to 2.15.0

Release notes

Sourced from pydantic-settings's releases.

v2.15.0

Highlights

Behavior changes

  • case_sensitive now applies to init kwargs and config-file sources (#900). InitSettingsSource and the JSON/TOML/YAML config sources previously ignored case_sensitive. Since it defaults to False, case-insensitive matching is now the default for these sources — e.g. Settings(TeSt=...) now populates a test field where it previously did not. Nested keys are still matched case-sensitively.
  • Fields with unresolved forward references now emit a warning (#901). Settings sources can silently fail to resolve such fields; they now raise IncompleteFieldDefinitionWarning telling you to call model_rebuild(). If you have filterwarnings = error configured, this may surface as a new failure.
  • Non-JSON env values for strict fields now raise ValidationError (#926) instead of a less specific error.

New features

  • Show environment variable names in CLI help via cli_show_env_vars=True (#860), so generated --help output doubles as configuration documentation.
  • PYDANTIC_SETTINGS_DEBUG for debugging settings resolution (#906, #913). Set it to a truthy value with DEBUG logging enabled to see each source's contribution in priority order, which source won for each value, and which env_file/secret files were probed, loaded, or skipped — the long-standing "why isn't my .env being picked up?" question.
  • toml_table_header for regular TOML files (#882, #886, #887), letting you root settings at a nested table in any TOML file, not just pyproject.toml.
  • Traversable support for JSON/TOML/YAML file sources (#902), so you can load config packaged inside a distribution — including files inside a zip or wheel — via importlib.resources.files(...) without casting to Path.
  • GCP: project_id can come from an earlier settings source (#878), rather than only from the constructor or GOOGLE_CLOUD_PROJECT.

Bug fixes

  • Fix env vars not loading on Windows with case_sensitive=True (#894). Windows upper-cases os.environ keys, so fields raised Field required instead of picking up their values.
  • Read secret files as UTF-8 instead of the platform locale encoding (#917). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.
  • Fix AliasPath on nested model fields not JSON-decoding env values (#898).
  • Fix case-insensitive matching for optional nested models (#905).
  • Fix dotenv extras being wrongly claimed by a complex field sharing a name prefix (#912) — e.g. dbx_token being swallowed by a db: dict field.
  • Fix nested_model_default_partial_update=True corrupting discriminated unions (#876).
  • Fix Secret subclasses crashing when loaded from the environment (#920).
  • Fix enum names not parsing through nested annotations such as Optional[Annotated[MyEnum, ...]] with env_parse_enums=True (#910).
  • An empty yaml_config_section now falls back to defaults instead of raising AttributeError: 'NoneType' object has no attribute 'keys' (#914).
  • NestedSecretsSettingsSource no longer follows symlinks pointing outside secrets_dir (#889).
  • GCP: skip the list_secrets call when case_sensitive=True (#862), lowering the required IAM permissions to just roles/secretmanager.secretAccessor.
  • AWS: types-boto3[secretsmanager] is no longer required at runtime (#880).

Documentation

  • Document JSON parsing of complex env values, plus a comma-separated-values recipe (#919).
  • Recommend an async settings loading pattern (#908).
  • Clarify behavior when an unprefixed value is present in a dotenv file (#895).
  • Clarify environment variable helper descriptions (#867) and fix assorted typos (#904).

What's Changed

... (truncated)

Commits
  • f725ca1 Prepare release 2.15.0 (#930)
  • 28f35c2 Bump the python-packages group with 4 updates (#929)
  • 9056db0 test: move function-local imports to the top of test modules (#927)
  • f077e3a fix: raise ValidationError for non-JSON env values on strict fields (#926)
  • ae25d70 fix: treat Secret subclasses as non-complex fields (#716) (#920)
  • 798dcea Bump the python-packages group with 4 updates (#924)
  • a190041 Bump the github-actions group with 4 updates (#925)
  • 5d93332 Bump the python-packages group with 4 updates (#921)
  • d2fdeda fix: read secret files as UTF-8 instead of the locale encoding (#917)
  • 2256a4e Bump the python-packages group with 3 updates (#915)
  • Additional commits viewable in compare view

Updates typer from 0.27.0 to 0.27.1

Release notes

Sourced from typer's releases.

0.27.1

Features

  • ✨ Make epilog formatting consistent with other parts of the help string. PR #1405 by @​svlandeg.

Docs

Internal

Changelog

Sourced from typer's changelog.

0.27.1 (2026-08-03)

Features

  • ✨ Make epilog formatting consistent with other parts of the help string. PR #1405 by @​svlandeg.

Docs

Internal

Commits
  • fe2aa0e 🔖 Release version 0.27.1 (#1919)
  • 680dc99 📝 Update release notes
  • ac3efd5 ✨ Make epilog formatting consistent with other parts of the help string (#1...
  • 32d80ef 📝 Update release notes
  • 10cb3c9 ⬆️ Upgrade latest-changes to 0.7.1 (#1909)
  • ac329a0 📝 Update release notes
  • c37ae2f 📝 Add Library Skills documentation (#1906)
  • 0974a7e 📝 Update release notes
  • 951178c 🐛 Prevent scroll-to-top on restart/fast buttons in the documentation (#1904)
  • 9051baa 📝 Update release notes
  • Additional commits viewable in compare view

Updates faiss-cpu from 1.14.3 to 1.15.0

Release notes

Sourced from faiss-cpu's releases.

v1.15.0

[1.15.0] - 2026-07-31

Full changelog

Added

  • 4332ceb99492e3ba4ce09aada9bd9e48dc4e2f0b Enable byte-LUT gather path for QT_8bit_eden distance computation (#5498)
  • 41133fde4222a8862650601d85f9af684314ebc8 Add EDEN quantizer indexes (#5278)
  • 3110fd242458bf1458507d9d281847543e3b4d92 Add MetalIndexIVFPQ with product quantization and residual encoding support (#5288)
  • 6c2b68775a21a24870f7fd10788ebc4ec0582650 Adding cuVS IVF-SQ backend (#5306)
  • 4d778bc595917de51a0e76de8351984b8bd8203f Add multi-GPU CAGRA → HNSW build with trainAllNeighbors and multi-GPU optimize (#5282)
  • 42dc2862c293b7c7f788be686cf6c9ac93abf6cf Implement memory-mapped I/O for Flat and static Vamana SVS indices (#5271)
  • d22107beca7a6db4ff146700b19d507e52b595b1 feat(riscv): Add RISC-V RVV rabitq kernels (#5369)
  • df51012a606bc352058e95fe58d45b348ffb201a feat(riscv): Add RISC-V RVV vector distance kernels (#5354)
  • 3b52da37c40973d4816ff7d2a4e3fb9f74379988 Add AVX2 and AVX512 byte-domain kernels for QT_8bit_direct_signed (#5409)
  • 88b6c47cf514d3bee7d1995c09a39234fa89d8f9 Implement IVFRaBitQ FastScan conversion constructor (#5422)
  • d24cc844d2cabce819cda806217b243177293e09 Implement GPU IVF add_preassigned via add_core (implement #3908) (#5372)
  • 5826578a7e8f3f9e45bdb74df0c504c242dfdba0 Read/Write support for IndexHNSW base class (#5305)
  • a3350f6641f85d1e2d08fa191863bde6be470df9 faiss: support METRIC_L1 and extra metrics in IndexFlat range_search (#5391)
  • 432e8b4248c2778b5023d5e2ac15b264ec120d02 Extend DistanceComputer batching to PQ, SQ, and PreTransform (#5309)
  • 7d4bb39f7eb3e9bb4d160aa38ec821ee1a407afc Extract super_kmeans_assign_iteration as a shared public SuperKMeans kernel (#5443)
  • aff8589c9e1c2d6ee6a0de615aa719a9a4fd6e86 c_api: expose ScalarQuantizer codec and complete FaissQuantizerType enum (#5477)
  • 13aa39b7916824bc09ca6af7b5e241c2cba68f6d Clone index support for HadamardRotation (#5475)
  • 3e313e4c496b6a042b71193fe0bd9dd713efc7a2 SIMDConfig::has_dynamic_dispatch() (#5460)
  • a6f97750aeaf760c72d0526c3a346513823c4a0c Add faiss-gpu-cuvs pip wheel packaging (#5250)
  • 6227323ffd0341679299ba9a8e71cac1e15674ee pyfaiss_gpu_cuvs_2602: cuVS faiss Python for aarch64/GH200 (26.02, CUDA 12.4)
  • 522644cb2b7a29737fe669b263eccb946217dc93 Stand up parallel cuVS 26.02 IVF-PQ targets (rmm/raft/cuvs) at CUDA 12.8 (#5414)
  • edebabf90fe79829ede6eaa02f3d9a78d3008a5b Include Python type stubs (init.pyi, py.typed) in conda packages (#5394)
  • 9579d8f0a4dbc91bd7ce195ef0aceb937c89159e Add type stubs for SVS index classes + IndexIVFFlatPanorama.batch_size (#5489)
  • fd7be0cfb0c8cee0d475bb6285ad996a87ebf917 Add QT_0bit and QT_2bit_tq..QT_5bit_tq to ScalarQuantizer pyi stub (#5323)
  • ccecc847db5e1d20e929cf8df4a8ddb654769890 Add ClusteringInitMethod enum constants to init.pyi stub (#5324)
  • 55990eb91f9042d811a76d72e43f9ca126d77beb Port test_rabitq_utils from C++ to Python (#5442)

Changed

  • 0236390f2fd8e63ff5e4c6d4ca981b7ba032cd17 Optimize RaBitQ fastscan query setup + 80% qps (#5396)
  • b1d61c3b883fb82063e024979404dd6ebe134eca Fuse RaBitQ AND-dot and popcount scan (#5412)
  • 81031a97892896ca9167e5203e27420de4617e67 RaBitQ fastscan avx512 lut quant (#5397)
  • b7f2b0f1fd8d62e902bdcdcb9ae9694a6fd8f792 RaBitQ SIMD-optimized bit-plane operation (#5392)
  • 0a27700e05429e60221b0eccbf50c4a79ad2e450 Reuse RaBitQ IVF scanner distance computer (#5390)
  • a3d59f0999c69015eeff54fdde3e0d051798179e faiss DD: use 256-bit fast-scan QBS kernel on AMD Zen 4 (split AVX-512) (#5488)
  • c374dd917b75c8b1fef56e487d26e18d3aae5605 Panorama HNSW Optimizations (~x1.2) (#5190)
  • cb9a72ac03f4e7f7d563e3e54ab4e86b8ce1af12 Reuse the HNSW visited table across searches instead of reallocating per call (#5448)
  • 4d1657471f8590ccadf5c2f37d6b58999b8010ec Raise HNSW visited-table hash-set threshold from 500k to 10M (#5446)
  • a4b4c0f2de14d30719e0750e40922e47517eaa80 Optimize exhaustive_L2sqr_blas_cmax with AVX-512 intrinsics. (#4569)
  • 4a2f7e63280ec095bb16dbf0d8e837b2ab79c27f Optimize the DistanceComputerByte::compute_code_distance with AVX512F, AVX512BW, AVX512VL instructions (#5067)
  • 9a74c6d3d14ccf02157782c8f47205765fad63d9 Speed up Top1 and Reservoir add_results with AVX2/AVX512 (#5297)
  • 4030faae3d5b2c67a5931a637a1e77e2ceee9e1e Speed up polysemous training with AVX-512.
  • ea107641d4ccc350e9c3eebaffcada74b586d801 Parallelize inverted-list append loop in IndexIVFPQ::add_core_o (#5382)
  • cf045707c5342cf670b9e1176d47337b05fa0b6e ProductQuantizer::search_sdc: hoist per-subquantizer row pointers out of database-vector loop (#5338)
  • caf88fca98d6693366642cbb7d9b8df27dcb91ce Improve ranklist intersection size (#5237)

... (truncated)

Changelog

Sourced from faiss-cpu's changelog.

[1.15.0] - 2026-07-31

Added

  • 4332ceb99492e3ba4ce09aada9bd9e48dc4e2f0b Enable byte-LUT gather path for QT_8bit_eden distance computation (#5498)
  • 41133fde4222a8862650601d85f9af684314ebc8 Add EDEN quantizer indexes (#5278)
  • 3110fd242458bf1458507d9d281847543e3b4d92 Add MetalIndexIVFPQ with product quantization and residual encoding support (#5288)
  • 6c2b68775a21a24870f7fd10788ebc4ec0582650 Adding cuVS IVF-SQ backend (#5306)
  • 4d778bc595917de51a0e76de8351984b8bd8203f Add multi-GPU CAGRA → HNSW build with trainAllNeighbors and multi-GPU optimize (#5282)
  • 42dc2862c293b7c7f788be686cf6c9ac93abf6cf Implement memory-mapped I/O for Flat and static Vamana SVS indices (#5271)
  • d22107beca7a6db4ff146700b19d507e52b595b1 feat(riscv): Add RISC-V RVV rabitq kernels (#5369)
  • df51012a606bc352058e95fe58d45b348ffb201a feat(riscv): Add RISC-V RVV vector distance kernels (#5354)
  • 3b52da37c40973d4816ff7d2a4e3fb9f74379988 Add AVX2 and AVX512 byte-domain kernels for QT_8bit_direct_signed (#5409)
  • 88b6c47cf514d3bee7d1995c09a39234fa89d8f9 Implement IVFRaBitQ FastScan conversion constructor (#5422)
  • d24cc844d2cabce819cda806217b243177293e09 Implement GPU IVF add_preassigned via add_core (implement #3908) (#5372)
  • 5826578a7e8f3f9e45bdb74df0c504c242dfdba0 Read/Write support for IndexHNSW base class (#5305)
  • a3350f6641f85d1e2d08fa191863bde6be470df9 faiss: support METRIC_L1 and extra metrics in IndexFlat range_search (#5391)
  • 432e8b4248c2778b5023d5e2ac15b264ec120d02 Extend DistanceComputer batching to PQ, SQ, and PreTransform (#5309)
  • 7d4bb39f7eb3e9bb4d160aa38ec821ee1a407afc Extract super_kmeans_assign_iteration as a shared public SuperKMeans kernel (#5443)
  • aff8589c9e1c2d6ee6a0de615aa719a9a4fd6e86 c_api: expose ScalarQuantizer codec and complete FaissQuantizerType enum (#5477)
  • 13aa39b7916824bc09ca6af7b5e241c2cba68f6d Clone index support for HadamardRotation (#5475)
  • 3e313e4c496b6a042b71193fe0bd9dd713efc7a2 SIMDConfig::has_dynamic_dispatch() (#5460)
  • a6f97750aeaf760c72d0526c3a346513823c4a0c Add faiss-gpu-cuvs pip wheel packaging (#5250)
  • 6227323ffd0341679299ba9a8e71cac1e15674ee pyfaiss_gpu_cuvs_2602: cuVS faiss Python for aarch64/GH200 (26.02, CUDA 12.4)
  • 522644cb2b7a29737fe669b263eccb946217dc93 Stand up parallel cuVS 26.02 IVF-PQ targets (rmm/raft/cuvs) at CUDA 12.8 (#5414)
  • edebabf90fe79829ede6eaa02f3d9a78d3008a5b Include Python type stubs (init.pyi, py.typed) in conda packages (#5394)
  • 9579d8f0a4dbc91bd7ce195ef0aceb937c89159e Add type stubs for SVS index classes + IndexIVFFlatPanorama.batch_size (#5489)
  • fd7be0cfb0c8cee0d475bb6285ad996a87ebf917 Add QT_0bit and QT_2bit_tq..QT_5bit_tq to ScalarQuantizer pyi stub (#5323)
  • ccecc847db5e1d20e929cf8df4a8ddb654769890 Add ClusteringInitMethod enum constants to init.pyi stub (#5324)
  • 55990eb91f9042d811a76d72e43f9ca126d77beb Port test_rabitq_utils from C++ to Python (#5442)

Changed

  • 0236390f2fd8e63ff5e4c6d4ca981b7ba032cd17 Optimize RaBitQ fastscan query setup + 80% qps (#5396)
  • b1d61c3b883fb82063e024979404dd6ebe134eca Fuse RaBitQ AND-dot and popcount scan (#5412)
  • 81031a97892896ca9167e5203e27420de4617e67 RaBitQ fastscan avx512 lut quant (#5397)
  • b7f2b0f1fd8d62e902bdcdcb9ae9694a6fd8f792 RaBitQ SIMD-optimized bit-plane operation (#5392)
  • 0a27700e05429e60221b0eccbf50c4a79ad2e450 Reuse RaBitQ IVF scanner distance computer (#5390)
  • a3d59f0999c69015eeff54fdde3e0d051798179e faiss DD: use 256-bit fast-scan QBS kernel on AMD Zen 4 (split AVX-512) (#5488)
  • c374dd917b75c8b1fef56e487d26e18d3aae5605 Panorama HNSW Optimizations (~x1.2) (#5190)
  • cb9a72ac03f4e7f7d563e3e54ab4e86b8ce1af12 Reuse the HNSW visited table across searches instead of reallocating per call (#5448)
  • 4d1657471f8590ccadf5c2f37d6b58999b8010ec Raise HNSW visited-table hash-set threshold from 500k to 10M (#5446)
  • a4b4c0f2de14d30719e0750e40922e47517eaa80 Optimize exhaustive_L2sqr_blas_cmax with AVX-512 intrinsics. (#4569)
  • 4a2f7e63280ec095bb16dbf0d8e837b2ab79c27f Optimize the DistanceComputerByte::compute_code_distance with AVX512F, AVX512BW, AVX512VL instructions (#5067)
  • 9a74c6d3d14ccf02157782c8f47205765fad63d9 Speed up Top1 and Reservoir add_results with AVX2/AVX512 (#5297)
  • 4030faae3d5b2c67a5931a637a1e77e2ceee9e1e Speed up polysemous training with AVX-512.
  • ea107641d4ccc350e9c3eebaffcada74b586d801 Parallelize inverted-list append loop in IndexIVFPQ::add_core_o (#5382)
  • cf045707c5342cf670b9e1176d47337b05fa0b6e ProductQuantizer::search_sdc: hoist per-subquantizer row pointers out of database-vector loop (#5338)
  • caf88fca98d6693366642cbb7d9b8df27dcb91ce Improve ranklist intersection size (#5237)
  • 5c1afeed9666448708c8a036136a8a8bdf8827e1 Remove dead code in quantize_ex_bits to avoid wasted compute (#5384)
  • e3dd6a85f3125d3338b2a5918e007230927c929f Remove unused fields in various DistanceComputers (#5318)
  • 35c5495b8fa8fcab4b8b476d6a6efde67d3a0e85 Remove confusing double-negative throw-macro conditions (#5471)

... (truncated)

Commits
  • 20f14b3 Increment to next release, v1.15.0 (#5494)
  • 4332ceb Enable byte-LUT gather path for QT_8bit_eden distance computation (#5498)
  • 6187d94 clang-diagnostic-unused-parameter in GpuCloner.cpp (#5480)
  • 37313e7 Fix two memory leaks in shard_ivf_index_centroids (#5495)
  • 7a4e797 Fix RaBitQ fast scan aux offsets for large bbs (#5421)
  • b1d61c3 Fuse RaBitQ AND-dot and popcount scan (#5412)
  • 9579d8f Add type stubs for SVS index classes + IndexIVFFlatPanorama.batch_size (#5489)
  • a3d59f0 faiss DD: use 256-bit fast-scan QBS kernel on AMD Zen 4 (split AVX-512) (#5488)
  • 4d74915 Bound lattice_nbit loop in IndexLattice ctor to fix deserialization timeout (...
  • a032797 faiss DD: SQ AVX-512 falls back to AVX2 when d%16!=0 (#5478)
  • Additional commits viewable in compare view

Updates filelock from 3.32.2 to 3.32.3

Release notes

Sourced from filelock's releases.

3.32.3

What's Changed

Full Changelog: tox-dev/filelock@3.32.2...3.32.3

Changelog

Sourced from filelock's changelog.

########### Changelog ###########

.. towncrier-draft-entries:: Unreleased

.. towncrier release notes start


3.32.3 (2026-08-13)


  • The fork-safety audit hook no longer prints Exception ignored in audit hook with a TypeError when an audit event fires during interpreter shutdown, after CPython has already cleared the module globals. :pr:701

3.32.2 (2026-07-29)


  • A SoftReadWriteLock or SoftFileLease acquire whose heartbeat thread fails to start now unlinks its marker and hands the claim back, instead of leaving an unrefreshed marker a peer takes while the caller believes it still holds the lock. :pr:691

3.32.1 (2026-07-26)


  • Canceling an AsyncSoftReadWriteLock acquire now releases the claim instead of leaking a marker whose heartbeat wedges every contender. :pr:686

3.32.0 (2026-07-21)


  • SoftReadWriteLock closes the directory handle it opens to scan for readers as soon as a scan stops early, rather than holding it until the generator is collected. :pr:685
  • Declare support for Python 3.15 and run the test suite against it and its free-threaded build, both currently in beta. :pr:683
  • The source distribution ships the capability probes the tests import, and reading one no longer needs coverage installed, so the suite runs from an unpacked sdist instead of failing on a missing coverage_pragmas. :pr:685

3.31.2 (2026-07-21)


  • filelock imports again on runtimes whose errno omits ENOTSUP, such as GraalPy, where importing the package raised ImportError. It probes the code instead, preferring ENOTSUP, falling back to EOPNOTSUPP where that name is absent, and dropping to ENOSYS/EXDEV where neither exists. Platforms defining ENOTSUP keep their behavior. :pr:681

... (truncated)

Commits
  • 4aa742c Release 3.32.3
  • fb5ab3e 🐛 fix(fork): survive audit events during interpreter shutdown (#703)
  • 35f759c 📄 docs: publish llms.txt from the docs build (#700)
  • 4b6e966 [pre-commit.ci] pre-commit autoupdate (#699)
  • 0e0f666 build(deps): bump pypa/gh-action-pypi-publish from 1.14.1 to 1.14.2 (#698)
  • 6689d82 🧪 test(strict): deflake close-fault injections on graalpy (#697)
  • df67bf7 [pre-commit.ci] pre-commit autoupdate (#696)
  • See full diff in compare view

Updates sentence-transformers from 5.6.1 to 5.7.0

Release notes

Sourced from sentence-transformers's releases.

v5.7.0 - GradCache Overhaul, torch.compile Inference, and a Large Batch of Correctness Fixes

This minor version is a correctness and performance-focused release. It rebuilds all gradient-cached losses on one shared engine, fixing several silently wrong gradients and adding token-based mini-batching for up to 3.9x faster cached-loss training. It also makes model.compile() actually speed up inference, and brings a long list of fixes across embedding quantization, evaluators, hard-negative mining, community detection, and multimodal inputs.

Two changes are marked breaking (🚨): int8/uint8 embedding quantization now clips out-of-range values and floors bucket values, so int8 outputs are no longer bit-identical with earlier versions, and AdaptiveLayerLoss/Matryoshka2dLoss now weight prior-layer losses uniformly by default. There's also a forward-looking deprecation: loading models whose modules import classes from outside sentence_transformers will require trust_remote_code=True from v6.0.

Install this version with

# Training + Inference
pip install sentence-transformers[train]==5.7.0
Inference only, use one of:
pip install sentence-transformers==5.7.0
pip install sentence-transformers[onnx-gpu]==5.7.0
pip install sentence-transformers[onnx]==5.7.0
pip install sentence-transformers[openvino]==5.7.0
Multimodal dependencies (optional):
pip install sentence-transformers[image]==5.7.0
pip install sentence-transformers[audio]==5.7.0
pip install sentence-transformers[video]==5.7.0
Or combine as needed:
pip install sentence-transformers[train,onnx,image]==5.7.0

GradCache overhaul: correct gradients and token-based mini-batching (#3862)

The gradient-cached losses (CachedMultipleNegativesRankingLoss, CachedGISTEmbedLoss, CachedSpladeLoss, the Cross Encoder CachedMultipleNegativesRankingLoss, and MegaBatchMarginLoss) train with large batch sizes at constant memory by embedding in mini-batches and replaying them with cached gradients. Each loss carried its own diverged copy of that machinery. They are now all rebuilt on one shared engine, which fixed several bugs that silently corrupted gradients:

  • Cross Encoder CachedMultipleNegativesRankingLoss on GPU: the backward pass used different dropout masks than the forward pass, silently biasing gradients for every reranker trained with dropout active on CUDA or MPS. CPU training was unaffected.
  • Running two forward passes before a backward pass (e.g. in custom training loops) made CachedGISTEmbedLoss and the Cross Encoder loss backpropagate the wrong batch's gradients, because the cache was stored on the loss module. The cache now travels with each forward pass's backward hook (the .cache and .random_states loss attributes are gone as a result).
  • Pooling(include_prompt=False) (e.g. Instructor models) mutated the attention mask in place, so the backward re-embedding of every cached loss ran with a different mask than the forward pass.
  • MatryoshkaLoss(GISTEmbedLoss(...)): the guide model overwrote the cached embeddings, so only the largest Matryoshka dimension was actually trained.

Along the way, this also fixed an autocast dtype crash in the backward pass and the trainer retaining autograd graphs between logging steps when tracking loss components.

MegaBatchMarginLoss's default mini-batched version is rebuilt on the engine as well. It crashed outright on recent releases, and underneath that, its historical implementation only applied the last mini-batch's gradients. It now trains on the full batch (results will differ, for the better), works with MatryoshkaLoss, evaluates under torch.no_grad, and raises for a third input column instead of silently ignoring it.

The headline feature is mini_batch_num_tokens, available on CachedMultipleNegativesRankingLoss, CachedMultipleNegativesSymmetricRankingLoss, CachedGISTEmbedLoss, CachedSpladeLoss, and MegaBatchMarginLoss. Instead of a fixed number of sequences per mini-batch, mini-batches are greedily packed by total non-padding token count, giving near-constant work per mini-batch on variable-length data:

from sentence_transformers import SentenceTransformer
from sentence_transformers.sentence_transformer.losses import CachedMultipleNegativesRankingLoss
model = SentenceTransformer("microsoft/mpnet-base")
loss = CachedMultipleNegativesRankingLoss(model, mini_batch_num_tokens=16384)

On the PR's Natural Questions benchmark, cached-loss training with flash attention and a tuned token budget dropped from 715 to 182 seconds (3.9x) versus the previous release, with unchanged quality. The engine also trims trailing padding from each mini-batch, which alone is worth about 26% throughput on the default padded path. The updated training efficiency documentation recommends the smallest token budget that saturates your GPU. mini_batch_size keeps working everywhere as before.

... (truncated)

Commits
  • b2a9529 [fix] Name the lone suggested parameter in the mine_hard_negatives missing-ne...
  • 00e696c Release v5.7.0
  • b69081a [fix] Treat a 1-dimensional query embedding as a single query in semantic_sea...
  • c9c4250 Keep queries aligned in semantic_search_seismic when a query matches nothing ...
  • 6d331a5 [fix] Support mixed sparse/dense inputs in euclidean and manhattan similari...
  • 68c8cda [fix] Reject num_negatives larger than the range_min/range_max window in mine...
  • cfb6d43 [trainer] Fix eval DataLoader worker leak with dataloader_persistent_worker...
  • f6d3a40 Expand the community window on ties with the threshold (#3900)
  • 0b3fcbd Correct the corpus_precision values documented for semantic_search_faiss ...
  • 62724e7 Drop FAISS padding placeholders from semantic_search_faiss results (#3887)
  • Additional commits viewable in compare view

Updates numpy from 2.5.1 to 2.5.2

Release notes

Sourced from numpy's releases.

v2.5.2 (Aug 9, 2026)

NumPy 2.5.2 Release Notes

The NumPy 2.5.2 is a patch release that fixes bugs discovered after the 2.5.1 release. The big news is that it includes wheels for the newly released Python 3.15.0rc1.

This release supports Python versions 3.12-3.15

C API changes

PyArray_StringDTypeObject is opaque under the abi3t stable ABI

The PyArray_StringDTypeObject was accidentally exposed in NumPy 2.5 when targeting the free-threading-compatible stable ABI (Py_TARGET_ABI3T). PyArray_StringDTypeObject is now an opaque struct: extensions compiled that way cannot access its fields, since the struct layout depends on the size of the object header. Any code that accessed PyArray_StringDTypeObject fields in an abi3t build would have crashed, so we are making this API change in a bugfix release.

The NpyString allocator API remains usable by passing the descriptor object pointer, e.g. NpyString_acquire_allocator((PyArray_StringDTypeObject *)descr).

(gh-31771)

Contributors

A total of 16 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

  • Abhijeetsingh Meena +
  • Charalampos Stratakis
  • Charles Harris
  • Chris Ninham +
  • David Woods
  • Geonho +
  • Gopu Yeshwanth Reddy +
  • Iason Krommydas
  • Ijtihed Kilani
  • Jelle Zijlstra +
  • Joren Hammudoglu
  • Kumar Aditya
  • Mike Boyle
  • Nathan Goldbaum
  • Raghuveer Devulapalli
  • Sebastian Berg

... (truncated)

Commits
  • 48fecee REL: Prepare for the NumPy 2.5.2 release (#32226)
  • ecf599c Merge pull request #32221 from charris/backport-32151
  • 3c7ac97 Merge pull request #32220 from charris/backport-32205
  • 23b30f4 BUG: avoid segfaults when legacy copyswap slot is not defined (#32151)
  • 4964ca8 TYP: isclose shape-typing fix for 2d array-likes (#32205)
  • c37ed94 MAINT: Skip limited_api tests on some platforms. (#32214)
  • 5cfd73b Merge pull request #32206 from charris/update-cibuildwheel
  • d8262bc MAINT: Update cibuildwheel to v4.2.0
  • 988d94d Merge pull request #32158 from charris/backport-32133
  • b2e4f97 BUG: avoid possible stack overflow in arraydescr_dealloc (#32133)
  • Additional commits viewable in compare view

Updates packaging from 26.2 to 26.3

Release notes

Sourced from packaging's releases.

26.3

What's Changed

Features

  • Add a public VersionRange API and SpecifierSet.to_range(), representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. VersionRange.to_specifier_set() converts a range back to a SpecifierSet where a PEP 440 form exists. (#1267, #1270, #1298)
  • PEP 808: accept Metadata-Version: 2.6. (#1194)
  • Add a limit argument to parse_tag() for compressed tag sets. (#1220)
  • Add a prefer_sdist_predicate argument to Pylock.select() to prefer source distributions over wheels for selected packages. (#1334)
  • Add pure_python_tags() to generate the pure-Python tags for a Python version without touching the running platform. (#1346)
  • Add SpecifierSet.is_subset(), SpecifierSet.is_superset(), and SpecifierSet.is_disjoint(), which compare the versions two specifier sets accept. (#1313)

Behavior adaptations

  • Drop support for Python 3.8; packaging now requires Python 3.9 or later. (#1157)
  • Prefer native linux_* platform tags over manylinux and musllinux tags on Linux. (#160)

Fixes for versions and specifiers

  • Raise InvalidVersion instead of TypeError when Version is given a non-string. (#1319)
  • Raise InvalidVersion for non-string pre-release letters passed to Version.from_parts. (#1241)
  • Fix an AttributeError when hashing internally trimmed versions. (#1242)
  • Fix SpecifierSet.is_unsatisfiable for post-release boundary intersections. (#1257)

Fixes for requirements and markers

  • Make Requirement.__hash__ consistent with __eq__ for trailing-zero-equivalent specifiers (e.g. foo==1.0.0 and foo==1.0.0.0), so equal requirements hash equal and deduplicate in sets and dicts. (#1232)
  • Normalize requested extra names before comparing or hashing requirements. (#644)
  • Preserve a Requirement's specifier prereleases override across a pickle round trip. (#1204)
  • Raise InvalidRequirement instead of InvalidSpecifier when a requirement contains an invalid specifier. (#1332)
  • Clarify the error for post-release prefix wildcards like ==1.0.post1.*. (#1299)
  • Preserve quoting semantics when serializing marker values, so round-tripped markers parse back to the same marker. (#1213)
  • Keep the parentheses of a nested group when serializing markers. (#1316)
  • Normalize extra and dependency_groups values in nested markers at parse time. (#1246, #1310)
  • Raise UndefinedComparison when a set-valued variable like extras is used outside the membership form. (#1265)
  • Raise UndefinedEnvironmentName (a KeyError subclass) for missing environment keys during marker evaluation. (#1276)
  • Wrap malformed string literal errors in InvalidMarker / InvalidRequirement instead of leaking a low-level error. (#1249)
  • Reject requirements and markers with a trailing line break. (#1345)

Fixes for metadata and licenses

  • Collect all from_email validation errors into one ExceptionGroup instead of raising the first. (#1268)
  • Accept the UTF-8 charset case-insensitively in email payloads. (#1330)
  • Reject malformed Description-Content-Type values. (#1329)
  • Don't rewrite user values that contain {field} placeholders in error messages. (#1327)
  • Route multipart email payloads to unparsed instead of asserting. (#1247)
  • Make InvalidMetadata and CyclicDependencyGroup picklable. (#1328)
  • Fold every line boundary str.splitlines recognizes when writing a header with RFC822Message. (#1356)

... (truncated)

Changelog

Sourced from packaging's changelog.

26.3 - 2026-08-03


Features:
  • Add a public :class:~packaging.ranges.VersionRange API and
    :meth:SpecifierSet.to_range() <packaging.specifiers.SpecifierSet.to_range>,
    representing the versions a specifier set accepts as an interval set that
    supports intersection, union, difference, complement, set relations,
    membership tests, and filtering.
    :meth:~packaging.ranges.VersionRange.to_specifier_set converts a range back
    to a :class:~packaging.specifiers.SpecifierSet where a PEP 440 form exists.
    (:pull:1267, :pull:1270, :pull:1298)
  • PEP 808: accept Metadata-Version: 2.6. (:pull:1194)
  • Add a limit argument to parse_tag() for compressed tag sets.
    (:issue:1220)
  • Add a prefer_sdist_predicate argument to Pylock.select() to prefer
    source distributions over wheels for selected packages. (:pull:1334)
  • Add :func:~packaging.tags.pure_python_tags to generate the pure-Python
    tags for a Python version without touching the running platform.
    (:pull:1346)
  • Add :meth:SpecifierSet.is_subset() <packaging.specifiers.SpecifierSet.is_subset>, :meth:~packaging.specifiers.SpecifierSet.is_superset,
    and :meth:~packaging.specifiers.SpecifierSet.is_disjoint, whi...

    Description has been truncated

…ates

Bumps the python-deps group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |
| [typer](https://github.com/fastapi/typer) | `0.27.0` | `0.27.1` |
| [faiss-cpu](https://github.com/facebookresearch/faiss) | `1.14.3` | `1.15.0` |
| [filelock](https://github.com/tox-dev/py-filelock) | `3.32.2` | `3.32.3` |
| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.6.1` | `5.7.0` |
| [numpy](https://github.com/numpy/numpy) | `2.5.1` | `2.5.2` |
| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.3` |



Updates `pydantic-settings` from 2.14.2 to 2.15.0
- [Release notes](https://github.com/pydantic/pydantic-settings/releases)
- [Commits](pydantic/pydantic-settings@v2.14.2...v2.15.0)

Updates `typer` from 0.27.0 to 0.27.1
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](fastapi/typer@0.27.0...0.27.1)

Updates `faiss-cpu` from 1.14.3 to 1.15.0
- [Release notes](https://github.com/facebookresearch/faiss/releases)
- [Changelog](https://github.com/facebookresearch/faiss/blob/main/CHANGELOG.md)
- [Commits](facebookresearch/faiss@v1.14.3...v1.15.0)

Updates `filelock` from 3.32.2 to 3.32.3
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](tox-dev/filelock@3.32.2...3.32.3)

Updates `sentence-transformers` from 5.6.1 to 5.7.0
- [Release notes](https://github.com/huggingface/sentence-transformers/releases)
- [Commits](huggingface/sentence-transformers@v5.6.1...v5.7.0)

Updates `numpy` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](numpy/numpy@v2.5.1...v2.5.2)

Updates `packaging` from 26.2 to 26.3
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](pypa/packaging@26.2...26.3)

Updates `ruff` from 0.16.1 to 0.16.3
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.16.1...0.16.3)

---
updated-dependencies:
- dependency-name: pydantic-settings
  dependency-version: 2.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-deps
- dependency-name: typer
  dependency-version: 0.27.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-deps
- dependency-name: faiss-cpu
  dependency-version: 1.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-deps
- dependency-name: filelock
  dependency-version: 3.32.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-deps
- dependency-name: sentence-transformers
  dependency-version: 5.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-deps
- dependency-name: numpy
  dependency-version: 2.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-deps
- dependency-name: packaging
  dependency-version: '26.3'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-deps
- dependency-name: ruff
  dependency-version: 0.16.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants