python-zarr fails to build with Python 3.10.0a7. =================================== FAILURES =================================== _____________________ TestArrayWithLMDBStore.test_array_0d _____________________ self = <zarr.tests.test_core.TestArrayWithLMDBStore testMethod=test_array_0d> def test_array_0d(self): # test behaviour for array with 0 dimensions # setup a = np.zeros(()) z = self.create_array(shape=(), dtype=a.dtype, fill_value=0) # check properties assert a.ndim == z.ndim assert a.shape == z.shape assert a.size == z.size assert a.dtype == z.dtype assert a.nbytes == z.nbytes with pytest.raises(TypeError): len(z) assert () == z.chunks assert 1 == z.nchunks assert (1,) == z.cdata_shape # compressor always None - no point in compressing a single value assert z.compressor is None # check __getitem__ b = z[...] assert isinstance(b, np.ndarray) assert a.shape == b.shape assert a.dtype == b.dtype assert_array_equal(a, np.array(z)) assert_array_equal(a, z[...]) assert a[()] == z[()] with pytest.raises(IndexError): z[0] with pytest.raises(IndexError): z[:] # check __setitem__ > z[...] = 42 zarr/tests/test_core.py:956: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1304: in set_basic_selection return self._set_basic_selection_zd(selection, value, fields=fields) zarr/core.py:1589: in _set_basic_selection_zd self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c132cb610>, key = b'0' value = array(42.), dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, > key, len(key), value, len(value), flags) E TypeError: len() of unsized object /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1439: TypeError ___________________ TestArrayWithLMDBStore.test_compressors ____________________ self = <zarr.tests.test_core.TestArrayWithLMDBStore testMethod=test_compressors> def test_compressors(self): compressors = [ None, BZ2(), Blosc(), LZ4(), Zlib(), GZip() ] if LZMA: compressors.append(LZMA()) for compressor in compressors: a = self.create_array(shape=1000, chunks=100, compressor=compressor) > a[0:100] = 1 zarr/tests/test_core.py:1442: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c13255f90>, key = b'0' value = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., ...1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError _______________ TestArrayWithLMDBStore.test_iteration_exceptions _______________ self = <zarr.tests.test_core.TestArrayWithLMDBStore testMethod=test_iteration_exceptions> def test_iteration_exceptions(self): # zero d array a = np.array(1, dtype=int) z = self.create_array(shape=a.shape, dtype=int) > z[...] = a zarr/tests/test_core.py:1354: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1304: in set_basic_selection return self._set_basic_selection_zd(selection, value, fields=fields) zarr/core.py:1589: in _set_basic_selection_zd self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c125d6590>, key = b'0' value = array(1), dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, > key, len(key), value, len(value), flags) E TypeError: len() of unsized object /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1439: TypeError _____________ TestArrayWithLMDBStore.test_store_has_binary_values ______________ self = <zarr.tests.test_core.TestArrayWithLMDBStore testMethod=test_store_has_binary_values> def test_store_has_binary_values(self): # Initialize array np.random.seed(42) z = self.create_array(shape=(1050,), chunks=100, dtype='f8', compressor=[]) > z[:] = np.random.random(z.shape) zarr/tests/test_core.py:109: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c123d37c0>, key = b'0' value = array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864, 0.15599452, 0.05808361, 0.86617615, 0.601115...25, 0.71324479, 0.76078505, 0.5612772 , 0.77096718, 0.4937956 , 0.52273283, 0.42754102, 0.02541913, 0.10789143]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError _______________ TestArrayWithLMDBStore.test_store_has_text_keys ________________ self = <zarr.tests.test_core.TestArrayWithLMDBStore testMethod=test_store_has_text_keys> def test_store_has_text_keys(self): # Initialize array np.random.seed(42) z = self.create_array(shape=(1050,), chunks=100, dtype='f8', compressor=[]) > z[:] = np.random.random(z.shape) zarr/tests/test_core.py:94: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c1340c2b0>, key = b'0' value = array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864, 0.15599452, 0.05808361, 0.86617615, 0.601115...25, 0.71324479, 0.76078505, 0.5612772 , 0.77096718, 0.4937956 , 0.52273283, 0.42754102, 0.02541913, 0.10789143]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError ________________ TestArrayWithLMDBStoreNoBuffers.test_array_0d _________________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_array_0d> def test_array_0d(self): # test behaviour for array with 0 dimensions # setup a = np.zeros(()) z = self.create_array(shape=(), dtype=a.dtype, fill_value=0) # check properties assert a.ndim == z.ndim assert a.shape == z.shape assert a.size == z.size assert a.dtype == z.dtype assert a.nbytes == z.nbytes with pytest.raises(TypeError): len(z) assert () == z.chunks assert 1 == z.nchunks assert (1,) == z.cdata_shape # compressor always None - no point in compressing a single value assert z.compressor is None # check __getitem__ b = z[...] assert isinstance(b, np.ndarray) assert a.shape == b.shape assert a.dtype == b.dtype assert_array_equal(a, np.array(z)) assert_array_equal(a, z[...]) assert a[()] == z[()] with pytest.raises(IndexError): z[0] with pytest.raises(IndexError): z[:] # check __setitem__ > z[...] = 42 zarr/tests/test_core.py:956: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1304: in set_basic_selection return self._set_basic_selection_zd(selection, value, fields=fields) zarr/core.py:1589: in _set_basic_selection_zd self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c12b6bbb0>, key = b'0' value = array(42.), dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, > key, len(key), value, len(value), flags) E TypeError: len() of unsized object /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1439: TypeError _______________ TestArrayWithLMDBStoreNoBuffers.test_compressors _______________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_compressors> def test_compressors(self): compressors = [ None, BZ2(), Blosc(), LZ4(), Zlib(), GZip() ] if LZMA: compressors.append(LZMA()) for compressor in compressors: a = self.create_array(shape=1000, chunks=100, compressor=compressor) > a[0:100] = 1 zarr/tests/test_core.py:1442: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c13270dc0>, key = b'0' value = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., ...1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError __________ TestArrayWithLMDBStoreNoBuffers.test_iteration_exceptions ___________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_iteration_exceptions> def test_iteration_exceptions(self): # zero d array a = np.array(1, dtype=int) z = self.create_array(shape=a.shape, dtype=int) > z[...] = a zarr/tests/test_core.py:1354: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1304: in set_basic_selection return self._set_basic_selection_zd(selection, value, fields=fields) zarr/core.py:1589: in _set_basic_selection_zd self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c132c99c0>, key = b'0' value = array(1), dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, > key, len(key), value, len(value), flags) E TypeError: len() of unsized object /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1439: TypeError _________ TestArrayWithLMDBStoreNoBuffers.test_store_has_binary_values _________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_store_has_binary_values> def test_store_has_binary_values(self): # Initialize array np.random.seed(42) z = self.create_array(shape=(1050,), chunks=100, dtype='f8', compressor=[]) > z[:] = np.random.random(z.shape) zarr/tests/test_core.py:109: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7e8c108e7a90>, key = b'0' value = array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864, 0.15599452, 0.05808361, 0.86617615, 0.601115...25, 0.71324479, 0.76078505, 0.5612772 , 0.77096718, 0.4937956 , 0.52273283, 0.42754102, 0.02541913, 0.10789143]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError _________ TestArrayWithLMDBStoreNoBuffers.test_store_has_bytes_values __________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_store_has_bytes_values> def test_store_has_bytes_values(self): # Test that many stores do hold bytes values. # Though this is not a strict requirement. # Should be disabled by any stores that fail this as needed. # Initialize array np.random.seed(42) z = self.create_array(shape=(1050,), chunks=100, dtype='f8', compressor=[]) > z[:] = np.random.random(z.shape) zarr/tests/test_core.py:128: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c12c8c220>, key = b'0' value = array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864, 0.15599452, 0.05808361, 0.86617615, 0.601115...25, 0.71324479, 0.76078505, 0.5612772 , 0.77096718, 0.4937956 , 0.52273283, 0.42754102, 0.02541913, 0.10789143]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError ___________ TestArrayWithLMDBStoreNoBuffers.test_store_has_text_keys ___________ self = <zarr.tests.test_core.TestArrayWithLMDBStoreNoBuffers testMethod=test_store_has_text_keys> def test_store_has_text_keys(self): # Initialize array np.random.seed(42) z = self.create_array(shape=(1050,), chunks=100, dtype='f8', compressor=[]) > z[:] = np.random.random(z.shape) zarr/tests/test_core.py:94: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1306: in set_basic_selection return self._set_basic_selection_nd(selection, value, fields=fields) zarr/core.py:1597: in _set_basic_selection_nd self._set_selection(indexer, value, fields=fields) zarr/core.py:1649: in _set_selection self._chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields=fields) zarr/core.py:1886: in _chunk_setitem self._chunk_setitem_nosync(chunk_coords, chunk_selection, value, zarr/core.py:1893: in _chunk_setitem_nosync self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c1332f580>, key = b'0' value = array([0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864, 0.15599452, 0.05808361, 0.86617615, 0.601115...25, 0.71324479, 0.76078505, 0.5612772 , 0.77096718, 0.4937956 , 0.52273283, 0.42754102, 0.02541913, 0.10789143]) dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not numpy.ndarray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError _______________________ TestGroupWithLMDBStore.test_move _______________________ self = <zarr.tests.test_hierarchy.TestGroupWithLMDBStore testMethod=test_move> def test_move(self): g = self.create_group() data = np.arange(100) g['boo'] = data data = np.arange(100) g['foo'] = data try: > g.move('foo', 'bar') zarr/tests/test_hierarchy.py:757: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/hierarchy.py:1035: in move self._write_op(self._move_nosync, source, dest) zarr/hierarchy.py:661: in _write_op return f(*args, **kwargs) zarr/hierarchy.py:1006: in _move_nosync rename(self._store, path, new_path) zarr/storage.py:148: in rename _rename_from_keys(store, src_path, dst_path) zarr/storage.py:134: in _rename_from_keys store[new_key] = store.pop(key) zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c125d2ec0>, key = b'bar/.zarray' value = <_cffi_backend.buffer object at 0x7f8c12e2d080>, dupdata = True overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not _cffi_backend.buffer /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError _____________________ TestGroupWithLMDBStore.test_setitem ______________________ self = <zarr.tests.test_hierarchy.TestGroupWithLMDBStore testMethod=test_setitem> def test_setitem(self): g = self.create_group() try: data = np.arange(100) g['foo'] = data assert_array_equal(data, g['foo']) data = np.arange(200) g['foo'] = data assert_array_equal(data, g['foo']) # 0d array > g['foo'] = 42 zarr/tests/test_hierarchy.py:719: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/hierarchy.py:352: in __setitem__ self.array(item, value, overwrite=True) zarr/hierarchy.py:948: in array return self._write_op(self._array_nosync, name, data, **kwargs) zarr/hierarchy.py:661: in _write_op return f(*args, **kwargs) zarr/hierarchy.py:954: in _array_nosync return array(data, store=self._store, path=path, chunk_store=self._chunk_store, zarr/creation.py:357: in array z[...] = data zarr/core.py:1211: in __setitem__ self.set_basic_selection(selection, value, fields=fields) zarr/core.py:1304: in set_basic_selection return self._set_basic_selection_zd(selection, value, fields=fields) zarr/core.py:1589: in _set_basic_selection_zd self.chunk_store[ckey] = cdata zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7f8c12675ed0>, key = b'foo/0' value = array(42), dupdata = True, overwrite = True, append = False, db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, > key, len(key), value, len(value), flags) E TypeError: len() of unsized object /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1439: TypeError _____________________ TestLMDBStore.test_writeable_values ______________________ self = <zarr.tests.test_storage.TestLMDBStore testMethod=test_writeable_values> def test_writeable_values(self): store = self.create_store() # __setitem__ should accept any value that implements buffer interface store['foo1'] = b'bar' > store['foo2'] = bytearray(b'bar') zarr/tests/test_storage.py:141: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ zarr/storage.py:1910: in __setitem__ txn.put(key, value) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <lmdb.cffi.Transaction object at 0x7e8c1073fd90>, key = b'foo2' value = bytearray(b'bar'), dupdata = True, overwrite = True, append = False db = None def put(self, key, value, dupdata=True, overwrite=True, append=False, db=None): """Store a record, returning ``True`` if it was written, or ``False`` to indicate the key was already present and `overwrite=False`. On success, the cursor is positioned on the new record. Equivalent to `mdb_put() <http://symas.com/mdb/doc/group__mdb.html#ga4fa8573d9236d54687c61827ebf8cac0>`_ `key`: Bytestring key to store. `value`: Bytestring value to store. `dupdata`: If ``True`` and database was opened with `dupsort=True`, add pair as a duplicate if the given key already exists. Otherwise overwrite any existing matching key. `overwrite`: If ``False``, do not overwrite any existing matching key. `append`: If ``True``, append the pair to the end of the database without comparing its order first. Appending a key that is not greater than the highest existing key will cause corruption. `db`: Named database to operate on. If unspecified, defaults to the database given to the :py:class:`Transaction` constructor. """ flags = 0 if not dupdata: flags |= _lib.MDB_NODUPDATA if not overwrite: flags |= _lib.MDB_NOOVERWRITE if append: flags |= _lib.MDB_APPEND > rc = _lib.pymdb_put(self._txn, (db or self._db)._dbi, key, len(key), value, len(value), flags) E TypeError: initializer for ctype 'char *' must be a cdata pointer, not bytearray /usr/lib64/python3.10/site-packages/lmdb/cffi.py:1438: TypeError =============================== warnings summary =============================== zarr/tests/test_creation.py::test_open_array zarr/tests/test_storage.py::TestN5Store::test_filters zarr/tests/test_storage.py::TestN5Store::test_init_array zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_chunk_store zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_group zarr/tests/test_storage.py::TestN5Store::test_init_array_overwrite_path zarr/tests/test_storage.py::TestN5Store::test_init_array_path /builddir/build/BUILD/zarr-2.7.0/zarr/n5.py:417: RuntimeWarning: Not all N5 implementations support blosc compression (yet). You might not be able to open the dataset with another N5 library. warnings.warn( zarr/tests/test_creation.py::test_compression_args /builddir/build/BUILD/zarr-2.7.0/zarr/tests/test_creation.py:472: UserWarning: 'compression' keyword argument overridden by 'compressor' z = create(100, compressor=Zlib(9), compression='bz2', compression_opts=1) zarr/tests/test_creation.py::test_compression_args /builddir/build/BUILD/zarr-2.7.0/zarr/tests/test_creation.py:472: UserWarning: 'compression_opts' keyword argument overridden by 'compressor' z = create(100, compressor=Zlib(9), compression='bz2', compression_opts=1) zarr/tests/test_creation.py::test_compression_args /builddir/build/BUILD/zarr-2.7.0/zarr/tests/test_creation.py:478: UserWarning: 'compression_opts' keyword argument overridden by 'compressor' z = create(100, compressor=Zlib(9), compression_opts=1) -- Docs: https://docs.pytest.org/en/stable/warnings.html ============================= slowest 10 durations ============================= 9.52s call zarr/tests/test_indexing.py::test_set_orthogonal_selection_3d 1.48s call zarr/tests/test_indexing.py::test_set_orthogonal_selection_2d 0.67s call zarr/tests/test_storage.py::test_format_compatibility 0.66s call zarr/tests/test_indexing.py::test_get_orthogonal_selection_3d 0.57s call zarr/tests/test_core.py::TestArrayWithBZ2Compressor::test_object_arrays_vlen_array 0.52s call zarr/tests/test_core.py::TestArrayWithSQLiteStore::test_object_arrays_vlen_array 0.52s call zarr/tests/test_sync.py::TestArrayWithProcessSynchronizer::test_object_arrays_vlen_array 0.51s call zarr/tests/test_core.py::TestArrayWithLMDBStore::test_object_arrays_vlen_array 0.51s call zarr/tests/test_core.py::TestArrayWithNestedDirectoryStore::test_object_arrays_vlen_array 0.51s call zarr/tests/test_core.py::TestArrayWithLZMACompressor::test_object_arrays_vlen_array =========================== short test summary info ============================ FAILED zarr/tests/test_core.py::TestArrayWithLMDBStore::test_array_0d - TypeE... FAILED zarr/tests/test_core.py::TestArrayWithLMDBStore::test_compressors - Ty... FAILED zarr/tests/test_core.py::TestArrayWithLMDBStore::test_iteration_exceptions FAILED zarr/tests/test_core.py::TestArrayWithLMDBStore::test_store_has_binary_values FAILED zarr/tests/test_core.py::TestArrayWithLMDBStore::test_store_has_text_keys FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_array_0d FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_compressors FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_iteration_exceptions FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_store_has_binary_values FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_store_has_bytes_values FAILED zarr/tests/test_core.py::TestArrayWithLMDBStoreNoBuffers::test_store_has_text_keys FAILED zarr/tests/test_hierarchy.py::TestGroupWithLMDBStore::test_move - Type... FAILED zarr/tests/test_hierarchy.py::TestGroupWithLMDBStore::test_setitem - T... FAILED zarr/tests/test_storage.py::TestLMDBStore::test_writeable_values - Typ... ==== 14 failed, 1897 passed, 286 skipped, 2 xfailed, 11 warnings in 54.22s ===== For the build logs, see: https://copr-be.cloud.fedoraproject.org/results/@python/python3.10/fedora-rawhide-x86_64/02127406-python-zarr/ For all our attempts to build python-zarr with Python 3.10, see: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/python-zarr/ Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.10: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/ Let us know here if you have any questions. Python 3.10 will be included in Fedora 35. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.10. A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon. We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.
This continues to be breakage in lmdb.
*** Bug 1958897 has been marked as a duplicate of this bug. ***