zarr-python
zarr-python copied to clipboard
non-deterministic test failures in test_open_array and test_open_group
Zarr version
v2.17.1
Numcodecs version
N/A
Python Version
3.10
Operating System
GNU/Linux
Installation
From source (build time error)
Description
The test suite encounters failures such as:
=================================== FAILURES ===================================
________________________ test_open_array[False-None-/] _________________________
[gw21] linux -- Python 3.10.7 /gnu/store/i8pga71yj909d7lpdv4aprd8wyzfznfp-python-wrapper-3.10.7/bin/python
zarr_version = None, at_root = False, dimension_separator = '/'
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS)
@pytest.mark.parametrize("at_root", [False, True])
def test_open_array(zarr_version, at_root, dimension_separator):
store = "data/array.zarr"
kwargs = _init_creation_kwargs(zarr_version, at_root)
# mode == 'w'
z = open_array(
store, mode="w", shape=100, chunks=10, dimension_separator=dimension_separator, **kwargs
)
z[:] = 42
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
> assert_array_equal(np.full(100, fill_value=42), z[:])
E AssertionError:
E Arrays are not equal
E
E Mismatched elements: 60 / 100 (60%)
E Max absolute difference: 42.
E Max relative difference: 0.
E x: array([42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,...
E y: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
E 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
E 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,...
zarr/tests/test_creation.py:230: AssertionError
Rebuilding the package many times, the following failures were also found on an x86_64 machine using 24 cores:
zarr/tests/test_core.py::TestArrayWithFSStorePartialRead::test_iter
[gw40] [ 99%] PASSED zarr/tests/test_core.py::TestArrayWithFSStorePartialRead::test_iter
[gw94] [ 99%] PASSED zarr/tests/test_indexing.py::test_set_orthogonal_selection_3d
zarr/tests/test_indexing.py::test_orthogonal_indexing_fallback_on_get_setitem
[gw94] [ 99%] PASSED zarr/tests/test_indexing.py::test_orthogonal_indexing_fallback_on_get_setitem
zarr/tests/test_indexing.py::test_get_coordinate_selection_1d
[gw94] [100%] PASSED zarr/tests/test_indexing.py::test_get_coordinate_selection_1d
=================================== FAILURES ===================================
________________________ test_open_array[False-None-.] _________________________
[gw68] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = None, at_root = False, dimension_separator = '.'
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS)
@pytest.mark.parametrize("at_root", [False, True])
def test_open_array(zarr_version, at_root, dimension_separator):
store = "data/array.zarr"
kwargs = _init_creation_kwargs(zarr_version, at_root)
# mode == 'w'
z = open_array(
store, mode="w", shape=100, chunks=10, dimension_separator=dimension_separator, **kwargs
)
z[:] = 42
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
> assert_array_equal(np.full(100, fill_value=42), z[:])
E AssertionError:
E Arrays are not equal
E
E Mismatched elements: 10 / 100 (10%)
E Max absolute difference: 42.
E Max relative difference: 0.
E x: array([42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,...
E y: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 42., 42., 42.,
E 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42.,
E 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42., 42.,...
zarr/tests/test_creation.py:230: AssertionError
_______________________ test_open_array[False-None-None] _______________________
[gw68] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = None, at_root = False, dimension_separator = None
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS)
@pytest.mark.parametrize("at_root", [False, True])
def test_open_array(zarr_version, at_root, dimension_separator):
store = "data/array.zarr"
kwargs = _init_creation_kwargs(zarr_version, at_root)
# mode == 'w'
z = open_array(
store, mode="w", shape=100, chunks=10, dimension_separator=dimension_separator, **kwargs
)
z[:] = 42
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
assert_array_equal(np.full(100, fill_value=42), z[:])
if dimension_separator is None:
assert z._dimension_separator == "/" if zarr_version == 3 else "."
else:
assert z._dimension_separator == dimension_separator
# mode in 'r', 'r+'
group_kwargs = kwargs.copy()
if zarr_version == 3:
group_kwargs["path"] = "group"
open_group("data/group.zarr", mode="w", **group_kwargs)
for mode in "r", "r+":
with pytest.raises(ValueError):
open_array("doesnotexist", mode=mode)
with pytest.raises(ValueError):
open_array("data/group.zarr", mode=mode)
z = open_array(store, mode="r", **kwargs)
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
assert_array_equal(np.full(100, fill_value=42), z[:])
with pytest.raises(PermissionError):
z[:] = 43
z = open_array(store, mode="r+", **kwargs)
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
assert_array_equal(np.full(100, fill_value=42), z[:])
z[:] = 43
assert_array_equal(np.full(100, fill_value=43), z[:])
# mode == 'a'
shutil.rmtree(store)
z = open_array(store, mode="a", shape=100, chunks=10, **kwargs)
z[:] = 42
assert isinstance(z, Array)
if z._store._store_version == 2:
assert isinstance(z.store, DirectoryStore)
else:
assert isinstance(z.store, DirectoryStoreV3)
assert (100,) == z.shape
assert (10,) == z.chunks
> assert_array_equal(np.full(100, fill_value=42), z[:])
E AssertionError:
E Arrays are not equal
E
E Mismatched elements: 50 / 100 (50%)
E Max absolute difference: 42.
E Max relative difference: 0.
E x: array([42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
E 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,...
E y: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
E 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
E 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,...
zarr/tests/test_creation.py:281: AssertionError
______________ test_open_array_infer_separator_from_store[2-None] ______________
[gw61] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = 2, dimension_separator = None
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS2)
def test_open_array_infer_separator_from_store(zarr_version, dimension_separator):
if zarr_version == 3:
StoreClass = DirectoryStoreV3
path = "data"
else:
StoreClass = DirectoryStore
path = None
store = StoreClass("data/array.zarr", dimension_separator=dimension_separator)
# Note: no dimension_separator kwarg to open_array
# we are testing here that it gets inferred from store
> z = open_array(store, path=path, mode="w", shape=100, chunks=10)
zarr/tests/test_creation.py:349:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zarr/creation.py:629: in open_array
init_array(
zarr/storage.py:454: in init_array
_init_array_metadata(
zarr/storage.py:496: in _init_array_metadata
rmdir(store, path)
zarr/storage.py:211: in rmdir
store.rmdir(path)
zarr/storage.py:1261: in rmdir
shutil.rmtree(dir_path)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:724: in rmtree
_rmtree_safe_fd(fd, path, onerror)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:663: in _rmtree_safe_fd
onerror(os.rmdir, fullname, sys.exc_info())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
topfd = 13
path = '/tmp/guix-build-python-zarr-2.17.1.drv-0/zarr-2.17.1/data/array.zarr'
onerror = <function rmtree.<locals>.onerror at 0x7ffcc55f7eb0>
def _rmtree_safe_fd(topfd, path, onerror):
try:
with os.scandir(topfd) as scandir_it:
entries = list(scandir_it)
except OSError as err:
err.filename = path
onerror(os.scandir, path, sys.exc_info())
return
for entry in entries:
fullname = os.path.join(path, entry.name)
try:
is_dir = entry.is_dir(follow_symlinks=False)
except OSError:
is_dir = False
else:
if is_dir:
try:
orig_st = entry.stat(follow_symlinks=False)
is_dir = stat.S_ISDIR(orig_st.st_mode)
except OSError:
onerror(os.lstat, fullname, sys.exc_info())
continue
if is_dir:
try:
dirfd = os.open(entry.name, os.O_RDONLY, dir_fd=topfd)
dirfd_closed = False
except OSError:
onerror(os.open, fullname, sys.exc_info())
else:
try:
if os.path.samestat(orig_st, os.fstat(dirfd)):
_rmtree_safe_fd(dirfd, fullname, onerror)
try:
os.close(dirfd)
dirfd_closed = True
> os.rmdir(entry.name, dir_fd=topfd)
E OSError: [Errno 39] Directory not empty: 'array'
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:661: OSError
_________________________ test_open_array[True-None-/] _________________________
[gw54] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = None, at_root = True, dimension_separator = '/'
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS)
@pytest.mark.parametrize("at_root", [False, True])
def test_open_array(zarr_version, at_root, dimension_separator):
store = "data/array.zarr"
kwargs = _init_creation_kwargs(zarr_version, at_root)
# mode == 'w'
> z = open_array(
store, mode="w", shape=100, chunks=10, dimension_separator=dimension_separator, **kwargs
)
zarr/tests/test_creation.py:219:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zarr/creation.py:629: in open_array
init_array(
zarr/storage.py:454: in init_array
_init_array_metadata(
zarr/storage.py:496: in _init_array_metadata
rmdir(store, path)
zarr/storage.py:211: in rmdir
store.rmdir(path)
zarr/storage.py:1261: in rmdir
shutil.rmtree(dir_path)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:724: in rmtree
_rmtree_safe_fd(fd, path, onerror)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:657: in _rmtree_safe_fd
_rmtree_safe_fd(dirfd, fullname, onerror)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:680: in _rmtree_safe_fd
onerror(os.unlink, fullname, sys.exc_info())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
topfd = 14
path = '/tmp/guix-build-python-zarr-2.17.1.drv-0/zarr-2.17.1/data/array.zarr/array'
onerror = <function rmtree.<locals>.onerror at 0x7ffcc4faf9a0>
def _rmtree_safe_fd(topfd, path, onerror):
try:
with os.scandir(topfd) as scandir_it:
entries = list(scandir_it)
except OSError as err:
err.filename = path
onerror(os.scandir, path, sys.exc_info())
return
for entry in entries:
fullname = os.path.join(path, entry.name)
try:
is_dir = entry.is_dir(follow_symlinks=False)
except OSError:
is_dir = False
else:
if is_dir:
try:
orig_st = entry.stat(follow_symlinks=False)
is_dir = stat.S_ISDIR(orig_st.st_mode)
except OSError:
onerror(os.lstat, fullname, sys.exc_info())
continue
if is_dir:
try:
dirfd = os.open(entry.name, os.O_RDONLY, dir_fd=topfd)
dirfd_closed = False
except OSError:
onerror(os.open, fullname, sys.exc_info())
else:
try:
if os.path.samestat(orig_st, os.fstat(dirfd)):
_rmtree_safe_fd(dirfd, fullname, onerror)
try:
os.close(dirfd)
dirfd_closed = True
os.rmdir(entry.name, dir_fd=topfd)
except OSError:
onerror(os.rmdir, fullname, sys.exc_info())
else:
try:
# This can only happen if someone replaces
# a directory with a symlink after the call to
# os.scandir or stat.S_ISDIR above.
raise OSError("Cannot call rmtree on a symbolic "
"link")
except OSError:
onerror(os.path.islink, fullname, sys.exc_info())
finally:
if not dirfd_closed:
os.close(dirfd)
else:
try:
> os.unlink(entry.name, dir_fd=topfd)
E FileNotFoundError: [Errno 2] No such file or directory: '5.940c91f36a14410a953ed10fc9c5eac8.partial'
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:678: FileNotFoundError
_______________________ test_open_array[True-None-None] ________________________
[gw54] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = None, at_root = True, dimension_separator = None
@pytest.mark.parametrize("dimension_separator", [".", "/", None])
@pytest.mark.parametrize("zarr_version", _VERSIONS)
@pytest.mark.parametrize("at_root", [False, True])
def test_open_array(zarr_version, at_root, dimension_separator):
store = "data/array.zarr"
kwargs = _init_creation_kwargs(zarr_version, at_root)
# mode == 'w'
> z = open_array(
store, mode="w", shape=100, chunks=10, dimension_separator=dimension_separator, **kwargs
)
zarr/tests/test_creation.py:219:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zarr/creation.py:629: in open_array
init_array(
zarr/storage.py:454: in init_array
_init_array_metadata(
zarr/storage.py:496: in _init_array_metadata
rmdir(store, path)
zarr/storage.py:211: in rmdir
store.rmdir(path)
zarr/storage.py:1261: in rmdir
shutil.rmtree(dir_path)
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:730: in rmtree
onerror(os.rmdir, path, sys.exc_info())
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
path = '/tmp/guix-build-python-zarr-2.17.1.drv-0/zarr-2.17.1/data/array.zarr'
ignore_errors = False
onerror = <function rmtree.<locals>.onerror at 0x7ffcc54569e0>
def rmtree(path, ignore_errors=False, onerror=None):
"""Recursively delete a directory tree.
If ignore_errors is set, errors are ignored; otherwise, if onerror
is set, it is called to handle the error with arguments (func,
path, exc_info) where func is platform and implementation dependent;
path is the argument to that function that caused it to fail; and
exc_info is a tuple returned by sys.exc_info(). If ignore_errors
is false and onerror is None, an exception is raised.
"""
sys.audit("shutil.rmtree", path)
if ignore_errors:
def onerror(*args):
pass
elif onerror is None:
def onerror(*args):
raise
if _use_fd_functions:
# While the unsafe rmtree works fine on bytes, the fd based does not.
if isinstance(path, bytes):
path = os.fsdecode(path)
# Note: To guard against symlink races, we use the standard
# lstat()/open()/fstat() trick.
try:
orig_st = os.lstat(path)
except Exception:
onerror(os.lstat, path, sys.exc_info())
return
try:
fd = os.open(path, os.O_RDONLY)
fd_closed = False
except Exception:
onerror(os.open, path, sys.exc_info())
return
try:
if os.path.samestat(orig_st, os.fstat(fd)):
_rmtree_safe_fd(fd, path, onerror)
try:
os.close(fd)
fd_closed = True
> os.rmdir(path)
E OSError: [Errno 39] Directory not empty: '/tmp/guix-build-python-zarr-2.17.1.drv-0/zarr-2.17.1/data/array.zarr'
/gnu/store/4r7k7ipiaqkdf4lmnxwmbz0wx2yzygzc-python-3.10.7/lib/python3.10/shutil.py:728: OSError
______________________________ test_open_group[2] ______________________________
[gw93] linux -- Python 3.10.7 /gnu/store/jh59fh48mcffyz5wmsjj0p96xkkflbz0-python-wrapper-3.10.7/bin/python
zarr_version = 2
@pytest.mark.parametrize("zarr_version", _VERSIONS)
def test_open_group(zarr_version):
# test the open_group() convenience function
store = "data/group.zarr"
expected_store_type = DirectoryStore if zarr_version == 2 else DirectoryStoreV3
# mode == 'w'
path = None if zarr_version == 2 else "group1"
g = open_group(store, path=path, mode="w", zarr_version=zarr_version)
assert isinstance(g, Group)
assert isinstance(g.store, expected_store_type)
assert 0 == len(g)
g.create_groups("foo", "bar")
assert 2 == len(g)
# mode in 'r', 'r+'
open_array("data/array.zarr", shape=100, chunks=10, mode="w")
for mode in "r", "r+":
with pytest.raises(ValueError):
open_group("doesnotexist", mode=mode)
with pytest.raises(ValueError):
open_group("data/array.zarr", mode=mode)
g = open_group(store, mode="r")
assert isinstance(g, Group)
assert 2 == len(g)
with pytest.raises(PermissionError):
g.create_group("baz")
g = open_group(store, mode="r+")
assert isinstance(g, Group)
assert 2 == len(g)
g.create_groups("baz", "quux")
assert 4 == len(g)
# mode == 'a'
shutil.rmtree(store)
g = open_group(store, path=path, mode="a", zarr_version=zarr_version)
assert isinstance(g, Group)
assert isinstance(g.store, expected_store_type)
assert 0 == len(g)
g.create_groups("foo", "bar")
assert 2 == len(g)
if zarr_version == 2:
with pytest.raises(ValueError):
open_group("data/array.zarr", mode="a", zarr_version=zarr_version)
else:
# TODO, root: should this raise an error?
open_group("data/array.zarr", mode="a", zarr_version=zarr_version)
# mode in 'w-', 'x'
for mode in "w-", "x":
shutil.rmtree(store)
g = open_group(store, path=path, mode=mode, zarr_version=zarr_version)
assert isinstance(g, Group)
assert isinstance(g.store, expected_store_type)
assert 0 == len(g)
g.create_groups("foo", "bar")
assert 2 == len(g)
with pytest.raises(ValueError):
open_group(store, path=path, mode=mode, zarr_version=zarr_version)
if zarr_version == 2:
> with pytest.raises(ValueError):
E Failed: DID NOT RAISE <class 'ValueError'>
zarr/tests/test_hierarchy.py:1676: Failed
============================= slowest 10 durations =============================
30.96s call zarr/tests/test_indexing.py::test_set_orthogonal_selection_3d
22.03s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_islice
21.43s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_iter
19.92s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_append_2d_axis
19.75s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_resize_2d
19.69s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_append_2d
18.88s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_array_order
12.94s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_np_ufuncs
11.38s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_dtypes
9.64s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_compressors
=========================== short test summary info ============================
FAILED zarr/tests/test_creation.py::test_open_array[False-None-.] - Assertion...
FAILED zarr/tests/test_creation.py::test_open_array[False-None-None] - Assert...
FAILED zarr/tests/test_creation.py::test_open_array_infer_separator_from_store[2-None]
FAILED zarr/tests/test_creation.py::test_open_array[True-None-/] - FileNotFou...
FAILED zarr/tests/test_creation.py::test_open_array[True-None-None] - OSError...
FAILED zarr/tests/test_hierarchy.py::test_open_group[2] - Failed: DID NOT RAI...
====== 6 failed, 2556 passed, 2563 skipped, 8 xfailed in 70.39s (0:01:10) ======
error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "/gnu/store/glrxjwic379h2gmyxc2sfchvnw5g1aai-python-pytest-7.1.3/bin/pytest" arguments: ("-vv" "-n" "auto") exit-status: 1 term-signal: #f stop-signal: #f>
phase `check' failed after 71.6 seconds
command "/gnu/store/glrxjwic379h2gmyxc2sfchvnw5g1aai-python-pytest-7.1.3/bin/pytest" "-vv" "-n" "auto" failed with status 1
Steps to reproduce
On a current Guix, run:
$ guix build --no-grafts --check --rounds=10 python-zarr
It'll attempt to build the package 10 times, probably fail as it does on my end.
Additional output
Attached is the full build log.