tests/test_store/test_stateful.py::test_zarr_hierarchy[memory]: IndexError: index 5 is out of bounds for axis 0 with size 3
Failing test case:
state = ZarrHierarchyStateMachine()
state.init_store()
state.check_list_prefix_from_root()
Checking 1 expected keys vs 1 actual keys
Draw 1 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(3,),
data_type=Bool(dtype_cls=numpy.dtypes.BoolDType,
_zarr_v3_name='bool',
_zarr_v2_name='|b1'),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(3,)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.False_,
codecs=(BytesCodec(endian=None), ZstdCodec(level=0, checksum=False)),
attributes={},
dimension_names=None,
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/rJW7FSSM'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='rJW7FSSM' shape=(3,) chunks=RegularChunkGridMetadata(chunk_shape=(3,))
state.add_array(data=data(...), name='rJW7FSSM')
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Draw 2: 'rJW7FSSM'
state.check_array(data=data(...))
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Draw 3: 'rJW7FSSM'
state.check_array(data=data(...))
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
clearing
state.clear()
state.check_list_prefix_from_root()
Checking 1 expected keys vs 1 actual keys
Draw 4 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(3,
3),
data_type=Bool(dtype_cls=numpy.dtypes.BoolDType,
_zarr_v3_name='bool',
_zarr_v2_name='|b1'),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(3, 3)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.False_,
codecs=(BytesCodec(endian=None), ZstdCodec(level=0, checksum=False)),
attributes={'\U00082138\U0004322aÖ\t\U000e0c47\U0009e56cÏÇ^#Î': {'ø"gÇîHÒ«杁cm&': None},
'ü\U000fa0a4k': None,
'yo눯0|': None,
'£\x1e\rTO\U00053101': [None],
'0': False,
'\x88': {'-𩁊ú': [], '[\U000762cb\U000ffbc0\U000598e9±È': [None, None], '0': None},
'numcodecs.zstd': None,
'-\U000487cd\x16ÉÆ(ø\x99\x86´$ ¤_x': {'ÖD\U0005171fÔ#𭘞\x05e\U000ea064Nß\U000b3f02𩻫©]\x98': None, '\U000855c6T': None, '\U00093a9aË': None},
'#\U000ed5fe': False,
'\x9cY': {'\U000c6576=': False},
'\x0eÁsG\x9e\x00': None,
'0:': [None],
'É\x12': [None],
'\U000c9916\x95\x89$Ñ\x93ø\U000e619d\xad': None,
'ê': None},
dimension_names=None,
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/.2qK0IM'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='.2qK0IM' shape=(3, 3) chunks=RegularChunkGridMetadata(chunk_shape=(3, 3))
state.add_array(data=data(...), name='.2qK0IM')
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
clearing
state.clear()
state.check_list_prefix_from_root()
Checking 1 expected keys vs 1 actual keys
Draw 5 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(3,
3,
3),
data_type=Bool(dtype_cls=numpy.dtypes.BoolDType,
_zarr_v3_name='bool',
_zarr_v2_name='|b1'),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(3, 3, 3)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.False_,
codecs=(BytesCodec(endian=None), ZstdCodec(level=0, checksum=False)),
attributes={},
dimension_names=None,
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/0'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='0' shape=(3, 3, 3) chunks=RegularChunkGridMetadata(chunk_shape=(3, 3, 3))
state.add_array(data=data(...), name='0')
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
clearing
state.clear()
state.check_list_prefix_from_root()
Checking 1 expected keys vs 1 actual keys
Draw 6 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(4,
5,
4),
data_type=Float16(endianness='little',
dtype_cls=numpy.dtypes.Float16DType,
_zarr_v3_name='float16',
_zarr_v2_names=('>f2', '<f2')),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(1, 1, 1)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.float16(-0.0),
codecs=(BytesCodec(endian='little'), ZstdCodec(level=0, checksum=False)),
attributes={},
dimension_names=('.U', None, None),
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/0'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='0' shape=(4, 5, 4) chunks=RegularChunkGridMetadata(chunk_shape=(1, 1, 1))
state.add_array(data=data(...), name='0')
state.check_list_prefix_from_root()
Checking 81 expected keys vs 81 actual keys
clearing
state.clear()
state.check_list_prefix_from_root()
Checking 1 expected keys vs 1 actual keys
Draw 7 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(3,),
data_type=Int8(dtype_cls=numpy.dtypes.Int8DType,
_zarr_v3_name='int8',
_zarr_v2_names=('|i1',)),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(3,)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.int8(0),
codecs=(BytesCodec(endian=None), ZstdCodec(level=0, checksum=False)),
attributes={},
dimension_names=None,
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/p6fZ-'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='p6fZ-' shape=(3,) chunks=RegularChunkGridMetadata(chunk_shape=(3,))
state.add_array(data=data(...), name='p6fZ-')
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Adding group: path='C2A4j'
state.add_group(data=data(...), name='C2A4j')
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
Draw 8: 'C2A4j'
Draw 9: False
delete_dir with path='C2A4j'
state.delete_dir(data=data(...))
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Draw 10: 'p6fZ-'
Draw 11: slice(None, -3, None)
overwriting array with basic indexer: slicer=slice(None, -3, None)
Draw 12: array([], dtype=int8)
state.overwrite_array_basic_indexing(data=data(...))
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Draw 13 (generated array): Array(_async_array=AsyncArray(metadata=ArrayV3Metadata(shape=(5,
4),
data_type=Int8(dtype_cls=numpy.dtypes.Int8DType,
_zarr_v3_name='int8',
_zarr_v2_names=('|i1',)),
chunk_grid=RegularChunkGridMetadata(chunk_shape=(2, 4)),
chunk_key_encoding=DefaultChunkKeyEncoding(name='default', separator='/'),
fill_value=np.int8(0),
codecs=(ShardingCodec(chunk_shape=(2, 2),
codecs=(ShardingCodec(chunk_shape=(2, 2),
codecs=(BytesCodec(endian=None),),
index_codecs=(BytesCodec(endian='little'), Crc32cCodec()),
index_location='end',
subchunk_write_order='morton'),),
index_codecs=(BytesCodec(endian='little'), Crc32cCodec()),
index_location='end',
subchunk_write_order='morton'),),
attributes={},
dimension_names=('8', None),
storage_transformers=(),
extra_fields={}),
store_path=StorePath(MemoryStore, 'memory://140614209804608/j-JJG2'),
config=ArrayConfig(order='C',
write_empty_chunks=False,
read_missing_chunks=True,
sharding_coalesce_max_gap_bytes=1048576,
sharding_coalesce_max_bytes=16777216)))
Adding array: path='j-JJG2' shape=(5, 4) chunks=RegularChunkGridMetadata(chunk_shape=(2, 4))
state.add_array(data=data(...), name='j-JJG2')
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
Draw 14 (Array deletion target): 'p6fZ-'
Deleting array 'p6fZ-' (prefix='', array_name='p6fZ-') using del
state.delete_array_using_del(data=data(...))
state.check_list_prefix_from_root()
Checking 2 expected keys vs 2 actual keys
Adding group: path='3069fJkq'
state.add_group(data=data(...), name='3069fJkq')
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
Draw 15: 'j-JJG2'
state.check_array(data=data(...))
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
Draw 16: 'j-JJG2'
state.check_array(data=data(...))
state.check_list_prefix_from_root()
Checking 3 expected keys vs 3 actual keys
Draw 17 (Group parent): '3069fJkq'
Adding group: path='3069fJkq/VNG7YhEAXZm7fI7Xsa3xcW'
state.add_group(data=data(...), name='VNG7YhEAXZm7fI7Xsa3xcW')
state.check_list_prefix_from_root()
Checking 4 expected keys vs 4 actual keys
Draw 18: 'j-JJG2'
Draw 19: (slice(2, 5, None), slice(2, 2, None))
overwriting array with basic indexer: slicer=(slice(2, 5, None), slice(2, 2, None))
Draw 20: array([], shape=(3, 0), dtype=int8)
state.overwrite_array_basic_indexing(data=data(...))
state.check_list_prefix_from_root()
Checking 4 expected keys vs 4 actual keys
Draw 21: 'j-JJG2'
Draw 22: (slice(3, 5, None), slice(2, 4, None))
overwriting array with basic indexer: slicer=(slice(3, 5, None), slice(2, 4, None))
Draw 23: array([[0, 0],
[0, 0]], dtype=int8)
state.overwrite_array_basic_indexing(data=data(...))
state.check_list_prefix_from_root()
Checking 4 expected keys vs 4 actual keys
Draw 24: 'j-JJG2'
Draw 25: ((array([ 0, -5, 3, 0]), array([-1, 1, 2, 3])),
(array([[ 0, 0, 0, 0],
[-5, -5, -5, -5],
[ 3, 3, 3, 3],
[ 0, 0, 0, 0]]), array([[-1, 1, 2, 3],
[-1, 1, 2, 3],
[-1, 1, 2, 3],
[-1, 1, 2, 3]])))
overwriting array orthogonal indexer=(array([ 0, -5, 3, 0]), array([-1, 1, 2, 3]))
Draw 26: array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]], dtype=int8)
state.overwrite_array_orthogonal_indexing(data=data(...))
state.teardown()
Explanation:
These lines were always and only run by failing test cases:
/home/runner/work/zarr-python/zarr-python/src/zarr/codecs/sharding.py:1057
/home/runner/work/zarr-python/zarr-python/src/zarr/codecs/sharding.py:1563
/home/runner/work/zarr-python/zarr-python/src/zarr/codecs/sharding.py:1592
/home/runner/work/zarr-python/zarr-python/src/zarr/codecs/sharding.py:1638
/home/runner/work/zarr-python/zarr-python/src/zarr/core/indexing.py:302
(and 38 more with settings.verbosity >= verbose)
You can reproduce this test case by temporarily adding @reproduce_failure('6.165.5', b'AXicZVTNTxNBFJ9pqShVVEw8eDBEitmDbRoQKiYaJqhICXgA5cOgMYWKRUAsGjQe3NKPLY0YrC0UoWhoTFrkKxqCiJLMHP0n9IAXL7Q1ejBRZ2anFHBndve9t2/ee7/fvFkAUB0CfGgAe+Ypd61NlgsNDcIMkZbegN/MAOmkIn0DsY4r4qvQ83ymkr5ac00dgvBFyuVeTg4qCRLek3656EtFQ2/IU+K7VkSGkQYGyfKxm8RH5i6SZ3jm26Rs6z7O0vnIanrFFeviNfge9H5X5s2PuDKEp4/ua7yUDLplGp75ymZeGHRhBWmhMKrFczt95kCfcSMuD5EVZhi5mlwKBNJr84+Tkek4XiQKX5QNRt/DPfe6bb3tHTan6aGzvz3jAHlAVYEQivAARoxJZerJYeInXoks4wj24neGQhy7PkBBThlI+FxyZGKKPC/amB2L6jrSCTlWT6ZSb1ddG/EPMzjehsdoFE/KM+ptpII3FUyMkwArxFOUnh39pCIZxBMtNJ4n7Q0tnWF7AJV8IjurcVTdLNnsMp/OVLelVvZFNg8Sf4FQQ2l/LIxD2G8gI5juQfq1dxLP8hgukkAwu5xOmjA5PhpxMN3d39nRwwUSIeOMAl8TUQZM5NV2hngfqP3DWki1MBDbm0U0HSUdbnHfueL/BuO7pFVX5ECko08qGSSiK8Zf56KKpAS72uT7ixUQGaWyPz2/5B+3j0BUK60dAPyC6IRU5Shw2AMLByXo/nz2/Ze9bRAVS5UffwbKdE4PlekEUqXqT+uQqrRL+an1/YVSdKHfewiv32J1aVEOHbREl+myQL0TnedOub3VyKFsniiVK0FYdgLhlTlmGqQHnqoSdNIBkE4NnSsoQWxjgMo1zPDEDECVeSh6Uay0BuB1GK3W6pJsFYIzLvPk+mx6HkE+xSDQwVOp2LS8ND1QSs3lFXZrV9//fwI9CF+pr7a0dJ5Hza3dFnuNpdl5o3TA1sRccjktlDQNAkLT8hwangKyPWW4NntBIzoQqT+g3YAfZhZC+Gj41Ap3iH4LD4D+qoxkmhKq4SkC6r+LY/0HGMAuhg==') as a decorator on your test function
Workflow Run URL
Python 3.13 Test Summary