Skip to content

Commit

Permalink
Add the Zlib codec
Browse files Browse the repository at this point in the history
  • Loading branch information
juntyr committed Aug 8, 2024
1 parent 7dcc47e commit b387190
Show file tree
Hide file tree
Showing 6 changed files with 238 additions and 139 deletions.
10 changes: 8 additions & 2 deletions codecs/bit-round/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,18 @@ impl Codec for BitRoundCodec {
encoded: AnyArrayView,
mut decoded: AnyArrayViewMut,
) -> Result<(), Self::Error> {
fn shape_checked_assign<T: Copy>(encoded: &ArrayViewD<T>, decoded: &mut ArrayViewMutD<T>) -> Result<(), BitRoundCodecError> {
fn shape_checked_assign<T: Copy>(
encoded: &ArrayViewD<T>,
decoded: &mut ArrayViewMutD<T>,
) -> Result<(), BitRoundCodecError> {
#[allow(clippy::unit_arg)]
if encoded.shape() == decoded.shape() {
Ok(decoded.assign(encoded))
} else {
Err(BitRoundCodecError::MismatchedDecodeIntoShape { decoded: encoded.shape().to_vec(), provided: decoded.shape().to_vec() })
Err(BitRoundCodecError::MismatchedDecodeIntoShape {
decoded: encoded.shape().to_vec(),
provided: decoded.shape().to_vec(),
})
}
}

Expand Down
10 changes: 8 additions & 2 deletions codecs/identity/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,18 @@ impl Codec for IdentityCodec {
encoded: AnyArrayView,
mut decoded: AnyArrayViewMut,
) -> Result<(), Self::Error> {
fn shape_checked_assign<T: Copy>(encoded: &ArrayViewD<T>, decoded: &mut ArrayViewMutD<T>) -> Result<(), IdentityCodecError> {
fn shape_checked_assign<T: Copy>(
encoded: &ArrayViewD<T>,
decoded: &mut ArrayViewMutD<T>,
) -> Result<(), IdentityCodecError> {
#[allow(clippy::unit_arg)]
if encoded.shape() == decoded.shape() {
Ok(decoded.assign(encoded))
} else {
Err(IdentityCodecError::MismatchedDecodeIntoShape { decoded: encoded.shape().to_vec(), provided: decoded.shape().to_vec() })
Err(IdentityCodecError::MismatchedDecodeIntoShape {
decoded: encoded.shape().to_vec(),
provided: decoded.shape().to_vec(),
})
}
}

Expand Down
30 changes: 20 additions & 10 deletions codecs/uniform-noise/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,18 @@ impl Codec for UniformNoiseCodec {
encoded: AnyArrayView,
mut decoded: AnyArrayViewMut,
) -> Result<(), Self::Error> {
fn shape_checked_assign<T: Copy>(encoded: &ArrayViewD<T>, decoded: &mut ArrayViewMutD<T>) -> Result<(), UniformNoiseCodecError> {
fn shape_checked_assign<T: Copy>(
encoded: &ArrayViewD<T>,
decoded: &mut ArrayViewMutD<T>,
) -> Result<(), UniformNoiseCodecError> {
#[allow(clippy::unit_arg)]
if encoded.shape() == decoded.shape() {
Ok(decoded.assign(encoded))
} else {
Err(UniformNoiseCodecError::MismatchedDecodeIntoShape { decoded: encoded.shape().to_vec(), provided: decoded.shape().to_vec() })
Err(UniformNoiseCodecError::MismatchedDecodeIntoShape {
decoded: encoded.shape().to_vec(),
provided: decoded.shape().to_vec(),
})
}
}

Expand All @@ -89,14 +95,18 @@ impl Codec for UniformNoiseCodec {
(AnyArrayView::F64(encoded), AnyArrayViewMut::F64(decoded)) => {
shape_checked_assign(encoded, decoded)
}
(AnyArrayView::F32(_), decoded) => Err(UniformNoiseCodecError::MismatchedDecodeIntoDtype {
decoded: AnyArrayDType::F32,
provided: decoded.dtype(),
}),
(AnyArrayView::F64(_), decoded) => Err(UniformNoiseCodecError::MismatchedDecodeIntoDtype {
decoded: AnyArrayDType::F64,
provided: decoded.dtype(),
}),
(AnyArrayView::F32(_), decoded) => {
Err(UniformNoiseCodecError::MismatchedDecodeIntoDtype {
decoded: AnyArrayDType::F32,
provided: decoded.dtype(),
})
}
(AnyArrayView::F64(_), decoded) => {
Err(UniformNoiseCodecError::MismatchedDecodeIntoDtype {
decoded: AnyArrayDType::F64,
provided: decoded.dtype(),
})
}
(encoded, _decoded) => Err(UniformNoiseCodecError::UnsupportedDtype(encoded.dtype())),
}
}
Expand Down
2 changes: 1 addition & 1 deletion codecs/zlib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ keywords = ["zlib", "numcodecs", "compression", "encoding"]
[dependencies]
ndarray = { workspace = true }
numcodecs = { workspace = true }
miniz_oxide = { workspace = true, features = ["with-alloc"] }
miniz_oxide = { workspace = true, features = ["std", "with-alloc"] }
postcard = { workspace = true }
serde = { workspace = true, features = ["std", "derive"] }
serde_repr = { workspace = true }
Expand Down
Loading

0 comments on commit b387190

Please sign in to comment.