blosc2 3.2.1__tar.gz → 3.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {blosc2-3.2.1 → blosc2-3.3.1}/.pre-commit-config.yaml +1 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/ANNOUNCE.rst +10 -10
- {blosc2-3.2.1 → blosc2-3.3.1}/PKG-INFO +2 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/README.rst +1 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/RELEASE_NOTES.md +39 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/05.persistent-reductions.ipynb +9 -9
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/python-blosc2.rst +1 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/linear_algebra.rst +3 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/ndarray.rst +1 -0
- blosc2-3.3.1/examples/c2array-get-slice.py +37 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/arange-constructor.py +1 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/pyproject.toml +1 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/__init__.py +3 -1
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/blosc2_ext.pyx +106 -87
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/lazyexpr.py +28 -8
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/ndarray.py +306 -20
- blosc2-3.3.1/src/blosc2/version.py +1 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_lazyexpr.py +23 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_matmul.py +42 -3
- blosc2-3.3.1/tests/ndarray/test_slice.py +93 -0
- blosc2-3.3.1/tests/ndarray/test_transpose.py +240 -0
- blosc2-3.2.1/src/blosc2/version.py +0 -1
- blosc2-3.2.1/tests/ndarray/test_slice.py +0 -56
- {blosc2-3.2.1 → blosc2-3.3.1}/.gitignore +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/.guix/modules/python-blosc2-package.scm +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/.guix-channel +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/CMakeLists.txt +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/CONTRIBUTING.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/LICENSE.txt +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/README_DEVELOPERS.md +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/RELEASING.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/code_of_conduct.md +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/_static/blosc-favicon_32x32.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/_static/blosc-favicon_64x64.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/_static/blosc-logo_128.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/_static/blosc-logo_256.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/_static/css/custom.css +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/conf.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/development/code-of-conduct.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/development/contributing.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/development/index.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/index.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/installation.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/overview.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/01.ndarray-basics.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/02.lazyarray-expressions.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/03.lazyarray-udf.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/04.reductions.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/06.remote_proxy.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/07.schunk-basics.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/08.schunk-slicing_and_beyond.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/10.ucodecs-ufilters.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/11.prefilters.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/12.postfilters.ipynb +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/blosc2-pipeline.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/blosc2-pipeline.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/lazyexpr-broadcast.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/reductions/3D-cube-plane.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/reductions/3D-cube.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/reductions/memory-access-2D-x.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/reductions/memory-access-2D-y.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/remote_proxy.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/backward.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/backward.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/forward.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials/images/ucodecs-filters/forward.svg +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/getting_started/tutorials.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/index.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/array_operations.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.__getitem__.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.__init__.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.__len__.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.__setitem__.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.append_data.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.decompress_chunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.delete_chunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.fill_special.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.filler.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.get_chunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.get_slice.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.insert_chunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.insert_data.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.iterchunks.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.iterchunks_info.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.postfilter.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.prefilter.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.remove_postfilter.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.remove_prefilter.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.to_cframe.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.update_chunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/autofiles/schunk/blosc2.schunk.SChunk.update_data.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/c2array.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/classes.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/decorators.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/index.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/lazy_functions.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/lazyarray.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/low_level.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/ndfield.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/proxy.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/proxyndsource.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/proxysource.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/reduction_functions.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/save_load.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/schunk.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/storage.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/reference/utilities.rst +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/doc/release_notes/index.md +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/btune.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/compress2_decompress2.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/compress_decompress.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/filler.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/gil.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/mmap-rw.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/asarray_.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/broadcast_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/buffer.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/bytedelta_filter.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/c2array_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/compute_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/compute_fields.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/compute_udf_numba.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/compute_where.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/copy_.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/empty_.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/eye-constructor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/filter_sort_fields.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/formats.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/fromiter-constructor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/general_expressions.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/getitem.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/iterchunks_info.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/jit-expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/jit-numpy-funcs.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/jit-reduc.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/linspace-constructor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/lists-vs-bools-idx.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/meta.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/ndarray_copy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/ndmean.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/persistency.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/proxy-carray.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/proxy-ndarray.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/reduce_and_enlarge.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/reduce_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/reduce_expr_save.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/reduce_string_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/resize_.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/work_with_numpy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ndarray/zfp_codec.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/pack_array.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/pack_tensor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/postfilter1.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/postfilter2.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/postfilter3.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/prefilter.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/save_tensor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/schunk.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/schunk_roundtrip.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ucodecs.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/ufilters.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/examples/vlmeta.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/generate_version.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/guix.scm +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/Complete-Write-Read-B2ND.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/M1-i386-vs-arm64-pack.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/M1-i386-vs-arm64-unpack.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/Read-Partial-Slices-B2ND.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/b2nd-2level-parts.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/eval-expr-full-mem-M2.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/eval-expr-scarce-mem-M2.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/lazyarray-dask-large.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/lazyarray-dask-small.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/lazyarray-expr-large.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/lazyarray-expr.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/linspace-compress.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/linspace-decompress.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/pack-array-cratios.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/reduc-float64-amd.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/images/reduc-float64-log-amd.png +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/pytest.ini +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/c2array.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/core.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/helpers.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/info.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/proxy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/schunk.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/src/blosc2/storage.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/conftest.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_auto_parts.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_buffer.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_c2array_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_c2array_reductions.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_c2array_udf.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_copy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_empty.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_evaluate.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_full.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_get_slice_nchunks.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_getitem.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_iterchunks_info.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_jit.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_lazyexpr_fields.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_lazyudf.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_lossy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_metalayers.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_mode.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_nans.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_ndarray.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_numpy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_persistency.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_proxy.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_proxy_c2array.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_proxy_expr.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_reductions.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_resize.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_setitem.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_squeeze.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_struct_dtype.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/ndarray/test_zeros.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_bytes_array.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_comp_info.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_compress2.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_compression_parameters.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_compressors.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_decompress.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_iterchunks.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_mmap.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_open.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_open_c2array.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_pathlib.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_postfilters.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_prefilters.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_proxy_schunk.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_python_blosc.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_constructor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_delete.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_get_slice.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_get_slice_nchunks.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_insert.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_set_slice.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_schunk_update.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_storage.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_tensor.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_ucodecs.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_ufilters.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/tests/test_vlmeta.py +0 -0
- {blosc2-3.2.1 → blosc2-3.3.1}/update_version.py +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
Announcing Python-Blosc2 3.
|
|
1
|
+
Announcing Python-Blosc2 3.3.1
|
|
2
2
|
==============================
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
In our effort to better adapt to better adapt to the array API
|
|
5
|
+
(https://data-apis.org/array-api/latest/), we have introduced
|
|
6
|
+
permute_dims() and matrix_transpose() functions, and the .T property.
|
|
7
|
+
This replaces to previous transpose() function, which is now deprecated.
|
|
8
|
+
See PR #384. Thanks to Ricardo Sales Piquer (@ricardosp4).
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
or ``blosc2.arange()`` by a factor of up to 3x for large arrays.
|
|
10
|
+
We have also reduced the memory footprint of constructors like ``arange()``,
|
|
11
|
+
``linspace()`` and ``fromiter()`` by a large factor. As an example, a 5 TB
|
|
12
|
+
array of 8-byte floats now uses less than 200 MB of memory instead of
|
|
13
|
+
170 GB previously.
|
|
14
14
|
|
|
15
15
|
You can think of Python-Blosc2 3.x as an extension of NumPy/numexpr that:
|
|
16
16
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: blosc2
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.1
|
|
4
4
|
Summary: A fast & compressed ndarray library with a flexible compute engine.
|
|
5
5
|
Author-Email: Blosc Development Team <blosc@blosc.org>
|
|
6
6
|
Maintainer-Email: Blosc Development Team <blosc@blosc.org>
|
|
@@ -166,6 +166,7 @@ to the core development of the Blosc2 library:
|
|
|
166
166
|
- Juan David Ibáñez
|
|
167
167
|
- Ivan Vilata i Balaguer
|
|
168
168
|
- Oumaima Ech.Chdig
|
|
169
|
+
- Ricardo Sales Piquer
|
|
169
170
|
|
|
170
171
|
In addition, other people have participated to the project in different
|
|
171
172
|
aspects:
|
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Release notes
|
|
2
2
|
|
|
3
|
+
## Changes from 3.3.0 to 3.3.1
|
|
4
|
+
|
|
5
|
+
* In our effort to better adapt to better adapt to the array API
|
|
6
|
+
(https://data-apis.org/array-api/latest/), we have introduced
|
|
7
|
+
permute_dims() and matrix_transpose() functions, and the .T property.
|
|
8
|
+
This replaces to previous transpose() function, which is now deprecated.
|
|
9
|
+
See PR #384. Thanks to Ricardo Sales Piquer (@ricardosp4).
|
|
10
|
+
|
|
11
|
+
* Constructors like `arange()`, `linspace()` and `fromiter()` now
|
|
12
|
+
use far less memory when creating large arrays. As an example, a 5 TB
|
|
13
|
+
array of 8-byte floats now uses less than 200 MB of memory instead of
|
|
14
|
+
170 GB previously. See PR #387.
|
|
15
|
+
|
|
16
|
+
* Now, when opening a lazy expression with `blosc2.open()`, and there is
|
|
17
|
+
a missing operand, the open still works, but the dtype and shape
|
|
18
|
+
attributes are None. This is useful for lazy expressions that have
|
|
19
|
+
lost some operands, but you still want to open them for inspection.
|
|
20
|
+
See PR #385.
|
|
21
|
+
|
|
22
|
+
* Added an example of getting a slice out of a C2Array.
|
|
23
|
+
|
|
24
|
+
## Changes from 3.2.1 to 3.3.0
|
|
25
|
+
|
|
26
|
+
* New `blosc2.transpose()` function for transposing 2D NDArray instances
|
|
27
|
+
natively. See PR #375 and docs at
|
|
28
|
+
https://www.blosc.org/python-blosc2/reference/autofiles/operations_with_arrays/blosc2.transpose.html#blosc2.transpose
|
|
29
|
+
Thanks to Ricardo Sales Piquer (@ricardosp4) for the implementation.
|
|
30
|
+
|
|
31
|
+
* New fast path for `NDArray.slice()` for getting slices that are aligned with
|
|
32
|
+
underlying chunks. This is a common operation when working with NDArray
|
|
33
|
+
instances, and now it is up to 40x faster in our benchmarks (see PR #380).
|
|
34
|
+
|
|
35
|
+
* Returned `NDArray` object in `NDarray.slice()` now defaults to original
|
|
36
|
+
codec/clevel/filters. The previous behavior was to use the default
|
|
37
|
+
codec/clevel/filters. See PR #378. Thanks to Luke Shaw (@lshaw8317).
|
|
38
|
+
|
|
39
|
+
* Several English edits in the documentation. Thanks to Luke Shaw (@lshaw8317)
|
|
40
|
+
for his help in this area.
|
|
41
|
+
|
|
3
42
|
## Changes from 3.2.0 to 3.2.1
|
|
4
43
|
|
|
5
44
|
* The array containers are now using the `__array_interface__` protocol to
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"source": [
|
|
26
26
|
"## Operands as arrays of different shape\n",
|
|
27
27
|
"\n",
|
|
28
|
-
"We will now create the operands, using different shape for each of them,
|
|
28
|
+
"We will now create the operands, using a different shape for each of them, in order to flex the broadcasting capabilities of lazy expressions."
|
|
29
29
|
]
|
|
30
30
|
},
|
|
31
31
|
{
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"source": [
|
|
78
78
|
"## Creating, saving and loading a lazy expression\n",
|
|
79
79
|
"\n",
|
|
80
|
-
"First, let's build a string expression that sums the contents of array `a` and
|
|
80
|
+
"First, let's build a string expression that sums the contents of array `a` and performs a multiplication with `b` and `c`. In this context, creating a string version of the expression is critical; otherwise, reductions will be computed eagerly.\n",
|
|
81
81
|
"\n",
|
|
82
82
|
"Let's see how this works."
|
|
83
83
|
]
|
|
@@ -110,13 +110,13 @@
|
|
|
110
110
|
"id": "6226bf8d46ac7c32",
|
|
111
111
|
"metadata": {},
|
|
112
112
|
"source": [
|
|
113
|
-
"In the code above, an expression combining the arrays `a`, `b`, and `c` is expressed in string form: `a.sum() + b ∗ c`. Then, one builds a lazy expression and
|
|
113
|
+
"In the code above, an expression combining the arrays `a`, `b`, and `c` is expressed in string form: `a.sum() + b ∗ c`. Then, one builds a lazy expression and saves it for later. The chosen expression illustrates how operations automatically adapt to the dimensions of the operands via broadcasting.\n",
|
|
114
114
|
"\n",
|
|
115
|
-
"**Broadcasting** allows arrays of different shapes (dimensions) to align for mathematical operations, such as addition or multiplication, without the need to enlarge operands by replicating data. The main idea is that smaller dimensions are \"stretched\" to larger dimensions in such a way that
|
|
115
|
+
"**Broadcasting** allows arrays of different shapes (dimensions) to align for mathematical operations, such as addition or multiplication, without the need to enlarge operands by replicating data. The main idea is that smaller dimensions are \"stretched\" to larger dimensions in such a way that the operation may be performed consistently.\n",
|
|
116
116
|
"\n",
|
|
117
117
|
"<img src=\"images/lazyexpr-broadcast.png\" width=\"1000\"/>\n",
|
|
118
118
|
"\n",
|
|
119
|
-
"See [NumPy docs on broadcasting](https://numpy.org/doc/stable/user/basics.broadcasting.html) for more information.\n",
|
|
119
|
+
"See the [NumPy docs on broadcasting](https://numpy.org/doc/stable/user/basics.broadcasting.html) for more information.\n",
|
|
120
120
|
"\n",
|
|
121
121
|
"Now that we have saved the expression, we can open and compute it to obtain the result. Let's see how this is done."
|
|
122
122
|
]
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"id": "362cfd5eb88b9bb6",
|
|
168
168
|
"metadata": {},
|
|
169
169
|
"source": [
|
|
170
|
-
"As we can observe when printing the lazy expression and its shape, the time required to get the `shape` is significantly shorter. This is because `lazy_expression.shape` does not need to compute all the elements of the expression; instead, it only accesses the **metadata** of the operands, from which it
|
|
170
|
+
"As we can observe when printing the lazy expression and its shape, the time required to get the `shape` is significantly shorter. This is because `lazy_expression.shape` does not need to compute all the elements of the expression; instead, it only accesses the **metadata** of the operands, from which it infers the necessary information about the dimensions and type of the result.\n",
|
|
171
171
|
"\n",
|
|
172
172
|
"Thanks to this metadata, if we know the dimensions of the arrays involved in the operation (such as in the case of `a.sum() + b * c`), Blosc2 can **quickly infer the resulting shape** without performing intensive calculations. This allows for fast access to structural information (like the `shape` and `dtype`) without operating on the actual data.\n",
|
|
173
173
|
"\n",
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
"source": [
|
|
182
182
|
"## Resizing operands of persisted lazy expressions\n",
|
|
183
183
|
"\n",
|
|
184
|
-
"In this section, we will see how persisted lazy expressions automatically adapt to changes in the dimensions and values of the original operands, such as arrays `a` and `b`."
|
|
184
|
+
"In this section, we will see how persisted lazy expressions automatically adapt to changes in the dimensions and values of the original operands, such as the arrays `a` and `b`."
|
|
185
185
|
]
|
|
186
186
|
},
|
|
187
187
|
{
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
"id": "d82492bf518c5a39",
|
|
234
234
|
"metadata": {},
|
|
235
235
|
"source": [
|
|
236
|
-
"After increasing the dimensions of the original arrays by modifying the values of `a` and `b`, the lazy expression is reopened. This step is crucial as it allows us to observe how the computation of the expression adapts to the new dimensions. Upon re-opening the expression, we can check that the results now accurately reflect these changes in the dimensions of the array operands. Moreover, see how obtaining the structural information (the `shape`) of the expression is a quick process, requiring only a fraction of the time it takes for the complete computation.\n",
|
|
236
|
+
"After increasing the dimensions of the original arrays by modifying the values of `a` and `b`, the lazy expression is reopened. This step is crucial as it allows us to observe how the computation of the expression adapts to the new dimensions. Upon re-opening the expression, we can check that the results now accurately reflect these changes in the dimensions of the array operands. Moreover, see how obtaining the updated structural information (the `shape`) of the expression is a quick process, requiring only a fraction of the time it takes for the complete computation.\n",
|
|
237
237
|
"\n",
|
|
238
238
|
"This behavior highlights the ability of lazy expressions to adjust to operands using **metadata**, eliminating the need to re-compute each operation from the beginning. Thanks to this approach, notable flexibility and efficiency are achieved in handling arrays of various shapes and sizes."
|
|
239
239
|
]
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"\n",
|
|
250
250
|
"Also, broadcasting support facilitates working with arrays of different sizes, making the process more powerful and intuitive.\n",
|
|
251
251
|
"\n",
|
|
252
|
-
"Understanding how operations are managed in this context enables developers and data scientists to make the most of reduction and broadcasting capabilities, thereby enhancing the efficiency and effectiveness of their analyses and calculations. The beauty of lazy expressions lies in
|
|
252
|
+
"Understanding how operations are managed in this context enables developers and data scientists to make the most of reduction and broadcasting capabilities, thereby enhancing the efficiency and effectiveness of their analyses and calculations. The beauty of lazy expressions lies in their ability to simplify the complex and empower our creativity!"
|
|
253
253
|
]
|
|
254
254
|
},
|
|
255
255
|
{
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<p style="text-align: center; color: black; background-color: rgba(230, 169, 9, 0.65);">
|
|
8
8
|
<a href="https://github.com/Blosc/python-blosc2/blob/main/RELEASE_NOTES.md"
|
|
9
|
-
style="font-size: 1.5em;">Version 3.
|
|
9
|
+
style="font-size: 1.5em;">Version 3.3.0 released on 2025-04-08!</a>
|
|
10
10
|
<span style="display: inline-block; width: 20px;"></span>
|
|
11
11
|
<span style="font-family: monospace;">pip install blosc2 -U</span>
|
|
12
12
|
</p>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#######################################################################
|
|
2
|
+
# Copyright (c) 2019-present, Blosc Development Team <blosc@blosc.org>
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
#
|
|
5
|
+
# This source code is licensed under a BSD-style license (found in the
|
|
6
|
+
# LICENSE file in the root directory of this source tree)
|
|
7
|
+
#######################################################################
|
|
8
|
+
|
|
9
|
+
# Example for opening and reading a C2Array (remote array)
|
|
10
|
+
|
|
11
|
+
from time import time
|
|
12
|
+
|
|
13
|
+
import numpy as np
|
|
14
|
+
|
|
15
|
+
import blosc2
|
|
16
|
+
|
|
17
|
+
urlbase = "https://cat2.cloud/demo"
|
|
18
|
+
root = "@public"
|
|
19
|
+
|
|
20
|
+
# Access the server
|
|
21
|
+
# urlpath = blosc2.URLPath(f'{root}/examples/ds-1d.b2nd', urlbase)
|
|
22
|
+
# urlpath = blosc2.URLPath(f'{root}/examples/sa-1M.b2nd', urlbase)
|
|
23
|
+
urlpath = blosc2.URLPath(f"{root}/examples/lung-jpeg2000_10x.b2nd", urlbase)
|
|
24
|
+
# urlpath = blosc2.URLPath(f'{root}/examples/uncompressed_lung-jpeg2000_10x.b2nd', urlbase)
|
|
25
|
+
|
|
26
|
+
# Open the remote array
|
|
27
|
+
t0 = time()
|
|
28
|
+
remote_array = blosc2.open(urlpath, mode="r")
|
|
29
|
+
size = np.prod(remote_array.shape) * remote_array.cparams.typesize
|
|
30
|
+
print(f"Time for opening data (HTTP): {time() - t0:.3f}s - file size: {size / 2**10:.2f} KB")
|
|
31
|
+
|
|
32
|
+
# Fetch a slice of the remote array as a numpy array
|
|
33
|
+
t0 = time()
|
|
34
|
+
a = remote_array[5:9]
|
|
35
|
+
print(f"Time for reading data (HTTP): {time() - t0:.3f}s - {a.nbytes / 2**10:.2f} KB")
|
|
36
|
+
|
|
37
|
+
# TODO: Fetch a slice of the remote array as a blosc2.NDArray
|
|
@@ -19,7 +19,7 @@ N = 10_000_000
|
|
|
19
19
|
shape = (N,)
|
|
20
20
|
print(f"*** Creating a blosc2 array with {N:_} elements (shape: {shape}) ***")
|
|
21
21
|
t0 = time()
|
|
22
|
-
a = blosc2.arange(shape=shape, dtype=np.int32)
|
|
22
|
+
a = blosc2.arange(N, shape=shape, dtype=np.int32)
|
|
23
23
|
cratio = a.schunk.nbytes / a.schunk.cbytes
|
|
24
24
|
print(
|
|
25
25
|
f"Time: {time() - t0:.3f} s ({N / (time() - t0) / 1e6:.2f} M/s)"
|
|
@@ -248,6 +248,9 @@ from .ndarray import (
|
|
|
248
248
|
full,
|
|
249
249
|
save,
|
|
250
250
|
matmul,
|
|
251
|
+
permute_dims,
|
|
252
|
+
transpose,
|
|
253
|
+
matrix_transpose,
|
|
251
254
|
)
|
|
252
255
|
|
|
253
256
|
from .c2array import c2context, C2Array, URLPath
|
|
@@ -266,7 +269,6 @@ from .proxy import Proxy, ProxySource, ProxyNDSource, ProxyNDField, SimpleProxy,
|
|
|
266
269
|
|
|
267
270
|
from .schunk import SChunk, open
|
|
268
271
|
|
|
269
|
-
|
|
270
272
|
# Registry for postfilters
|
|
271
273
|
postfilter_funcs = {}
|
|
272
274
|
"""
|