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.
Files changed (265) hide show
  1. {blosc2-3.7.2 → blosc2-3.9.0}/.pre-commit-config.yaml +2 -2
  2. {blosc2-3.7.2 → blosc2-3.9.0}/ANNOUNCE.rst +16 -8
  3. {blosc2-3.7.2 → blosc2-3.9.0}/CMakeLists.txt +1 -1
  4. {blosc2-3.7.2 → blosc2-3.9.0}/PKG-INFO +5 -5
  5. {blosc2-3.7.2 → blosc2-3.9.0}/README.rst +2 -2
  6. {blosc2-3.7.2 → blosc2-3.9.0}/README_DEVELOPERS.md +10 -0
  7. {blosc2-3.7.2 → blosc2-3.9.0}/RELEASE_NOTES.md +42 -0
  8. blosc2-3.9.0/ROADMAP-TO-4.0.md +23 -0
  9. {blosc2-3.7.2 → blosc2-3.9.0}/doc/conf.py +127 -1
  10. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/08.schunk-slicing_and_beyond.ipynb +2 -2
  11. {blosc2-3.7.2 → blosc2-3.9.0}/doc/python-blosc2.rst +8 -8
  12. blosc2-3.9.0/doc/reference/additional_funcs.rst +61 -0
  13. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/array_operations.rst +4 -2
  14. blosc2-3.9.0/doc/reference/index_funcs.rst +38 -0
  15. blosc2-3.9.0/doc/reference/linalg.rst +34 -0
  16. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/misc.rst +106 -27
  17. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/ndarray.rst +10 -0
  18. blosc2-3.9.0/doc/reference/ufuncs.rst +231 -0
  19. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/animated_plot.py +1 -1
  20. {blosc2-3.7.2 → blosc2-3.9.0}/pyproject.toml +11 -5
  21. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/__init__.py +245 -6
  22. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/blosc2_ext.pyx +15 -4
  23. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/c2array.py +6 -2
  24. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/core.py +4 -3
  25. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/dict_store.py +1 -1
  26. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/embed_store.py +1 -1
  27. blosc2-3.9.0/src/blosc2/fft.py +54 -0
  28. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/lazyexpr.py +241 -197
  29. blosc2-3.9.0/src/blosc2/linalg.py +820 -0
  30. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/ndarray.py +3977 -2145
  31. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/proxy.py +12 -6
  32. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/schunk.py +10 -5
  33. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/tree_store.py +5 -5
  34. blosc2-3.9.0/src/blosc2/version.py +2 -0
  35. blosc2-3.9.0/tests/array-api-xfails.txt +17 -0
  36. blosc2-3.9.0/tests/ndarray/test_elementwise_funcs.py +180 -0
  37. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_getitem.py +60 -0
  38. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyexpr.py +3 -3
  39. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyudf.py +32 -0
  40. blosc2-3.9.0/tests/ndarray/test_linalg.py +811 -0
  41. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_ndarray.py +89 -9
  42. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy.py +2 -3
  43. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_reductions.py +9 -1
  44. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_resize.py +37 -6
  45. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_setitem.py +6 -0
  46. blosc2-3.9.0/tests/ndarray/test_squeeze.py +33 -0
  47. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_mmap.py +0 -1
  48. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_open.py +1 -1
  49. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_prefilters.py +1 -1
  50. blosc2-3.7.2/doc/reference/lazy_functions.rst +0 -63
  51. blosc2-3.7.2/doc/reference/linear_algebra.rst +0 -17
  52. blosc2-3.7.2/src/blosc2/helpers.py +0 -63
  53. blosc2-3.7.2/src/blosc2/version.py +0 -1
  54. blosc2-3.7.2/tests/ndarray/test_matmul.py +0 -198
  55. blosc2-3.7.2/tests/ndarray/test_squeeze.py +0 -29
  56. blosc2-3.7.2/tests/ndarray/test_transpose.py +0 -235
  57. {blosc2-3.7.2 → blosc2-3.9.0}/.gitignore +0 -0
  58. {blosc2-3.7.2 → blosc2-3.9.0}/.guix/modules/python-blosc2-package.scm +0 -0
  59. {blosc2-3.7.2 → blosc2-3.9.0}/.guix-channel +0 -0
  60. {blosc2-3.7.2 → blosc2-3.9.0}/CONTRIBUTING.rst +0 -0
  61. {blosc2-3.7.2 → blosc2-3.9.0}/LICENSE.txt +0 -0
  62. {blosc2-3.7.2 → blosc2-3.9.0}/RELEASING.rst +0 -0
  63. {blosc2-3.7.2 → blosc2-3.9.0}/code_of_conduct.md +0 -0
  64. {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-favicon_32x32.png +0 -0
  65. {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-favicon_64x64.png +0 -0
  66. {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-logo_128.png +0 -0
  67. {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/blosc-logo_256.png +0 -0
  68. {blosc2-3.7.2 → blosc2-3.9.0}/doc/_static/css/custom.css +0 -0
  69. {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/code-of-conduct.rst +0 -0
  70. {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/contributing.rst +0 -0
  71. {blosc2-3.7.2 → blosc2-3.9.0}/doc/development/index.rst +0 -0
  72. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/index.rst +0 -0
  73. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/installation.rst +0 -0
  74. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/overview.rst +0 -0
  75. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/01.ndarray-basics.ipynb +0 -0
  76. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/02.lazyarray-expressions.ipynb +0 -0
  77. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/03.lazyarray-udf.ipynb +0 -0
  78. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/04.reductions.ipynb +0 -0
  79. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/05.persistent-reductions.ipynb +0 -0
  80. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/06.remote_proxy.ipynb +0 -0
  81. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/07.schunk-basics.ipynb +0 -0
  82. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/09.ucodecs-ufilters.ipynb +0 -0
  83. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/10.prefilters.ipynb +0 -0
  84. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/blosc2-pipeline.png +0 -0
  85. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/blosc2-pipeline.svg +0 -0
  86. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/lazyexpr-broadcast.png +0 -0
  87. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/proxyconnection.png +0 -0
  88. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/3D-cube-plane.png +0 -0
  89. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/3D-cube.png +0 -0
  90. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/memory-access-2D-x.png +0 -0
  91. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/reductions/memory-access-2D-y.png +0 -0
  92. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/remote_proxy.png +0 -0
  93. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/backward.png +0 -0
  94. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/backward.svg +0 -0
  95. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.png +0 -0
  96. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder.svg +0 -0
  97. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.png +0 -0
  98. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/decoder2.svg +0 -0
  99. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.png +0 -0
  100. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder.svg +0 -0
  101. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.png +0 -0
  102. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/encoder2.svg +0 -0
  103. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/forward.png +0 -0
  104. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials/images/ucodecs-filters/forward.svg +0 -0
  105. {blosc2-3.7.2 → blosc2-3.9.0}/doc/getting_started/tutorials.rst +0 -0
  106. {blosc2-3.7.2 → blosc2-3.9.0}/doc/index.rst +0 -0
  107. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/c2array.rst +0 -0
  108. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/classes.rst +0 -0
  109. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/dict_store.rst +0 -0
  110. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/embed_store.rst +0 -0
  111. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/index.rst +0 -0
  112. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/lazyarray.rst +0 -0
  113. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/low_level.rst +0 -0
  114. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/ndfield.rst +0 -0
  115. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxy.rst +0 -0
  116. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxyndsource.rst +0 -0
  117. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/proxysource.rst +0 -0
  118. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/reduction_functions.rst +0 -0
  119. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/save_load.rst +0 -0
  120. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/schunk.rst +0 -0
  121. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/simpleproxy.rst +0 -0
  122. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/storage.rst +0 -0
  123. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/tree_store.rst +0 -0
  124. {blosc2-3.7.2 → blosc2-3.9.0}/doc/reference/utilities.rst +0 -0
  125. {blosc2-3.7.2 → blosc2-3.9.0}/doc/release_notes/index.md +0 -0
  126. {blosc2-3.7.2 → blosc2-3.9.0}/examples/blosc2_hdf5_compression.py +0 -0
  127. {blosc2-3.7.2 → blosc2-3.9.0}/examples/btune.py +0 -0
  128. {blosc2-3.7.2 → blosc2-3.9.0}/examples/c2array-get-slice.py +0 -0
  129. {blosc2-3.7.2 → blosc2-3.9.0}/examples/compress2_decompress2.py +0 -0
  130. {blosc2-3.7.2 → blosc2-3.9.0}/examples/compress_decompress.py +0 -0
  131. {blosc2-3.7.2 → blosc2-3.9.0}/examples/dict-store.py +0 -0
  132. {blosc2-3.7.2 → blosc2-3.9.0}/examples/embed-store.py +0 -0
  133. {blosc2-3.7.2 → blosc2-3.9.0}/examples/filler.py +0 -0
  134. {blosc2-3.7.2 → blosc2-3.9.0}/examples/gil.py +0 -0
  135. {blosc2-3.7.2 → blosc2-3.9.0}/examples/mmap-rw.py +0 -0
  136. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/arange-constructor.py +0 -0
  137. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/asarray_.py +0 -0
  138. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/broadcast_expr.py +0 -0
  139. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/buffer.py +0 -0
  140. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/bytedelta_filter.py +0 -0
  141. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/c2array_expr.py +0 -0
  142. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_expr.py +0 -0
  143. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_fields.py +0 -0
  144. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_udf_numba.py +0 -0
  145. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/compute_where.py +0 -0
  146. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/copy_.py +0 -0
  147. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/empty_.py +0 -0
  148. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/eye-constructor.py +0 -0
  149. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/filter_sort_fields.py +0 -0
  150. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/formats.py +0 -0
  151. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/fromiter-constructor.py +0 -0
  152. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/general_expressions.py +0 -0
  153. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/getitem.py +0 -0
  154. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/iterchunks_info.py +0 -0
  155. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-expr.py +0 -0
  156. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-numpy-funcs.py +0 -0
  157. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/jit-reduc.py +0 -0
  158. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/lazyexpr_where_indexing.py +0 -0
  159. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/linspace-constructor.py +0 -0
  160. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/lists-vs-bools-idx.py +0 -0
  161. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/meta.py +0 -0
  162. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/ndarray_copy.py +0 -0
  163. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/ndmean.py +0 -0
  164. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/persistency.py +0 -0
  165. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/proxy-carray.py +0 -0
  166. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/proxy-ndarray.py +0 -0
  167. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_and_enlarge.py +0 -0
  168. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_expr.py +0 -0
  169. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_expr_save.py +0 -0
  170. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/reduce_string_expr.py +0 -0
  171. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/resize_.py +0 -0
  172. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/work_with_numpy.py +0 -0
  173. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ndarray/zfp_codec.py +0 -0
  174. {blosc2-3.7.2 → blosc2-3.9.0}/examples/pack_array.py +0 -0
  175. {blosc2-3.7.2 → blosc2-3.9.0}/examples/pack_tensor.py +0 -0
  176. {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter1.py +0 -0
  177. {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter2.py +0 -0
  178. {blosc2-3.7.2 → blosc2-3.9.0}/examples/postfilter3.py +0 -0
  179. {blosc2-3.7.2 → blosc2-3.9.0}/examples/prefilter.py +0 -0
  180. {blosc2-3.7.2 → blosc2-3.9.0}/examples/save_tensor.py +0 -0
  181. {blosc2-3.7.2 → blosc2-3.9.0}/examples/schunk.py +0 -0
  182. {blosc2-3.7.2 → blosc2-3.9.0}/examples/schunk_roundtrip.py +0 -0
  183. {blosc2-3.7.2 → blosc2-3.9.0}/examples/tree-store-blog.py +0 -0
  184. {blosc2-3.7.2 → blosc2-3.9.0}/examples/tree-store.py +0 -0
  185. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ucodecs.py +0 -0
  186. {blosc2-3.7.2 → blosc2-3.9.0}/examples/ufilters.py +0 -0
  187. {blosc2-3.7.2 → blosc2-3.9.0}/examples/vlmeta.py +0 -0
  188. {blosc2-3.7.2 → blosc2-3.9.0}/generate_version.py +0 -0
  189. {blosc2-3.7.2 → blosc2-3.9.0}/guix.scm +0 -0
  190. {blosc2-3.7.2 → blosc2-3.9.0}/images/Complete-Write-Read-B2ND.png +0 -0
  191. {blosc2-3.7.2 → blosc2-3.9.0}/images/M1-i386-vs-arm64-pack.png +0 -0
  192. {blosc2-3.7.2 → blosc2-3.9.0}/images/M1-i386-vs-arm64-unpack.png +0 -0
  193. {blosc2-3.7.2 → blosc2-3.9.0}/images/Read-Partial-Slices-B2ND.png +0 -0
  194. {blosc2-3.7.2 → blosc2-3.9.0}/images/b2nd-2level-parts.png +0 -0
  195. {blosc2-3.7.2 → blosc2-3.9.0}/images/eval-expr-full-mem-M2.png +0 -0
  196. {blosc2-3.7.2 → blosc2-3.9.0}/images/eval-expr-scarce-mem-M2.png +0 -0
  197. {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-dask-large.png +0 -0
  198. {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-dask-small.png +0 -0
  199. {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-expr-large.png +0 -0
  200. {blosc2-3.7.2 → blosc2-3.9.0}/images/lazyarray-expr.png +0 -0
  201. {blosc2-3.7.2 → blosc2-3.9.0}/images/linspace-compress.png +0 -0
  202. {blosc2-3.7.2 → blosc2-3.9.0}/images/linspace-decompress.png +0 -0
  203. {blosc2-3.7.2 → blosc2-3.9.0}/images/pack-array-cratios.png +0 -0
  204. {blosc2-3.7.2 → blosc2-3.9.0}/images/reduc-float64-amd.png +0 -0
  205. {blosc2-3.7.2 → blosc2-3.9.0}/images/reduc-float64-log-amd.png +0 -0
  206. {blosc2-3.7.2 → blosc2-3.9.0}/pytest.ini +0 -0
  207. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/exceptions.py +0 -0
  208. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/info.py +0 -0
  209. {blosc2-3.7.2 → blosc2-3.9.0}/src/blosc2/storage.py +0 -0
  210. {blosc2-3.7.2 → blosc2-3.9.0}/tests/conftest.py +0 -0
  211. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_auto_parts.py +0 -0
  212. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_buffer.py +0 -0
  213. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_expr.py +0 -0
  214. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_reductions.py +0 -0
  215. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_c2array_udf.py +0 -0
  216. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_concatenate.py +0 -0
  217. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_copy.py +0 -0
  218. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_empty.py +0 -0
  219. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_evaluate.py +0 -0
  220. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_full.py +0 -0
  221. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_get_slice_nchunks.py +0 -0
  222. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_iterchunks_info.py +0 -0
  223. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_jit.py +0 -0
  224. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lazyexpr_fields.py +0 -0
  225. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_lossy.py +0 -0
  226. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_metalayers.py +0 -0
  227. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_mode.py +0 -0
  228. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_nans.py +0 -0
  229. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_numpy.py +0 -0
  230. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_persistency.py +0 -0
  231. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy_c2array.py +0 -0
  232. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_proxy_expr.py +0 -0
  233. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_slice.py +0 -0
  234. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_struct_dtype.py +0 -0
  235. {blosc2-3.7.2 → blosc2-3.9.0}/tests/ndarray/test_zeros.py +0 -0
  236. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_bytes_array.py +0 -0
  237. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_comp_info.py +0 -0
  238. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compress2.py +0 -0
  239. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compression_parameters.py +0 -0
  240. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_compressors.py +0 -0
  241. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_decompress.py +0 -0
  242. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_dict_store.py +0 -0
  243. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_embed_store.py +0 -0
  244. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_iterchunks.py +0 -0
  245. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_open_c2array.py +0 -0
  246. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_pandas_udf_engine.py +0 -0
  247. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_pathlib.py +0 -0
  248. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_postfilters.py +0 -0
  249. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_proxy_schunk.py +0 -0
  250. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_python_blosc.py +0 -0
  251. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk.py +0 -0
  252. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_constructor.py +0 -0
  253. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_delete.py +0 -0
  254. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_get_slice.py +0 -0
  255. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_get_slice_nchunks.py +0 -0
  256. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_insert.py +0 -0
  257. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_set_slice.py +0 -0
  258. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_schunk_update.py +0 -0
  259. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_storage.py +0 -0
  260. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_tensor.py +0 -0
  261. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_tree_store.py +0 -0
  262. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_ucodecs.py +0 -0
  263. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_ufilters.py +0 -0
  264. {blosc2-3.7.2 → blosc2-3.9.0}/tests/test_vlmeta.py +0 -0
  265. {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: v5.0.0
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.12.7
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.7.2
1
+ Announcing Python-Blosc2 3.8.0
2
2
  ==============================
3
3
 
4
- This is a maintenance release where:
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
- ✅ We have updated the Blosc2 C library to 2.21.1, which fixes a regression
7
- in the build system detected in Fedora and Gentoo.
8
- ✅ We reverted signature of ``TreeStore.__init__(()`` for making benchmarks
9
- to get back to normal performance.
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 96bce728dcdbf41fd86f142ebef9e513f87a7afb # v2.21.1
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.7.2
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 :: 5 - Production/Stable
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 the
181
- in many aspects of the project. His attention to detail is remarkable.
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 the
119
- in many aspects of the project. His attention to detail is remarkable.
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"]
@@ -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 woul work equally well with any Python object supporting the [Buffer Protocol](https://docs.python.org/3/c-api/buffer.html).\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 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 initailised 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."
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.7.1 released on 2025-08-17!</a>
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/LEAPS-INNOV_WP7_D74_v1.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.
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-API <https://www.blosc.org/posts/blosc2-ndim-intro/>`_ available.
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/posts/ndim-reductions/>`_, while maintaining compatibility with NumPy.
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-th" style="font-size: 2em; color: #007acc; margin-bottom: 10px;"></i>
72
- <h3 style="margin-top: 10px; margin-bottom: 15px;">Sparse Data Mastery</h3>
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 and manipulate sparse data with `compact sparse constructs <https://www.blosc.org/docs/Exploring-MilkyWay-SciPy2023.pdf>`_ for optimized `performance <https://www.blosc.org/docs/Exploring-MilkyWay-SciPy2023-paper.pdf>`_.
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://github.com/Blosc/python-blosc2/blob/main/doc/getting_started/tutorials/01.ndarray-basics.ipynb>`_, 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.
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
@@ -4,6 +4,8 @@ Operations with arrays
4
4
  .. toctree::
5
5
  :maxdepth: 1
6
6
 
7
- lazy_functions
7
+ ufuncs
8
8
  reduction_functions
9
- linear_algebra
9
+ linalg
10
+ additional_funcs
11
+ index_funcs
@@ -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