Skip to content

Commit

Permalink
Merge branch 'main' into fix/remove-labels-automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
d-v-b authored Jan 31, 2025
2 parents b28ed9d + cab29d2 commit e5b8b19
Show file tree
Hide file tree
Showing 25 changed files with 76 additions and 36 deletions.
1 change: 0 additions & 1 deletion changes/2533.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2681.bugfix.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.bugfix.1.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.bugfix.2.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.bugfix.3.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.bugfix.4.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.1.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.2.rst

This file was deleted.

3 changes: 0 additions & 3 deletions changes/2693.feature.3.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.4.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.5.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.6.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.7.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.8.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2693.feature.9.rst

This file was deleted.

2 changes: 0 additions & 2 deletions changes/2736.doc.rst

This file was deleted.

5 changes: 0 additions & 5 deletions changes/2761.feature.1.rst

This file was deleted.

2 changes: 0 additions & 2 deletions changes/2762.bugfix.rst

This file was deleted.

3 changes: 0 additions & 3 deletions changes/2763.chore.rst

This file was deleted.

1 change: 0 additions & 1 deletion changes/2768.bugfix.1.rst

This file was deleted.

2 changes: 0 additions & 2 deletions changes/2768.bugfix.2.rst

This file was deleted.

54 changes: 54 additions & 0 deletions docs/release-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,60 @@ Release notes

.. towncrier release notes start
3.0.2 (2025-01-31)
------------------

Features
~~~~~~~~

- Test ``getsize()`` and ``getsize_prefix()`` in ``StoreTests``. (:issue:`2693`)
- Test that a ``ValueError`` is raised for invalid byte range syntax in ``StoreTests``. (:issue:`2693`)
- Separate instantiating and opening a store in ``StoreTests``. (:issue:`2693`)
- Add a test for using Stores as a context managers in ``StoreTests``. (:issue:`2693`)
- Implemented ``LogingStore.open()``. (:issue:`2693`)
- ``LoggingStore`` is now a generic class. (:issue:`2693`)
- Change StoreTest's ``test_store_repr``, ``test_store_supports_writes``,
``test_store_supports_partial_writes``, and ``test_store_supports_listing``
to to be implemented using ``@abstractmethod``, rather raising ``NotImplementedError``. (:issue:`2693`)
- Test the error raised for invalid buffer arguments in ``StoreTests``. (:issue:`2693`)
- Test that data can be written to a store that's not yet open using the store.set method in ``StoreTests``. (:issue:`2693`)
- Adds a new function ``init_array`` for initializing an array in storage, and refactors ``create_array``
to use ``init_array``. ``create_array`` takes two new parameters: ``data``, an optional array-like object, and ``write_data``, a bool which defaults to ``True``.
If ``data`` is given to ``create_array``, then the ``dtype`` and ``shape`` attributes of ``data`` are used to define the
corresponding attributes of the resulting Zarr array. Additionally, if ``data`` given and ``write_data`` is ``True``,
then the values in ``data`` will be written to the newly created array. (:issue:`2761`)


Bugfixes
~~~~~~~~

- Wrap sync fsspec filesystems with ``AsyncFileSystemWrapper``. (:issue:`2533`)
- Added backwards compatibility for Zarr format 2 structured arrays. (:issue:`2681`)
- Update equality for ``LoggingStore`` and ``WrapperStore`` such that 'other' must also be a ``LoggingStore`` or ``WrapperStore`` respectively, rather than only checking the types of the stores they wrap. (:issue:`2693`)
- Ensure that ``ZipStore`` is open before getting or setting any values. (:issue:`2693`)
- Use stdout rather than stderr as the default stream for ``LoggingStore``. (:issue:`2693`)
- Match the errors raised by read only stores in ``StoreTests``. (:issue:`2693`)
- Fixed ``ZipStore`` to make sure the correct attributes are saved when instances are pickled.
This fixes a previous bug that prevent using ``ZipStore`` with a ``ProcessPoolExecutor``. (:issue:`2762`)
- Updated the optional test dependencies to include ``botocore`` and ``fsspec``. (:issue:`2768`)
- Fixed the fsspec tests to skip if ``botocore`` is not installed.
Previously they would have failed with an import error. (:issue:`2768`)
- Optimize full chunk writes. (:issue:`2782`)


Improved Documentation
~~~~~~~~~~~~~~~~~~~~~~

- Changed the machinery for creating changelog entries.
Now individual entries should be added as files to the `changes` directory in the `zarr-python` repository, instead of directly to the changelog file. (:issue:`2736`)

Other
~~~~~

- Created a type alias ``ChunkKeyEncodingLike`` to model the union of ``ChunkKeyEncoding`` instances and the dict form of the
parameters of those instances. ``ChunkKeyEncodingLike`` should be used by high-level functions to provide a convenient
way for creating ``ChunkKeyEncoding`` objects. (:issue:`2763`)


3.0.1 (Jan. 17, 2025)
---------------------
Expand Down
11 changes: 7 additions & 4 deletions src/zarr/core/indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -1373,10 +1373,13 @@ def is_total_slice(item: Selection, shape: ChunkCoords) -> bool:
item = (item,)
if isinstance(item, tuple):
return all(
isinstance(dim_sel, slice)
and (
(dim_sel == slice(None))
or ((dim_sel.stop - dim_sel.start == dim_len) and (dim_sel.step in [1, None]))
(isinstance(dim_sel, int) and dim_len == 1)
or (
isinstance(dim_sel, slice)
and (
(dim_sel == slice(None))
or ((dim_sel.stop - dim_sel.start == dim_len) and (dim_sel.step in [1, None]))
)
)
for dim_sel, dim_len in zip(item, shape, strict=False)
)
Expand Down
9 changes: 9 additions & 0 deletions tests/test_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import re
from itertools import accumulate
from typing import TYPE_CHECKING, Any, Literal
from unittest import mock

import numcodecs
import numpy as np
Expand Down Expand Up @@ -1328,3 +1329,11 @@ async def test_scalar_array() -> None:
assert arr[...] == 1.5
assert arr[()] == 1.5
assert arr.shape == ()


async def test_orthogonal_set_total_slice() -> None:
"""Ensure that a whole chunk overwrite does not read chunks"""
store = MemoryStore()
array = zarr.create_array(store, shape=(20, 20), chunks=(1, 2), dtype=int, fill_value=-1)
with mock.patch("zarr.storage.MemoryStore.get", side_effect=ValueError):
array[0, slice(4, 10)] = np.arange(6)
6 changes: 6 additions & 0 deletions tests/test_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
OrthogonalSelection,
Selection,
_iter_grid,
is_total_slice,
make_slice_selection,
normalize_integer_selection,
oindex,
Expand Down Expand Up @@ -1953,3 +1954,8 @@ def test_vectorized_indexing_incompatible_shape(store) -> None:
)
with pytest.raises(ValueError, match="Attempting to set"):
arr[np.array([1, 2]), np.array([1, 2])] = np.array([[-1, -2], [-3, -4]])


def test_is_total_slice():
assert is_total_slice((0, slice(4, 6)), (1, 2))
assert is_total_slice((slice(0, 1, None), slice(4, 6)), (1, 2))

0 comments on commit e5b8b19

Please sign in to comment.