zarrs_get_key() reads a single key from any store
the zarrs backend can open, returning raw bytes or NULL
when the key is absent. Cloud stores delegate all I/O to
object_store and expose no key-level read, so consolidated
metadata (.zmetadata) was unreachable from R for an
s3:// or gs:// URL. Reading that one key is
enough to enumerate a store’s arrays and recover their dimension names
and attributes, which is what group-level inquiry over
s3:// needs.AWS_ACCESS_KEY_ID,
AWS_SESSION_TOKEN, AWS_PROFILE, or another
credential variable is set. AWS_SKIP_SIGNATURE forces
either behaviour.zarr_open() on an s3:// or
gs:// string fell through to DirectoryStore,
which tried to create a directory named after the URL. These URLs now
resolve to S3Store and GcsStore, and cloud
stores default to read mode.S3Store and GcsStore inherited no-op
get_item(), contains_item(), and
listdir() methods that silently returned NULL.
They now raise an error naming the supported read paths.HttpStore$listdir() took no arguments, so the
path argument every other store accepts raised an error
that callers swallowed — ZarrGroup’s print method reported
No. members : 0 for every HTTP-backed group. It now accepts
path and lists within it.vignettes/remote-stores.Rmd covering remote and
cloud access: the mapping from fsspec/xarray
storage_options to pizzarr’s environment variables, the
HTTPS and s3:// routes, alternate endpoints such as MinIO,
Ceph, and Open Storage Network pods, and the current limits.AWS_ENDPOINT; AWS_ALLOW_HTTP and
AWS_VIRTUAL_HOSTED_STYLE_REQUEST cover plain-HTTP and
path-style addressing. This worked before but was undocumented.gs:// is
documented, and now tested. It needs
GOOGLE_SKIP_SIGNATURE=true, since GCS does not infer
anonymous access from absent credentials the way S3 does.S3Store, GcsStore, and
HttpStore gained detailed documentation of credentials,
endpoints, and which distribution tier each requires.zarr_open()’s store argument now documents
every accepted form: a path, an http(s):// URL, an
s3:// or gs:// URL, or a Store
object.zarr_open_group()’s storage_options
argument is documented as ignored rather than as an fsspec
passthrough.remote-ome-ngff.Rmd merged into ome-ngff.Rmd,
which covers the OME-NGFF multiscales convention against both a local
and a remote store; remote-anndata.Rmd renamed
anndata.Rmd.blosc package and network access, and
degrade to unevaluated when either is missing.is_zarrs_available(),
pizzarr_compiled_features(),
pizzarr_upgrade().tools/cran-build.sh produces a CRAN tarball with
src/ stripped out.#[extendr]
functions, 13 Rust source files.ZarrArray$get_item() and
$set_item() automatically use the zarrs fast path when
eligible (contiguous slices, supported dtype, filesystem or HTTP store).
Unsupported selections fall through to the R-native path silently.zarr_create() dispatches to
the zarrs backend when available. Supports V2 and V3 formats with four
codec presets (none, gzip, blosc, zstd).aperm) to Rust,
eliminating two full-array copies per read and up to five per write.
Cache-blocked tiling for 2D, output-order iteration for nD.zarrs_http crate.
HttpStore-backed arrays use zarrs for parallel chunk decode
on remote data. R-native crul-based path remains as
fallback.object_store crate. New
S3Store R6 class for s3:// URLs. Public
buckets work without credentials (unsigned requests).object_store crate. New
GcsStore R6 class for gs:// URLs. Public GCS
data accessible via HTTPS endpoint without credentials.zarrs_close_store().pizzarr_config() function for viewing and setting
concurrency options. Three settings: nthreads (rayon thread
pool size), concurrent_target (codec concurrency level),
and http_batch_range_requests (multipart range toggle for
HTTP stores). All three backed by environment variables
(PIZZARR_NTHREADS, PIZZARR_CONCURRENT_TARGET,
PIZZARR_HTTP_BATCH_RANGE_REQUESTS).zarrs_runtime_info() now includes nthreads
(rayon thread pool size).pizzarr.parallel_backend,
pizzarr.parallel_write_enabled, and
pizzarr.progress_bar options are no longer used. On
r-universe builds, zarrs handles parallelism internally via its Rust
thread pool. On CRAN (pure R), chunk I/O is sequential.pbapply, parallel,
future, and future.apply from Suggests.vignettes/parallel.Rmd. Replaced by
vignettes/zarrs-backend.Rmd.vignettes/zarrs-backend.Rmd documenting the zarrs
backend, dispatch behavior, store types, concurrency tuning, and cloud
access.for loop.set_dimension_names() /
get_dimension_names() methods to ZarrArray
(#170).get_dimension_names() method to
ZarrArray for V3 dimension names support.rasterImage() instead
of the raster package (#161).Fixes a flaky test failing on CRAN – no functional changes.
This is the first release of pizzarr to CRAN. The package has significant testing and validation but has not been vetted by a large and diverse user community. As a result, bugs and undesirable behavior may be found. If you find issues please report them at:
https://github.com/zarr-developers/pizzarr/issues