Skip to content

Commit

Permalink
Add Array::dimensionality()
Browse files Browse the repository at this point in the history
  • Loading branch information
LDeakin committed Feb 18, 2024
1 parent 641acbb commit 285bea7
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `ArraySubset::new_empty()` and `ArraySubset::is_empty()`
- Add missing `IncompatibleArraySubsetAndShapeError::new()`
- Add more array tests
- Add `Array::dimensionality()`

### Changed
- Dependency bumps
Expand Down
10 changes: 7 additions & 3 deletions src/array.rs
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,12 @@ impl<TStorage: ?Sized> Array<TStorage> {
&self.shape
}

/// Get the array dimensionality.
#[must_use]
pub fn dimensionality(&self) -> usize {
self.shape.len()
}

/// Get the codecs.
#[must_use]
pub const fn codecs(&self) -> &CodecChain {
Expand Down Expand Up @@ -543,9 +549,7 @@ impl<TStorage: ?Sized> Array<TStorage> {
},
)
}
None => Ok(Some(ArraySubset::new_empty(
self.chunk_grid().dimensionality(),
))),
None => Ok(Some(ArraySubset::new_empty(self.dimensionality()))),
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/array/array_async_readable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ impl<TStorage: ?Sized + AsyncReadableStorageTraits + 'static> Array<TStorage> {
chunks: &ArraySubset,
options: &DecodeOptions,
) -> Result<Vec<u8>, ArrayError> {
if chunks.dimensionality() != self.chunk_grid().dimensionality() {
if chunks.dimensionality() != self.dimensionality() {

Check warning on line 296 in src/array/array_async_readable.rs

View check run for this annotation

Codecov / codecov/patch

src/array/array_async_readable.rs#L296

Added line #L296 was not covered by tests
return Err(ArrayError::InvalidArraySubset(
chunks.clone(),
self.shape().to_vec(),
Expand Down Expand Up @@ -476,7 +476,7 @@ impl<TStorage: ?Sized + AsyncReadableStorageTraits + 'static> Array<TStorage> {
array_subset: &ArraySubset,
options: &DecodeOptions,
) -> Result<Vec<u8>, ArrayError> {
if array_subset.dimensionality() != self.chunk_grid().dimensionality() {
if array_subset.dimensionality() != self.dimensionality() {

Check warning on line 479 in src/array/array_async_readable.rs

View check run for this annotation

Codecov / codecov/patch

src/array/array_async_readable.rs#L479

Added line #L479 was not covered by tests
return Err(ArrayError::InvalidArraySubset(
array_subset.clone(),
self.shape().to_vec(),
Expand Down
10 changes: 5 additions & 5 deletions src/array/array_sync_readable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ impl<TStorage: ?Sized + ReadableStorageTraits + 'static> Array<TStorage> {
chunk_indices: &[u64],
options: &DecodeOptions,
) -> Result<Option<Vec<u8>>, ArrayError> {
if chunk_indices.len() != self.chunk_grid().dimensionality() {
if chunk_indices.len() != self.dimensionality() {
return Err(ArrayError::InvalidChunkGridIndicesError(
chunk_indices.to_vec(),
));
Expand Down Expand Up @@ -427,7 +427,7 @@ impl<TStorage: ?Sized + ReadableStorageTraits + 'static> Array<TStorage> {
chunks: &ArraySubset,
options: &DecodeOptions,
) -> Result<Vec<u8>, ArrayError> {
if chunks.dimensionality() != self.chunk_grid().dimensionality() {
if chunks.dimensionality() != self.dimensionality() {
return Err(ArrayError::InvalidArraySubset(
chunks.clone(),
self.shape().to_vec(),
Expand Down Expand Up @@ -579,7 +579,7 @@ impl<TStorage: ?Sized + ReadableStorageTraits + 'static> Array<TStorage> {
array_subset: &ArraySubset,
options: &DecodeOptions,
) -> Result<Vec<u8>, ArrayError> {
if array_subset.dimensionality() != self.chunk_grid().dimensionality() {
if array_subset.dimensionality() != self.dimensionality() {
return Err(ArrayError::InvalidArraySubset(
array_subset.clone(),
self.shape().to_vec(),
Expand Down Expand Up @@ -627,7 +627,7 @@ impl<TStorage: ?Sized + ReadableStorageTraits + 'static> Array<TStorage> {

// Calc self/internal concurrent limits
let chunk_representation =
self.chunk_array_representation(&vec![0; self.chunk_grid().dimensionality()])?;
self.chunk_array_representation(&vec![0; self.dimensionality()])?;
let (self_concurrent_limit, codec_concurrent_limit) = calc_concurrent_limits(
options.concurrent_limit(),
&RecommendedConcurrency::new_minimum(
Expand Down Expand Up @@ -750,7 +750,7 @@ impl<TStorage: ?Sized + ReadableStorageTraits + 'static> Array<TStorage> {
_ => {
// Calc self/internal concurrent limits
let chunk_representation =
self.chunk_array_representation(&vec![0; self.chunk_grid().dimensionality()])?;
self.chunk_array_representation(&vec![0; self.dimensionality()])?;
let (self_concurrent_limit, codec_concurrent_limit) = calc_concurrent_limits(
options.concurrent_limit(),
&RecommendedConcurrency::new_minimum(
Expand Down

0 comments on commit 285bea7

Please sign in to comment.