ReleaseNVIDIANVIDIApublished Oct 23, 2026seen 19h

NVIDIA/multi-storage-client 1.3.0

NVIDIA/multi-storage-client

Open original ↗

Captured source

source ↗
published Oct 23, 2026seen 19hcaptured 19hhttp 200method plain

1.3.0

Repository: NVIDIA/multi-storage-client

Tag: 1.3.0

Published: 2026-10-23T19:08:55Z

Prerelease: no

Release notes: This release adds resumable Rust multipart downloads and richer local sync progress, with fixes for range reads, caching, paths, and storage transfers.

New Features

  • Batch download_files and upload_files accept an optional transfer_callback; local sync progress shows active-file counts and details by default in interactive terminals.
  • Rust multipart downloads to local files now resume automatically after interruption.
  • Local sync progress bars now show the combined network rate of MSC and its workers on macOS and Linux.
  • StorageClient.download_file accepts optional metadata from info to avoid a repeated provider lookup.

Bug Fixes

  • Ordering comparisons between MSC paths and equivalent standard-library paths are consistent for all comparison operators.
  • Small Rust-backed S3 downloads and GCS transfers now translate storage errors consistently with multipart transfers, including permission failures during GCS metadata lookup.
  • Rust batch downloads resolve symlink targets and use their metadata for multipart decisions.
  • Non-MSC URLs such as s3://bucket/shard#1.tar or gs://bucket/file?.txt, including ones resolved through path_mapping, keep the ? and # parts of the object key instead of dropping them.
  • Reads through replicas honor byte ranges when the local cache is disabled.
  • The fsspec filesystem (msc:// URLs) honors start and end in cat_file, so cat_ranges, read_bytes, and Zarr partial reads, such as those of sharded arrays, return the requested bytes instead of the whole object.
  • Failed Python-backed S3 staged downloads attempt to remove partial files and preserve the existing destination.
  • Object paths with a leading slash now create cache lock files beside their cached data under the configured cache directory.
  • Manifest metadata lookups recognize the profile root when it contains files.
  • Attribute filter expressions evaluate AND before OR, so a = "1" AND b = "2" OR c = "3" also matches objects that only satisfy c = "3".
  • GCS multipart StringIO transfers use UTF-8 consistently, including on systems with non-UTF-8 locales.
  • Range reads now reuse complete cached files without requiring an ETag when source version checking is disabled, avoiding unnecessary chunk downloads and assembly.
  • Immutable configuration dictionaries reject in-place union updates with |=.
  • Pending manifest overwrites return the new metadata when include_pending=True.
  • Cancelling a local msc sync with Ctrl+C now stops worker processes and network sampling, removes temporary files staged by stopped worker processes, and exits promptly with status 130 instead of waiting for in-flight transfer thread pools.
  • Explorer previews pass the supported byte-range type, avoiding an unnecessary full-file fallback for range-capable clients.
  • Path.write_text() now honors its errors argument when encoding text.
  • Opening an object for a full download now reuses its initial metadata lookup, avoiding an extra storage request for direct reads.
  • Cached reads skip unnecessary access-time updates with FIFO, RANDOM, and NO_EVICTION policies, reducing filesystem overhead while preserving LRU and MRU tracking.