========================================
 Release notes for PyTables 3.10 series
========================================

:Author: PyTables Developers
:Contact: pytables-dev@googlegroups.com

.. py:currentmodule:: tables


Changes from 3.10.1 to 3.10.2
=============================

Improvements
------------

- Wheels for Python v3.13 are now provided (:issue:`1217`).
- Convert HDF5-Blosc sources into Git submodule (:issue:`1197`).
- Complete code re-formatting and improvement of variables naming.
  Now the entire codebase is fully PEP8 compliant and regularly checked in
  CI with `black`_, `flake8`_ and `isort`_ (:issue:`867`).
- The automatic build of the documentation has been re-worked.
- Use `numpy.typing.DTypeLike` over `np.dtype` for parameters.
  Thanks to Joel T. Collins
- Accept IsDescription, dict, `numpy.dtype` as table descriptions.
  Thanks to Joel T. Collins
- Allow multi-dimension `chunkshape` when creating arrays.
  Thanks to Joel T. Collins
- Improve the way `setup.py` finds runtime libs (see :issue:`1219` and
  :issue:`1223`). Thanks to Jason Bacon.

Bugfixes
--------

- Fixed blosc2 search paths.
- Fixed the copy of tables with `createparents=True` (:issue:`1208`).
- Fixed links in `README.rst` (:issue:`1218`). Thanks to David Poznik.
- Fixed the function for writing cpu info to cache file (:issue:`#1222`).
  Thanks to Adrian Altenhoff.
- Fixed an incorrect access to the obsolete `sys.maxint` in `pttree`
  (:issue:`1224`).

.. _black: https://github.com/psf/black
.. _flake8: https://flake8.pycqa.org
.. _isort: https://pycqa.github.io/isort


Changes from 3.10.0 to 3.10.1
=============================

Bugfixes
--------

- Fix version constraints for the ``numpy`` runtime requirements
  (:issue:`1204`).
  For a mistake it didn't allow to use PyTables with ``numpy`` 2.x.
- Fix compatibility with PyPy (:issue:`1205`), Thanks to Michał Górny.


Improvements
------------

- Enforce `numpy >= 2` as build constraint (see discussion in :issue:`1200`).
- Use tuple of plain ints for chunk info coordinates.
  Thanks to Ivan Vilata-i-Balaguer.
- Enable `faulthandler` in `tables.tests.test_all`. Thanks to Eric Larson.


Changes from 3.9.2 to 3.10.0
============================

New features
------------

- New direct chunking API which allows access to raw chunk data skipping the
  HDF5 filter pipeline (cutting overhead, see "Optimization tips" in User's
  Guide), as well as querying chunk information (:PR:`1187`).  Thanks to Ivan
  Vilata and Francesc Alted.  This development was funded by a NumFOCUS grant.

Improvements
------------

- This release is finally compatible with NumPy 2, with wheels being built
  against it so that they are still binary-compatible with NumPy 1
  installations (:PR:`1176`, :PR:`1183`, :PR:`1184`, :PR:`1192`, :PR:`1195`,
  :issue:`1160`, :issue:`1172`, :issue:`1185`).  NumPy >= 1.20 is required
  now.  Thanks to Antonio Valentino, Maximilian Linhoff and Eric Larson.
- Fix compatibility with Python 3.13 (:issue:`1166`), Python >= 3.10 required.
  Cython 3.0.10 is required for building.  Thanks to Antonio Valentino.
- Add type hints to `atom.py` (:PR:`1079`).  This also narrows some types,
  only allowing bytes to be stored in `VLStringAtom` and only str in
  `VLUnicodeAtom`.  Thanks to Nils Carlson.
- Add type hints to (hopefully) the complete PyTables API (:PR:`1119`,
  :PR:`1120`, :PR:`1121`, :PR:`1123`, :PR:`1124`, :PR:`1125`, :PR:`1125`,
  :PR:`1126`, :PR:`1128`, :PR:`1129`, :PR:`1130`, :PR:`1131`, :PR:`1132`,
  :PR:`1133`, :PR:`1135`, :PR:`1136`, :PR:`1137`, :PR:`1138`, :PR:`1139`,
  :PR:`1140`, :PR:`1141`, :PR:`1142`, :PR:`1143`, :PR:`1145`, :PR:`1146`,
  :PR:`1147`, :PR:`1148`, :PR:`1150`, :PR:`1151`, :PR:`1152`).  Thanks to Ko
  Stehner.
