From 8979205fbebd991974172ac23b436372911f4666 Mon Sep 17 00:00:00 2001 From: Joe Hamman Date: Mon, 13 May 2024 16:45:41 -0700 Subject: [PATCH 1/5] Group dependabot updates (#1854) --- .github/dependabot.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d8e8d4d57a..5a0befe9b5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,6 +5,10 @@ updates: directory: "/" schedule: interval: "daily" + groups: + requirements: + patterns: + - "*" - package-ecosystem: "github-actions" directory: "/" schedule: From 8264acebc5e1671c36bc434f14cac914f5a099e1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 20:33:05 -0700 Subject: [PATCH 2/5] chore: update pre-commit hooks (#1876) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.3 → v0.4.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.3...v0.4.4) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 747cb86688..be57770200 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ default_language_version: repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.3' + rev: 'v0.4.4' hooks: - id: ruff - repo: https://github.com/psf/black From 908e920bfd52371a4148b19d305262a804bc0201 Mon Sep 17 00:00:00 2001 From: Deepak Cherian Date: Thu, 16 May 2024 16:37:54 -0600 Subject: [PATCH 3/5] Fix a regression with scalar indexing due to #1800 (#1875) --- docs/release.rst | 2 ++ zarr/core.py | 4 +++- zarr/indexing.py | 2 ++ zarr/tests/test_core.py | 49 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/docs/release.rst b/docs/release.rst index e2f9f3de85..a81be4638f 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -31,6 +31,8 @@ Docs Maintenance ~~~~~~~~~~~ +* Fix a regression when getting or setting a single value from arrays with size-1 chunks. + By :user:`Deepak Cherian ` :issue:`1874` Deprecations ~~~~~~~~~~~~ diff --git a/zarr/core.py b/zarr/core.py index 6aa86b6465..b1ccd203db 100644 --- a/zarr/core.py +++ b/zarr/core.py @@ -2030,7 +2030,9 @@ def _process_chunk( and not self._filters and self._dtype != object ): - dest = out[out_selection] + # For 0D arrays out_selection = () and out[out_selection] is a scalar + # Avoid that + dest = out[out_selection] if out_selection else out # Assume that array-like objects that doesn't have a # `writeable` flag is writable. dest_is_writable = getattr(dest, "writeable", True) diff --git a/zarr/indexing.py b/zarr/indexing.py index 2f2402fe27..35c1e813b1 100644 --- a/zarr/indexing.py +++ b/zarr/indexing.py @@ -52,6 +52,8 @@ def is_scalar(value, dtype): return True if isinstance(value, tuple) and dtype.names and len(value) == len(dtype.names): return True + if dtype.kind == "O" and not isinstance(value, np.ndarray): + return True return False diff --git a/zarr/tests/test_core.py b/zarr/tests/test_core.py index 730f724314..01a78ecd68 100644 --- a/zarr/tests/test_core.py +++ b/zarr/tests/test_core.py @@ -3157,3 +3157,52 @@ def test_issue_1279(tmpdir): written_data = ds_reopened[:] assert_array_equal(data, written_data) + + +def test_scalar_indexing(): + store = zarr.KVStore({}) + + store["a"] = zarr.create((3,), chunks=(1,), store=store) + store["a"][:] = [1, 2, 3] + + assert store["a"][1] == np.array(2.0) + assert store["a"][(1,)] == np.array(2.0) + + store["a"][slice(1)] = [-1] + assert store["a"][0] == np.array(-1) + + store["a"][0] = -2 + assert store["a"][0] == np.array(-2) + + store["a"][slice(1)] = (-3,) + assert store["a"][0] == np.array(-3) + + +def test_object_array_indexing(): + # regression test for #1874 + from numcodecs import MsgPack + + root = zarr.group() + arr = root.create_dataset( + name="my_dataset", + shape=0, + dtype=object, + object_codec=MsgPack(), + ) + new_items = [ + ["A", 1], + ["B", 2, "hello"], + ] + arr_add = np.empty(len(new_items), dtype=object) + arr_add[:] = new_items + arr.append(arr_add) + + # heterogeneous elements + elem = ["C", 3] + arr[0] = elem + assert arr[0] == elem + + # homogeneous elements + elem = [1, 3] + arr[1] = elem + assert arr[1] == elem From 4bd9764c1857cb563d155ad797011dfd4a44616e Mon Sep 17 00:00:00 2001 From: Joe Hamman Date: Thu, 16 May 2024 17:57:40 -0700 Subject: [PATCH 4/5] release notes for 2.18.1 (#1885) --- docs/release.rst | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/docs/release.rst b/docs/release.rst index a81be4638f..5ca60b8166 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -18,25 +18,16 @@ Release notes See `GH1777 `_ for more details on the upcoming 3.0 release. -.. _unreleased: +.. _release_2.18.1: -Unreleased ----------- - -Enhancements -~~~~~~~~~~~~ - -Docs -~~~~ +2.18.1 +------ Maintenance ~~~~~~~~~~~ * Fix a regression when getting or setting a single value from arrays with size-1 chunks. By :user:`Deepak Cherian ` :issue:`1874` -Deprecations -~~~~~~~~~~~~ - .. _release_2.18.0: 2.18.0 From bf895332cdb8f028284f958c58cda773085d5e68 Mon Sep 17 00:00:00 2001 From: Joe Hamman Date: Fri, 17 May 2024 05:52:31 -0700 Subject: [PATCH 5/5] reset release notes (#1886) --- docs/release.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/release.rst b/docs/release.rst index 5ca60b8166..59051bbf97 100644 --- a/docs/release.rst +++ b/docs/release.rst @@ -18,6 +18,23 @@ Release notes See `GH1777 `_ for more details on the upcoming 3.0 release. +.. _unreleased: + +Unreleased +---------- + +Enhancements +~~~~~~~~~~~~ + +Docs +~~~~ + +Maintenance +~~~~~~~~~~~ + +Deprecations +~~~~~~~~~~~~ + .. _release_2.18.1: 2.18.1