Skip to content

Commit

Permalink
Merge pull request #145 from LDeakin/v0.19/update_zarrs_metadata
Browse files Browse the repository at this point in the history
chore(deps): bump `zarrs_metadata` to 0.3.4
  • Loading branch information
LDeakin authored Feb 13, 2025
2 parents 9971787 + d717d2c commit f3f102d
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 9 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: build

on:
push:
branches: ["main", "v[0-9]+.[0-9]+"]
branches: ["main", "v[0-9]+.[0-9]+.x"]
pull_request:
branches: ["main", "v[0-9]+.[0-9]+"]
branches: ["main", "v[0-9]+.[0-9]+.x"]

env:
CARGO_TERM_COLOR: always
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed
- Bump `zarrs_metadata` to 0.3.4 which includes a number of Zarr metadata fixes
- See the [`zarrs_metadata` CHANGELOG.md](https://github.com/LDeakin/zarrs/blob/main/zarrs_metadata/CHANGELOG.md)

## [0.19.1] - 2025-01-19

### Added
Expand Down
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ missing_panics_doc = "warn"
missing_errors_doc = "warn"

[workspace.dependencies.zarrs_metadata]
version = "0.3.0"
path = "zarrs_metadata"
version = "0.3.4"
# path = "zarrs_metadata"

[workspace.dependencies.zarrs_storage]
version = "0.3.0"
Expand Down
15 changes: 15 additions & 0 deletions zarrs/src/array.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ pub use chunk_cache::{
pub use array_sharded_ext::ArrayShardedExt;
#[cfg(feature = "sharding")]
pub use array_sync_sharded_readable_ext::{ArrayShardedReadableExt, ArrayShardedReadableExtCache};
use zarrs_metadata::v3::UnsupportedAdditionalFieldError;
// TODO: Add AsyncArrayShardedReadableExt and AsyncArrayShardedReadableExtCache

use crate::{
Expand Down Expand Up @@ -394,6 +395,20 @@ impl<TStorage: ?Sized> Array<TStorage> {
.map_err(|err| ArrayCreateError::UnsupportedZarrV2Array(err.to_string())),
}?;

// Check for unsupported additional fields that must be understood
if let Some(unsupported_additional_field) = metadata_v3
.additional_fields
.iter()
.find(|additional_field| additional_field.1.must_understand())
{
return Err(ArrayCreateError::UnsupportedAdditionalFieldError(
UnsupportedAdditionalFieldError::new(
unsupported_additional_field.0.clone(),
unsupported_additional_field.1.as_value().clone(),
),
));
}

let data_type = DataType::from_metadata(&metadata_v3.data_type)
.map_err(ArrayCreateError::DataTypeCreateError)?;
let chunk_grid = ChunkGrid::from_metadata(&metadata_v3.chunk_grid)
Expand Down
31 changes: 27 additions & 4 deletions zarrs/src/group.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,23 @@ impl<TStorage: ?Sized> Group<TStorage> {
path: &str,
metadata: GroupMetadata,
) -> Result<Self, GroupCreateError> {
// Check for unsupported additional fields that must be understood
let additional_fields = match &metadata {
GroupMetadata::V2(metadata) => &metadata.additional_fields,
GroupMetadata::V3(metadata) => &metadata.additional_fields,
};
if let Some(unsupported_additional_field) = additional_fields
.iter()
.find(|additional_field| additional_field.1.must_understand())
{
return Err(GroupCreateError::UnsupportedAdditionalFieldError(
UnsupportedAdditionalFieldError::new(
unsupported_additional_field.0.clone(),
unsupported_additional_field.1.as_value().clone(),
),
));
}

let path = NodePath::new(path)?;
Ok(Self {
storage,
Expand Down Expand Up @@ -754,8 +771,8 @@ mod tests {
}

#[test]
fn group_metadata_invalid_additional_field() {
let group_metadata = serde_json::from_str::<GroupMetadata>(
fn group_metadata_unknown_additional_field() {
let group_metadata = serde_json::from_str::<GroupMetadataV3>(
r#"{
"zarr_format": 3,
"node_type": "group",
Expand All @@ -765,8 +782,14 @@ mod tests {
},
"unknown": "fail"
}"#,
);
assert!(group_metadata.is_err());
)
.unwrap();
assert!(group_metadata.additional_fields.len() == 1);
assert!(group_metadata
.additional_fields
.get("unknown")
.unwrap()
.must_understand());
}

#[test]
Expand Down
6 changes: 5 additions & 1 deletion zarrs/src/group/group_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,12 @@ mod tests {
attributes.insert("key".to_string(), "value".into());
builder.attributes(attributes.clone());

let mut additional_field = serde_json::Map::new();
additional_field.insert("must_understand".to_string(), false.into());
// let additional_field =
// zarrs_metadata::v3::AdditionalField::new(serde_json::Map::new(), false);

let mut additional_fields = AdditionalFields::new();
let additional_field = serde_json::Map::new();
additional_fields.insert("key".to_string(), additional_field.into());
builder.additional_fields(additional_fields.clone());

Expand Down

0 comments on commit f3f102d

Please sign in to comment.