- Reduce impact of CPU information gathering by caching in local file
  (:PR:`1091`, :PR:`1118`, :issue:`1081`).  Thanks to Antti Mäkinen and
  Maximilian Linhoff.

Bugfixes
--------

- Fix Windows AMD64 build issues with Bzip2 and C-Blosc2 libraries
  (:issue:`1188`).  Thanks to Antonio Valentino and Eric Larson.
- Fix typos and may other language errors in docstrings (:PR:`1122`).  Thanks
  to Ko Stehner.
- Fix Blosc2 filter not setting `dparams.schunk` on decompression (:PR:`1110`
  and :issue:`1109`).  Thanks to Tom Birch.
- Fix using B2ND optimizations when Blosc2 is not the only enabled filter;
  move Fletcher32 compression to end of pipeline when enabled (:PR:`1191` and
  :issue:`1162`).  Thanks to Ivan Vilata and Alex Laslavic.
- Fix broken internal passing of `createparents` argument in `Leaf.copy`
  (:PR:`1127` and :issue:`1125`).  Thanks to Ko Stehner.
- Re-enable relative paths in `ExternalLink` class (:PR:`1095`).  Thanks to
  erikdl-zeiss.
- Fix using prefix in heavy tests methods of `test_queries` (:PR:`1169`).
  Thanks to Miro Hrončok.
- Fix `TypeError` when computing Blosc2 search paths with missing library
  (:PR:`1188` and :issue:`1100`).  Thanks to martinowitsch, Padraic Calpin and
  Eric Larson.
- Avoid overflow `RuntimeWarning` on NumPy `expectedrows` value (:PR:`1010`).
  Thanks to wony-zheng and Ivan Vilata.

Other changes
-------------

- Add wheels for macOS ARM64 (Apple Silicon), set `MACOSX_DEPLOYMENT_TARGET`
  in Docker (:PR:`1050` and :issue:`1165`).  Thanks to Clemens Brunner,
  Antonio Valentino, Maximilian Linhoff and Eric Larson.
- Avoid illegal hardware instruction under macOS on M1/M2 with Rosetta and
  AMD64 wheels (:PR:`1195` and :issue:`1186`).  Thanks to Antonio Valentino
  and Jon Peirce.
- Produce nightly wheels (with HDF5 1.14.4), also uploaded to Scientific
  Python Anaconda repo.  Wheels are also produced for PR workflows.  Thanks to
  Antonio Valentino and Eric Larson (:PR:`1175`).
- Wheels are no longer linked with the LZO library to avoid licensing issues
  (:PR:`1195`).  Thanks to Antonio Valentino.
- Hash-pin dependencies on wheel workflows to increase build procedure
  security, with support for Dependabot and Renovatebot updates (:PR:`1085`
  and :issue:`1015`).  Thanks to Joyce Brum and Diogo Teles Sant'Anna.
- Hash-pin GitHub action versions in wheels workflow.  Thanks to Antonio
  Valentino.
- Update ReadTheDocs configuration to version 2 (:PR:`1092`).  Thanks to
  Maximilian Linhoff.
- Assorted fixes to b2nd benchmark, with new results.  Thanks to Ivan Vilata.
- Point users to example code to handle "Selection lists cannot have repeated
  values" exception (:PR:`1161` and :issue:`1149`).  Thanks to Joshua Albert.
- Remove unused `getLibrary` C code.  Thanks to Antonio Valentino.
- Update included C-Blosc to 1.21.6 (:PR:`1193`).  Thanks to Ivan Vilata.
- Update included HDF5-Blosc filter to 1.0.1 (:PR:`1194`).  Thanks to Ivan
  Vilata.

Thanks
------

In alphabetical order:

- Alex Laslavic
- Antonio Valentino
- Antti Mäkinen
- Clemens Brunner
- Diogo Teles Sant'Anna
- Eric Larson
- erikdl-zeiss
- Francesc Alted
- Ivan Vilata
- Jon Peirce
- Joshua Albert
- Joyce Brum
- Ko Stehner
- martinowitsch
- Maximilian Linhoff
- Miro Hrončok
- Nils Carlson
- Padraic Calpin
- Tom Birch
- wony-zheng
