Skip to content

Commit b25dee6

Browse files
committed
fix(group): deprecate positional args in Group.{zeros,ones,etc.}
1 parent 5f3a512 commit b25dee6

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/zarr/core/group.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from typing_extensions import deprecated
1515

1616
import zarr.api.asynchronous as async_api
17+
from zarr._compat import _deprecate_positional_args
1718
from zarr.abc.metadata import Metadata
1819
from zarr.abc.store import Store, set_or_delete
1920
from zarr.core.array import Array, AsyncArray, _build_parents
@@ -1533,6 +1534,7 @@ def create(self, *args: Any, **kwargs: Any) -> Array:
15331534
# Backwards compatibility for 2.x
15341535
return self.create_array(*args, **kwargs)
15351536

1537+
@_deprecate_positional_args
15361538
def create_array(
15371539
self,
15381540
name: str,
@@ -1704,15 +1706,19 @@ def require_array(self, name: str, **kwargs: Any) -> Array:
17041706
"""
17051707
return Array(self._sync(self._async_group.require_array(name, **kwargs)))
17061708

1709+
@_deprecate_positional_args
17071710
def empty(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
17081711
return Array(self._sync(self._async_group.empty(name=name, shape=shape, **kwargs)))
17091712

1713+
@_deprecate_positional_args
17101714
def zeros(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
17111715
return Array(self._sync(self._async_group.zeros(name=name, shape=shape, **kwargs)))
17121716

1717+
@_deprecate_positional_args
17131718
def ones(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
17141719
return Array(self._sync(self._async_group.ones(name=name, shape=shape, **kwargs)))
17151720

1721+
@_deprecate_positional_args
17161722
def full(
17171723
self, *, name: str, shape: ChunkCoords, fill_value: Any | None, **kwargs: Any
17181724
) -> Array:
@@ -1722,22 +1728,28 @@ def full(
17221728
)
17231729
)
17241730

1731+
@_deprecate_positional_args
17251732
def empty_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17261733
return Array(self._sync(self._async_group.empty_like(name=name, data=data, **kwargs)))
17271734

1735+
@_deprecate_positional_args
17281736
def zeros_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17291737
return Array(self._sync(self._async_group.zeros_like(name=name, data=data, **kwargs)))
17301738

1739+
@_deprecate_positional_args
17311740
def ones_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17321741
return Array(self._sync(self._async_group.ones_like(name=name, data=data, **kwargs)))
17331742

1743+
@_deprecate_positional_args
17341744
def full_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17351745
return Array(self._sync(self._async_group.full_like(name=name, data=data, **kwargs)))
17361746

1747+
@_deprecate_positional_args
17371748
def move(self, source: str, dest: str) -> None:
17381749
return self._sync(self._async_group.move(source, dest))
17391750

17401751
@deprecated("Use Group.create_array instead.")
1752+
@_deprecate_positional_args
17411753
def array(
17421754
self,
17431755
name: str,

tests/test_group.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1329,3 +1329,23 @@ def test_update_attrs() -> None:
13291329
)
13301330
root.attrs["foo"] = "bar"
13311331
assert root.attrs["foo"] == "bar"
1332+
1333+
1334+
@pytest.mark.parametrize("method", ["empty", "zeros", "ones", "full"])
1335+
def test_group_deprecated_positional_args(method: str) -> None:
1336+
if method == "full":
1337+
kwargs = {"fill_value": 0}
1338+
else:
1339+
kwargs = {}
1340+
1341+
root = zarr.group()
1342+
with pytest.warns(FutureWarning, match=r"Pass name=.* as keyword args."):
1343+
arr = getattr(root, method)("foo", shape=1, **kwargs)
1344+
assert arr.shape == (1,)
1345+
1346+
method += "_like"
1347+
data = np.ones(1)
1348+
1349+
with pytest.warns(FutureWarning, match=r"Pass name=.*, data=.* as keyword args."):
1350+
arr = getattr(root, method)("foo_like", data, **kwargs)
1351+
assert arr.shape == data.shape

0 commit comments

Comments
 (0)