Skip to content

Commit 329612e

Browse files
authored
fix(group): deprecate positional args in Group.{zeros,ones,etc.} (#2416)
* fix(group): deprecate positional args in Group.{zeros,ones,etc.} * fixup
1 parent 649915f commit 329612e

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/zarr/core/group.py

Lines changed: 11 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
@@ -1531,6 +1532,7 @@ def create(self, *args: Any, **kwargs: Any) -> Array:
15311532
# Backwards compatibility for 2.x
15321533
return self.create_array(*args, **kwargs)
15331534

1535+
@_deprecate_positional_args
15341536
def create_array(
15351537
self,
15361538
name: str,
@@ -1692,15 +1694,19 @@ def require_array(self, name: str, **kwargs: Any) -> Array:
16921694
"""
16931695
return Array(self._sync(self._async_group.require_array(name, **kwargs)))
16941696

1697+
@_deprecate_positional_args
16951698
def empty(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
16961699
return Array(self._sync(self._async_group.empty(name=name, shape=shape, **kwargs)))
16971700

1701+
@_deprecate_positional_args
16981702
def zeros(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
16991703
return Array(self._sync(self._async_group.zeros(name=name, shape=shape, **kwargs)))
17001704

1705+
@_deprecate_positional_args
17011706
def ones(self, *, name: str, shape: ChunkCoords, **kwargs: Any) -> Array:
17021707
return Array(self._sync(self._async_group.ones(name=name, shape=shape, **kwargs)))
17031708

1709+
@_deprecate_positional_args
17041710
def full(
17051711
self, *, name: str, shape: ChunkCoords, fill_value: Any | None, **kwargs: Any
17061712
) -> Array:
@@ -1710,22 +1716,27 @@ def full(
17101716
)
17111717
)
17121718

1719+
@_deprecate_positional_args
17131720
def empty_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17141721
return Array(self._sync(self._async_group.empty_like(name=name, data=data, **kwargs)))
17151722

1723+
@_deprecate_positional_args
17161724
def zeros_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17171725
return Array(self._sync(self._async_group.zeros_like(name=name, data=data, **kwargs)))
17181726

1727+
@_deprecate_positional_args
17191728
def ones_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17201729
return Array(self._sync(self._async_group.ones_like(name=name, data=data, **kwargs)))
17211730

1731+
@_deprecate_positional_args
17221732
def full_like(self, *, name: str, data: async_api.ArrayLike, **kwargs: Any) -> Array:
17231733
return Array(self._sync(self._async_group.full_like(name=name, data=data, **kwargs)))
17241734

17251735
def move(self, source: str, dest: str) -> None:
17261736
return self._sync(self._async_group.move(source, dest))
17271737

17281738
@deprecated("Use Group.create_array instead.")
1739+
@_deprecate_positional_args
17291740
def array(
17301741
self,
17311742
name: str,

tests/test_group.py

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

0 commit comments

Comments
 (0)