blosc2 3.7.2__tar.gz → 3.9.0__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.7.2 → blosc2-3.9.0}/.pre-commit-config.yaml +2 -2
- {blosc2-3.7.2 → blosc2-3.9.0}/ANNOUNCE.rst +16 -8
- {blosc2-3.7.2 → blosc2-3.9.0}/CMakeLists.txt +1 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/PKG-INFO +5 -5
- {blosc2-3.7.2 → blosc2-3.9.0}/README.rst +2 -2
- {blosc2-3.7.2 → blosc2-3.9.0}/README_DEVELOPERS.md +10 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/RELEASE_NOTES.md +42 -0
- blosc2-3.9.0/ROADMAP-TO-4.0.md +23 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/conf.py +127 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/08.schunk-slicing_and_beyond.ipynb +2 -2
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/python-blosc2.rst +8 -8
- blosc2-3.9.0/doc/reference/additional_funcs.rst +61 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/array_operations.rst +4 -2
- blosc2-3.9.0/doc/reference/index_funcs.rst +38 -0
- blosc2-3.9.0/doc/reference/linalg.rst +34 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/misc.rst +106 -27
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/ndarray.rst +10 -0
- blosc2-3.9.0/doc/reference/ufuncs.rst +231 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/animated_plot.py +1 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/pyproject.toml +11 -5
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/__init__.py +245 -6
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/blosc2_ext.pyx +15 -4
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/c2array.py +6 -2
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/core.py +4 -3
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/dict_store.py +1 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/embed_store.py +1 -1
- blosc2-3.9.0/src/blosc2/fft.py +54 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/lazyexpr.py +241 -197
- blosc2-3.9.0/src/blosc2/linalg.py +820 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/ndarray.py +3977 -2145
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/proxy.py +12 -6
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/schunk.py +10 -5
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/tree_store.py +5 -5
- blosc2-3.9.0/src/blosc2/version.py +2 -0
- blosc2-3.9.0/tests/array-api-xfails.txt +17 -0
- blosc2-3.9.0/tests/ndarray/test_elementwise_funcs.py +180 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_getitem.py +60 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyexpr.py +3 -3
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyudf.py +32 -0
- blosc2-3.9.0/tests/ndarray/test_linalg.py +811 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_ndarray.py +89 -9
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy.py +2 -3
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_reductions.py +9 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_resize.py +37 -6
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_setitem.py +6 -0
- blosc2-3.9.0/tests/ndarray/test_squeeze.py +33 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_mmap.py +0 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_open.py +1 -1
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_prefilters.py +1 -1
- blosc2-3.7.2/doc/reference/lazy_functions.rst +0 -63
- blosc2-3.7.2/doc/reference/linear_algebra.rst +0 -17
- blosc2-3.7.2/src/blosc2/helpers.py +0 -63
- blosc2-3.7.2/src/blosc2/version.py +0 -1
- blosc2-3.7.2/tests/ndarray/test_matmul.py +0 -198
- blosc2-3.7.2/tests/ndarray/test_squeeze.py +0 -29
- blosc2-3.7.2/tests/ndarray/test_transpose.py +0 -235
- {blosc2-3.7.2 → blosc2-3.9.0}/.gitignore +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/.guix/modules/python-blosc2-package.scm +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/.guix-channel +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/CONTRIBUTING.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/LICENSE.txt +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/RELEASING.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/code_of_conduct.md +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-favicon_32x32.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-favicon_64x64.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-logo_128.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-logo_256.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/css/custom.css +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/code-of-conduct.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/contributing.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/index.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/index.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/installation.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/overview.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/01.ndarray-basics.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/02.lazyarray-expressions.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/03.lazyarray-udf.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/04.reductions.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/05.persistent-reductions.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/06.remote_proxy.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/07.schunk-basics.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/09.ucodecs-ufilters.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/10.prefilters.ipynb +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/blosc2-pipeline.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/blosc2-pipeline.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/lazyexpr-broadcast.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/proxyconnection.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/3D-cube-plane.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/3D-cube.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/memory-access-2D-x.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/memory-access-2D-y.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/remote_proxy.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/backward.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/backward.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/forward.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/forward.svg +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/index.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/c2array.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/classes.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/dict_store.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/embed_store.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/index.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/lazyarray.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/low_level.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/ndfield.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxy.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxyndsource.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxysource.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/reduction_functions.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/save_load.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/schunk.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/simpleproxy.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/storage.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/tree_store.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/utilities.rst +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/doc/release_notes/index.md +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/blosc2_hdf5_compression.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/btune.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/c2array-get-slice.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/compress2_decompress2.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/compress_decompress.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/dict-store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/embed-store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/filler.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/gil.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/mmap-rw.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/arange-constructor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/asarray_.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/broadcast_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/buffer.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/bytedelta_filter.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/c2array_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_fields.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_udf_numba.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_where.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/copy_.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/empty_.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/eye-constructor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/filter_sort_fields.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/formats.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/fromiter-constructor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/general_expressions.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/getitem.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/iterchunks_info.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-numpy-funcs.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-reduc.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/lazyexpr_where_indexing.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/linspace-constructor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/lists-vs-bools-idx.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/meta.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/ndarray_copy.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/ndmean.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/persistency.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/proxy-carray.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/proxy-ndarray.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_and_enlarge.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_expr_save.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_string_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/resize_.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/work_with_numpy.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/zfp_codec.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/pack_array.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/pack_tensor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter1.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter2.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter3.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/prefilter.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/save_tensor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/schunk.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/schunk_roundtrip.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/tree-store-blog.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/tree-store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ucodecs.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/ufilters.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/examples/vlmeta.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/generate_version.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/guix.scm +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/Complete-Write-Read-B2ND.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/M1-i386-vs-arm64-pack.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/M1-i386-vs-arm64-unpack.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/Read-Partial-Slices-B2ND.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/b2nd-2level-parts.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/eval-expr-full-mem-M2.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/eval-expr-scarce-mem-M2.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-dask-large.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-dask-small.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-expr-large.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-expr.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/linspace-compress.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/linspace-decompress.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/pack-array-cratios.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/reduc-float64-amd.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/images/reduc-float64-log-amd.png +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/pytest.ini +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/exceptions.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/info.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/storage.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/conftest.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_auto_parts.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_buffer.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_reductions.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_udf.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_concatenate.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_copy.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_empty.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_evaluate.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_full.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_get_slice_nchunks.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_iterchunks_info.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_jit.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyexpr_fields.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lossy.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_metalayers.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_mode.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_nans.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_numpy.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_persistency.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy_c2array.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy_expr.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_slice.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_struct_dtype.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_zeros.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_bytes_array.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_comp_info.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compress2.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compression_parameters.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compressors.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_decompress.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_dict_store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_embed_store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_iterchunks.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_open_c2array.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_pandas_udf_engine.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_pathlib.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_postfilters.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_proxy_schunk.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_python_blosc.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_constructor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_delete.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_get_slice.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_get_slice_nchunks.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_insert.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_set_slice.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_update.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_storage.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_tensor.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_tree_store.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_ucodecs.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_ufilters.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_vlmeta.py +0 -0
- {blosc2-3.7.2 → blosc2-3.9.0}/update_version.py +0 -0
|
@@ -7,7 +7,7 @@ ci:
|
|
|
7
7
|
default_stages: [pre-commit, pre-push]
|
|
8
8
|
repos:
|
|
9
9
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
-
rev:
|
|
10
|
+
rev: v6.0.0
|
|
11
11
|
hooks:
|
|
12
12
|
- id: check-yaml
|
|
13
13
|
- id: end-of-file-fixer
|
|
@@ -16,7 +16,7 @@ repos:
|
|
|
16
16
|
- id: trailing-whitespace
|
|
17
17
|
|
|
18
18
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
19
|
-
rev: v0.
|
|
19
|
+
rev: v0.13.0
|
|
20
20
|
hooks:
|
|
21
21
|
- id: ruff-check
|
|
22
22
|
args: ["--fix", "--show-fixes"]
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
Announcing Python-Blosc2 3.
|
|
1
|
+
Announcing Python-Blosc2 3.8.0
|
|
2
2
|
==============================
|
|
3
3
|
|
|
4
|
-
This is a
|
|
4
|
+
This is a minor version release where we have aimed to make the first steps
|
|
5
|
+
towards complying fully with the array-api standard:
|
|
5
6
|
|
|
6
|
-
✅
|
|
7
|
-
|
|
8
|
-
✅
|
|
9
|
-
|
|
7
|
+
✅ C-Blosc2 internal library updated to latest 2.21.3.
|
|
8
|
+
|
|
9
|
+
✅ numexpr version requirement pushed to 2.3.0 to incorporate
|
|
10
|
+
``round``, ``sign``, ``signbit``, ``copysign``, ``nextafter``, ``hypot``,
|
|
11
|
+
``maximum``, ``minimum``, ``trunc``, ``log2``, ``//`` and bitwise AND/OR/XOR/NOT.
|
|
12
|
+
|
|
13
|
+
✅ Enhanced linear algebra via ``tensordot``, extended ``matmul``, ``vecdot``, ``diagonal``,
|
|
14
|
+
``outer``, as well as ``broadcast_to`` and ``meshgrid``.
|
|
15
|
+
|
|
16
|
+
✅ Roughly 60 attributes and methods for the ``NDArray`` class, as well as functions, have
|
|
17
|
+
been added to increase compliance with the array-api standard, with ufuncs now very well supported.
|
|
18
|
+
|
|
19
|
+
✅ A subtle bug which caused ``arr = blosc2.expand_dims(arr)`` to fail has been fixed.
|
|
10
20
|
|
|
11
|
-
Check our new blog post about ``TreeStore`` usage and performance at:
|
|
12
|
-
https://www.blosc.org/posts/new-treestore-blosc2
|
|
13
21
|
|
|
14
22
|
You can think of Python-Blosc2 3.x as an extension of NumPy/numexpr that:
|
|
15
23
|
|
|
@@ -50,7 +50,7 @@ else()
|
|
|
50
50
|
include(FetchContent)
|
|
51
51
|
FetchContent_Declare(blosc2
|
|
52
52
|
GIT_REPOSITORY https://github.com/Blosc/c-blosc2
|
|
53
|
-
GIT_TAG
|
|
53
|
+
GIT_TAG 0c853a639ba97997e33e29db9eed202459ebc6f0 # v2.21.3
|
|
54
54
|
)
|
|
55
55
|
FetchContent_MakeAvailable(blosc2)
|
|
56
56
|
include_directories("${blosc2_SOURCE_DIR}/include")
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: blosc2
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.9.0
|
|
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>
|
|
7
7
|
License: BSD-3-Clause
|
|
8
|
-
Classifier: Development Status ::
|
|
8
|
+
Classifier: Development Status :: 6 - Mature
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: Intended Audience :: Information Technology
|
|
11
11
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -26,7 +26,7 @@ Requires-Dist: numpy>=1.26
|
|
|
26
26
|
Requires-Dist: ndindex
|
|
27
27
|
Requires-Dist: msgpack
|
|
28
28
|
Requires-Dist: platformdirs
|
|
29
|
-
Requires-Dist: numexpr; platform_machine != "wasm32"
|
|
29
|
+
Requires-Dist: numexpr>=2.13.0; platform_machine != "wasm32"
|
|
30
30
|
Requires-Dist: py-cpuinfo; platform_machine != "wasm32"
|
|
31
31
|
Requires-Dist: requests
|
|
32
32
|
Provides-Extra: dev
|
|
@@ -177,8 +177,8 @@ In addition, other people have participated to the project in different
|
|
|
177
177
|
aspects:
|
|
178
178
|
|
|
179
179
|
- Jan Sellner, contributed the mmap support for NDArray/SChunk objects.
|
|
180
|
-
- Dimitri Papadopoulos, contributed a large bunch of improvements to
|
|
181
|
-
|
|
180
|
+
- Dimitri Papadopoulos, contributed a large bunch of improvements to
|
|
181
|
+
many aspects of the project. His attention to detail is remarkable.
|
|
182
182
|
- And many others that have contributed with bug reports, suggestions and
|
|
183
183
|
improvements.
|
|
184
184
|
|
|
@@ -115,8 +115,8 @@ In addition, other people have participated to the project in different
|
|
|
115
115
|
aspects:
|
|
116
116
|
|
|
117
117
|
- Jan Sellner, contributed the mmap support for NDArray/SChunk objects.
|
|
118
|
-
- Dimitri Papadopoulos, contributed a large bunch of improvements to
|
|
119
|
-
|
|
118
|
+
- Dimitri Papadopoulos, contributed a large bunch of improvements to
|
|
119
|
+
many aspects of the project. His attention to detail is remarkable.
|
|
120
120
|
- And many others that have contributed with bug reports, suggestions and
|
|
121
121
|
improvements.
|
|
122
122
|
|
|
@@ -70,3 +70,13 @@ We are using Sphinx for documentation. You can build the documentation by execu
|
|
|
70
70
|
[You may need to install the `pandoc` package first: https://pandoc.org/installing.html]
|
|
71
71
|
|
|
72
72
|
You will find the documentation in the `../html` directory.
|
|
73
|
+
|
|
74
|
+
## Array API tests compatibility
|
|
75
|
+
|
|
76
|
+
You can test array API compatibility with the `array-api-tests` module.
|
|
77
|
+
Use the `tests/array-api-xfails.txt` to skip the tests that are not supported
|
|
78
|
+
and run pytest from the `array-api-tests` source dir like this:
|
|
79
|
+
|
|
80
|
+
``` bash
|
|
81
|
+
ARRAY_API_TESTS_MODULE=blosc2 pytest array_api_tests --xfails-file ${BLOSC2_DIR}/tests/array-api-xfails.txt -xs
|
|
82
|
+
```
|
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Release notes
|
|
2
2
|
|
|
3
|
+
## Changes from 3.9.0 to 3.9.1
|
|
4
|
+
|
|
5
|
+
XXX version-specific blurb XXX
|
|
6
|
+
|
|
7
|
+
## Changes from 3.8.0 to 3.9.0
|
|
8
|
+
Most changes come from PR #467 relating to array-api compliance.
|
|
9
|
+
|
|
10
|
+
* C-Blosc2 internal library updated to latest 2.21.3, increasing MAX_DIMS from 8 to 16
|
|
11
|
+
|
|
12
|
+
* numexpr version requirement pushed to 2.13.0 to incorporate
|
|
13
|
+
``round``, ``sign``, ``signbit``, ``copysign``, ``nextafter``, ``hypot``,
|
|
14
|
+
``maximum``, ``minimum``, ``trunc``, ``log2`` functions, as well as allow
|
|
15
|
+
integer outputs for certain functions when integr arguments are passed.
|
|
16
|
+
We also add floor division (``//``) and full dual bitwise (logical) AND, OR, XOR, NOT
|
|
17
|
+
support for integer (bool) arrays.
|
|
18
|
+
|
|
19
|
+
* Extended linear algebra functionality, offering generalised matrix multiplication
|
|
20
|
+
for arrays of arbitrary dimension via ``tensordot`` and an improved ``matmul``. In addition,
|
|
21
|
+
introduced ``vecdot``, ``diagonal`` and ``outer``, as well as useful indexing and associated functions such as ``take``, ``take_along_axis``, ``meshgrid`` and ``broadcast_to``.
|
|
22
|
+
|
|
23
|
+
* Added many ufuncs and methods (around 60) to ``NDArray`` to bring the library into further alignment with the array-api. Introduced a chunkwise lazyudf paradigm which is very powerful in order to implement ``clip`` and ``logaddexp``.
|
|
24
|
+
|
|
25
|
+
* Fixed a subtle but important bug for ``expand_dims`` (PR #479, PR #483) relating to reference counting for views.
|
|
26
|
+
|
|
27
|
+
## Changes from 3.7.2 to 3.8.0
|
|
28
|
+
|
|
29
|
+
* C-Blosc2 internal library updated to latest 2.21.2.
|
|
30
|
+
|
|
31
|
+
* numexpr version requirement pushed to 2.12.1 to incorporate
|
|
32
|
+
``isnan``, ``isfinite``, ``isinf`` functions.
|
|
33
|
+
|
|
34
|
+
* Indexing is now supported extensively and reasonably optimally for slices
|
|
35
|
+
with negative steps and general boolean arrays, with both get/setitem having
|
|
36
|
+
equal functionality. In PR #459 we extended the 1D fast path to general N-D,
|
|
37
|
+
with consequent speedups. In PR # we allowed fancy indexing and general slicing
|
|
38
|
+
with negative steps for set and getitem, with a memory-optimised path for setitem.
|
|
39
|
+
|
|
40
|
+
* Various attributes and methods for the ``NDArray`` class, as well as functions, have
|
|
41
|
+
been added to increase compliance with the array-api standard. In addition,
|
|
42
|
+
linspace and arange functions have been made more numerically stable and now strictly
|
|
43
|
+
comply even with difficult floating-point edge cases.
|
|
44
|
+
|
|
3
45
|
## Changes from 3.7.1 to 3.7.2
|
|
4
46
|
|
|
5
47
|
* C-Blosc2 internal library updated to latest 2.21.1.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
List of desired features for a 4.0 release
|
|
2
|
+
------------------------------------------
|
|
3
|
+
|
|
4
|
+
* First and foremost, we would like to have at least of basic implementation of the [array API](https://data-apis.org/array-api). This will require a lot of low-level work on the basic NDArray container to make indexing to work as close as the standard.
|
|
5
|
+
|
|
6
|
+
* Have a completely specified format for the `TreeStore` and `DictStore`. The format should allow to have containers either in memory or on disk. Also, it should allow a sparse or contiguous storage. The user will be able to specify these properties by following the same conventions than for NDArray objects (alas, `urlpath` and `contiguous` params).
|
|
7
|
+
|
|
8
|
+
* New `.save()` and `.to_cframe()` methods should be implemented to convert from in-memory representations to on disk and vice-versa.
|
|
9
|
+
* The format for `TreeStore` and `DictStore` will initially be defined at Python level, and documented only in the Python-Blosc2 repository. An implementation in the C library is desirable, but not mandatory at this time.
|
|
10
|
+
|
|
11
|
+
* A new `Table` object should be implemented based on the `TreeStore` class (a subclass?), with a label ('table'?) in metalayers indicating that the contents of the tree can be interpreted as regular table. As `TreeStore` is hierarchical, a subtree can also be interpreted as a `Table` if there a label in the metalayer of the subtree (or group in HDF5 parlance); that can lead to tables than can have different subtables embedded. It is not clear yet if should impose the same number of rows for all the columns.
|
|
12
|
+
|
|
13
|
+
The constructor for the `Table` object should take some parameters to specify properties:
|
|
14
|
+
|
|
15
|
+
* `columnar`: True or False. If True, every column will be stored in a different NDArray object. If False, the columns will be stored in the same NDArray object, with a compound dtype. In principle, one should be able to create tables that are hybrid between column and row wise, but at this point it is not clear what is the best way to do that.
|
|
16
|
+
|
|
17
|
+
`Table` should support at least these methods:
|
|
18
|
+
|
|
19
|
+
* `.__getitem__()` and `.__setitem__()` so that values can be get and set.
|
|
20
|
+
* `.append()` for appending (multi-) rows of data for all columns in one go.
|
|
21
|
+
* `.__iter__()` for easy and fast iteration over rows.
|
|
22
|
+
* `.where()`: an iterator for queying with conditions that are evaluated with the internal compute engine.
|
|
23
|
+
* `.index()` for indexing a column and getting better performance in queries (desirable, but optional for 4.0).
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
# -- Path setup --------------------------------------------------------------
|
|
2
|
+
import inspect
|
|
2
3
|
import os
|
|
3
4
|
import sys
|
|
4
5
|
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
5
8
|
import blosc2
|
|
6
9
|
|
|
10
|
+
|
|
11
|
+
def genbody(f, func_list, lib="blosc2"):
|
|
12
|
+
for func in func_list:
|
|
13
|
+
f.write(f" {func}\n")
|
|
14
|
+
|
|
15
|
+
f.write("\n\n\n")
|
|
16
|
+
for func in func_list:
|
|
17
|
+
f.write(f".. autofunction:: {lib}.{func}\n\n")
|
|
18
|
+
|
|
19
|
+
|
|
7
20
|
sys.path.insert(0, os.path.abspath(os.path.dirname(blosc2.__file__)))
|
|
8
21
|
|
|
9
22
|
project = "Python-Blosc2"
|
|
@@ -69,6 +82,120 @@ exclude_patterns = ["_build", ".DS_Store", "**.ipynb_checkpoints"]
|
|
|
69
82
|
html_show_sourcelink = False
|
|
70
83
|
|
|
71
84
|
autosummary_generate_overwrite = False
|
|
85
|
+
autosummary_generate = True
|
|
86
|
+
|
|
87
|
+
# GENERATE ufuncs.rst
|
|
88
|
+
blosc2_ufuncs = []
|
|
89
|
+
for name, obj in vars(np).items():
|
|
90
|
+
if isinstance(obj, np.ufunc) and hasattr(blosc2, name):
|
|
91
|
+
blosc2_ufuncs.append(name)
|
|
92
|
+
|
|
93
|
+
with open("reference/ufuncs.rst", "w") as f:
|
|
94
|
+
f.write(
|
|
95
|
+
"""Universal Functions (`ufuncs`)
|
|
96
|
+
------------------------------
|
|
97
|
+
|
|
98
|
+
The following elementwise functions can be used for computing with any of :ref:`NDArray <NDArray>`, :ref:`C2Array <C2Array>`, :ref:`NDField <NDField>` and :ref:`LazyExpr <LazyExpr>`.
|
|
99
|
+
|
|
100
|
+
Their result is always a :ref:`LazyExpr` instance, which can be evaluated (with ``compute`` or ``__getitem__``) to get the actual values of the computation.
|
|
101
|
+
|
|
102
|
+
Note: The functions ``conj``, ``real``, ``imag``, ``contains``, ``where`` are not technically ufuncs.
|
|
103
|
+
|
|
104
|
+
.. currentmodule:: blosc2
|
|
105
|
+
|
|
106
|
+
.. autosummary::
|
|
107
|
+
|
|
108
|
+
"""
|
|
109
|
+
)
|
|
110
|
+
genbody(f, blosc2_ufuncs)
|
|
111
|
+
|
|
112
|
+
# GENERATE additional_funcs.rst
|
|
113
|
+
blosc2_addfuncs = sorted(["conj", "real", "imag", "contains", "where", "clip", "round"])
|
|
114
|
+
blosc2_dtypefuncs = sorted(["astype", "can_cast", "result_type", "isdtype"])
|
|
115
|
+
|
|
116
|
+
with open("reference/additional_funcs.rst", "w") as f:
|
|
117
|
+
f.write(
|
|
118
|
+
"""Additional Functions and Type Utilities
|
|
119
|
+
=======================================
|
|
120
|
+
|
|
121
|
+
Functions
|
|
122
|
+
---------
|
|
123
|
+
|
|
124
|
+
The following functions can also be used for computing with any of :ref:`NDArray <NDArray>`, :ref:`C2Array <C2Array>`, :ref:`NDField <NDField>` and :ref:`LazyExpr <LazyExpr>`.
|
|
125
|
+
|
|
126
|
+
Their result is typically a :ref:`LazyExpr` instance, which can be evaluated (with ``compute`` or ``__getitem__``) to get the actual values of the computation.
|
|
127
|
+
|
|
128
|
+
.. currentmodule:: blosc2
|
|
129
|
+
|
|
130
|
+
.. autosummary::
|
|
131
|
+
|
|
132
|
+
"""
|
|
133
|
+
)
|
|
134
|
+
genbody(f, blosc2_addfuncs)
|
|
135
|
+
f.write(
|
|
136
|
+
"""Type Utilities
|
|
137
|
+
--------------
|
|
138
|
+
|
|
139
|
+
The following functions are useful for working with datatypes.
|
|
140
|
+
|
|
141
|
+
.. currentmodule:: blosc2
|
|
142
|
+
|
|
143
|
+
.. autosummary::
|
|
144
|
+
|
|
145
|
+
"""
|
|
146
|
+
)
|
|
147
|
+
genbody(f, blosc2_dtypefuncs)
|
|
148
|
+
|
|
149
|
+
# GENERATE index_funcs.rst
|
|
150
|
+
blosc2_indexfuncs = sorted(
|
|
151
|
+
[
|
|
152
|
+
"count_nonzero",
|
|
153
|
+
"squeeze",
|
|
154
|
+
"expand_dims",
|
|
155
|
+
"sort",
|
|
156
|
+
"take",
|
|
157
|
+
"take_along_axis",
|
|
158
|
+
"broadcast_to",
|
|
159
|
+
"meshgrid",
|
|
160
|
+
"indices",
|
|
161
|
+
]
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
with open("reference/index_funcs.rst", "w") as f:
|
|
165
|
+
f.write(
|
|
166
|
+
"""Indexing Functions and Utilities
|
|
167
|
+
=======================================
|
|
168
|
+
|
|
169
|
+
The following functions are useful for performing indexing and oter associated operations.
|
|
170
|
+
|
|
171
|
+
.. currentmodule:: blosc2
|
|
172
|
+
|
|
173
|
+
.. autosummary::
|
|
174
|
+
|
|
175
|
+
"""
|
|
176
|
+
)
|
|
177
|
+
genbody(f, blosc2_indexfuncs)
|
|
178
|
+
|
|
179
|
+
# GENERATE linear_algebra.rst
|
|
180
|
+
linalg_funcs = [
|
|
181
|
+
name
|
|
182
|
+
for name, obj in vars(blosc2.linalg).items()
|
|
183
|
+
if (inspect.isfunction(obj) and getattr(obj, "__doc__", None))
|
|
184
|
+
]
|
|
185
|
+
|
|
186
|
+
with open("reference/linalg.rst", "w") as f:
|
|
187
|
+
f.write(
|
|
188
|
+
"""Linear Algebra
|
|
189
|
+
-----------------
|
|
190
|
+
The following functions can be used for computing linear algebra operations with :ref:`NDArray <NDArray>`.
|
|
191
|
+
|
|
192
|
+
.. currentmodule:: blosc2.linalg
|
|
193
|
+
|
|
194
|
+
.. autosummary::
|
|
195
|
+
|
|
196
|
+
"""
|
|
197
|
+
)
|
|
198
|
+
genbody(f, linalg_funcs, "blosc2.linalg")
|
|
72
199
|
|
|
73
200
|
hidden = "_ignore_multiple_size"
|
|
74
201
|
|
|
@@ -81,7 +208,6 @@ def linkcode_resolve(domain, info):
|
|
|
81
208
|
|
|
82
209
|
import importlib
|
|
83
210
|
import inspect
|
|
84
|
-
import os
|
|
85
211
|
|
|
86
212
|
# Modify this to point to your package
|
|
87
213
|
module_name = info["module"]
|
{blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/08.schunk-slicing_and_beyond.ipynb
RENAMED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"source": [
|
|
7
7
|
"# Slicing, extending and serializing with SChunks\n",
|
|
8
8
|
"\n",
|
|
9
|
-
"The usual way to store generic binary data in python-blosc2 is through a `SChunk` (super-chunk) object, where the data is split into chunks of the same size, which we studied in the last tutorial. We saw how to retrieve, update or append data in the form of chunks. In fact, one can work with the individual multi-byte items composing the data (and not the bytes directly), using native SChunk methods - such operations will be the subject of this tutorial. We will use NumPy arrays as data sources, but everything we're going to do
|
|
9
|
+
"The usual way to store generic binary data in python-blosc2 is through a `SChunk` (super-chunk) object, where the data is split into chunks of the same size, which we studied in the last tutorial. We saw how to retrieve, update or append data in the form of chunks. In fact, one can work with the individual multi-byte items composing the data (and not the bytes directly), using native SChunk methods - such operations will be the subject of this tutorial. We will use NumPy arrays as data sources, but everything we're going to do would work equally well with any Python object supporting the [Buffer Protocol](https://docs.python.org/3/c-api/buffer.html).\n",
|
|
10
10
|
"\n",
|
|
11
11
|
"First, we create our own `SChunk` instance; this time, let's fill it with data upon creation."
|
|
12
12
|
]
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
{
|
|
94
94
|
"cell_type": "markdown",
|
|
95
95
|
"metadata": {},
|
|
96
|
-
"source": "As you can see, the data is returned as a bytes object. If we want to get a more meaningful container instead, we can use `get_slice`. This method requires an
|
|
96
|
+
"source": "As you can see, the data is returned as a bytes object. If we want to get a more meaningful container instead, we can use `get_slice`. This method requires an initialised buffer into which to load the bytes, and one may pass any Python object (supporting the Buffer Protocol) as the `out` param to fill it with the data. In this case we will use a NumPy array container."
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"cell_type": "code",
|
|
@@ -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.8.0 released on 2025-09-11!</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>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<h3 style="margin-top: 10px; margin-bottom: 15px;">Top-Notch Compression</h3>
|
|
37
37
|
</div>
|
|
38
38
|
|
|
39
|
-
`Combine advanced codecs and filters <https://blosc.org/docs/
|
|
39
|
+
`Combine advanced codecs and filters <https://www.blosc.org/docs/2025-EuroSciPy-Blosc2.pdf>`_ for efficient `lossless <https://www.blosc.org/posts/bytedelta-enhance-compression-toolset/>`_ and `lossy <https://www.blosc.org/posts/blosc2-lossy-compression/>`_ compression to reduce storage space while maintaining high performance.
|
|
40
40
|
|
|
41
41
|
.. grid-item-card::
|
|
42
42
|
:class-card: intro-card text-center no-border
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<h3 style="margin-top: 10px; margin-bottom: 15px;">Full-Fledged NDArrays</h3>
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
|
-
`NDArray objects <https://www.blosc.org/python-blosc2/getting_started/tutorials/01.ndarray-basics.html>`_ enable efficient storage and manipulation of arbitrarily large N-dimensional datasets, following the `Array API <https://data-apis.org/array-api/latest/>`_ standard, with an additional `C
|
|
51
|
+
`NDArray objects <https://www.blosc.org/python-blosc2/getting_started/tutorials/01.ndarray-basics.html>`_ enable efficient storage and manipulation of arbitrarily large N-dimensional datasets, following the `Array API <https://data-apis.org/array-api/latest/>`_ standard, with an additional `C API <https://www.blosc.org/posts/blosc2-ndim-intro/>`_.
|
|
52
52
|
|
|
53
53
|
.. grid-item-card::
|
|
54
54
|
:class-card: intro-card text-center no-border
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
<h3 style="margin-top: 10px; margin-bottom: 15px;">Compute Engine Inside</h3>
|
|
61
61
|
</div>
|
|
62
62
|
|
|
63
|
-
Combines compression with high-speed computation of complex `mathematical expressions <https://ironarray.io/blog/blosc2-eval-expressions>`_ and `reductions <https://www.blosc.org/
|
|
63
|
+
Combines compression with high-speed computation of complex `mathematical expressions <https://ironarray.io/blog/blosc2-eval-expressions>`_ and `reductions <https://www.blosc.org/python-blosc2/getting_started/tutorials/04.reductions.html>`_, while maintaining compatibility with NumPy.
|
|
64
64
|
|
|
65
65
|
.. grid-item-card::
|
|
66
66
|
:class-card: intro-card text-center no-border
|
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
.. raw:: html
|
|
69
69
|
|
|
70
70
|
<div style="text-align: center;">
|
|
71
|
-
<i class="fas fa-
|
|
72
|
-
<h3 style="margin-top: 10px; margin-bottom: 15px;">
|
|
71
|
+
<i class="fas fa-sitemap" style="font-size: 2em; color: #007acc; margin-bottom: 10px;"></i>
|
|
72
|
+
<h3 style="margin-top: 10px; margin-bottom: 15px;">Hierarchical Structures</h3>
|
|
73
73
|
</div>
|
|
74
74
|
|
|
75
|
-
Efficiently store
|
|
75
|
+
Efficiently store data hierarchically with the `TreeStore class <https://www.blosc.org/python-blosc2/reference/tree_store.html#blosc2.TreeStore>`_ for convenience and optimized `performance <https://www.blosc.org/posts/new-treestore-blosc2/>`_.
|
|
76
76
|
|
|
77
77
|
.. grid-item-card::
|
|
78
78
|
:class-card: intro-card text-center no-border
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
<h3 style="margin-top: 10px; margin-bottom: 15px;">Flexible Storage</h3>
|
|
85
85
|
</div>
|
|
86
86
|
|
|
87
|
-
Access data from anywhere: read/write in `memory or disk <https://
|
|
87
|
+
Access data from anywhere: read/write in `memory or disk <https://www.blosc.org/docs/Exploring-MilkyWay-SciPy2023-paper.pdf>`_, stream from `the network <https://www.blosc.org/python-blosc2/reference/c2array.html>`_, or use `memory-mapped files <https://www.blosc.org/python-blosc2/reference/storage.html#blosc2.Storage.params.mmap_mode>`_ for high-performance I/O.
|
|
88
88
|
|
|
89
89
|
.. grid-item-card::
|
|
90
90
|
:class-card: intro-card text-center no-border
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Additional Functions and Type Utilities
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
Functions
|
|
5
|
+
---------
|
|
6
|
+
|
|
7
|
+
The following functions can also be used for computing with any of :ref:`NDArray <NDArray>`, :ref:`C2Array <C2Array>`, :ref:`NDField <NDField>` and :ref:`LazyExpr <LazyExpr>`.
|
|
8
|
+
|
|
9
|
+
Their result is typically a :ref:`LazyExpr` instance, which can be evaluated (with ``compute`` or ``__getitem__``) to get the actual values of the computation.
|
|
10
|
+
|
|
11
|
+
.. currentmodule:: blosc2
|
|
12
|
+
|
|
13
|
+
.. autosummary::
|
|
14
|
+
|
|
15
|
+
clip
|
|
16
|
+
conj
|
|
17
|
+
contains
|
|
18
|
+
imag
|
|
19
|
+
real
|
|
20
|
+
round
|
|
21
|
+
where
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
.. autofunction:: blosc2.clip
|
|
26
|
+
|
|
27
|
+
.. autofunction:: blosc2.conj
|
|
28
|
+
|
|
29
|
+
.. autofunction:: blosc2.contains
|
|
30
|
+
|
|
31
|
+
.. autofunction:: blosc2.imag
|
|
32
|
+
|
|
33
|
+
.. autofunction:: blosc2.real
|
|
34
|
+
|
|
35
|
+
.. autofunction:: blosc2.round
|
|
36
|
+
|
|
37
|
+
.. autofunction:: blosc2.where
|
|
38
|
+
|
|
39
|
+
Type Utilities
|
|
40
|
+
--------------
|
|
41
|
+
|
|
42
|
+
The following functions are useful for working with datatypes.
|
|
43
|
+
|
|
44
|
+
.. currentmodule:: blosc2
|
|
45
|
+
|
|
46
|
+
.. autosummary::
|
|
47
|
+
|
|
48
|
+
astype
|
|
49
|
+
can_cast
|
|
50
|
+
isdtype
|
|
51
|
+
result_type
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
.. autofunction:: blosc2.astype
|
|
56
|
+
|
|
57
|
+
.. autofunction:: blosc2.can_cast
|
|
58
|
+
|
|
59
|
+
.. autofunction:: blosc2.isdtype
|
|
60
|
+
|
|
61
|
+
.. autofunction:: blosc2.result_type
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Indexing Functions and Utilities
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
The following functions are useful for performing indexing and oter associated operations.
|
|
5
|
+
|
|
6
|
+
.. currentmodule:: blosc2
|
|
7
|
+
|
|
8
|
+
.. autosummary::
|
|
9
|
+
|
|
10
|
+
broadcast_to
|
|
11
|
+
count_nonzero
|
|
12
|
+
expand_dims
|
|
13
|
+
indices
|
|
14
|
+
meshgrid
|
|
15
|
+
sort
|
|
16
|
+
squeeze
|
|
17
|
+
take
|
|
18
|
+
take_along_axis
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
.. autofunction:: blosc2.broadcast_to
|
|
23
|
+
|
|
24
|
+
.. autofunction:: blosc2.count_nonzero
|
|
25
|
+
|
|
26
|
+
.. autofunction:: blosc2.expand_dims
|
|
27
|
+
|
|
28
|
+
.. autofunction:: blosc2.indices
|
|
29
|
+
|
|
30
|
+
.. autofunction:: blosc2.meshgrid
|
|
31
|
+
|
|
32
|
+
.. autofunction:: blosc2.sort
|
|
33
|
+
|
|
34
|
+
.. autofunction:: blosc2.squeeze
|
|
35
|
+
|
|
36
|
+
.. autofunction:: blosc2.take
|
|
37
|
+
|
|
38
|
+
.. autofunction:: blosc2.take_along_axis
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Linear Algebra
|
|
2
|
+
-----------------
|
|
3
|
+
The following functions can be used for computing linear algebra operations with :ref:`NDArray <NDArray>`.
|
|
4
|
+
|
|
5
|
+
.. currentmodule:: blosc2.linalg
|
|
6
|
+
|
|
7
|
+
.. autosummary::
|
|
8
|
+
|
|
9
|
+
matmul
|
|
10
|
+
tensordot
|
|
11
|
+
vecdot
|
|
12
|
+
permute_dims
|
|
13
|
+
transpose
|
|
14
|
+
matrix_transpose
|
|
15
|
+
diagonal
|
|
16
|
+
outer
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
.. autofunction:: blosc2.linalg.matmul
|
|
21
|
+
|
|
22
|
+
.. autofunction:: blosc2.linalg.tensordot
|
|
23
|
+
|
|
24
|
+
.. autofunction:: blosc2.linalg.vecdot
|
|
25
|
+
|
|
26
|
+
.. autofunction:: blosc2.linalg.permute_dims
|
|
27
|
+
|
|
28
|
+
.. autofunction:: blosc2.linalg.transpose
|
|
29
|
+
|
|
30
|
+
.. autofunction:: blosc2.linalg.matrix_transpose
|
|
31
|
+
|
|
32
|
+
.. autofunction:: blosc2.linalg.diagonal
|
|
33
|
+
|
|
34
|
+
.. autofunction:: blosc2.linalg.outer
|