diff --git a/.github/changelog.md b/.github/changelog.md index 7e021f84d..04718547b 100644 --- a/.github/changelog.md +++ b/.github/changelog.md @@ -1,31 +1,31 @@ Release History =============== -[Release 3.12.0rc1](https://github.com/GUDHI/gudhi-devel/releases/tag/tags%2Fgudhi-release-3.12.0rc1) +[Release 3.12.0rc3](https://github.com/GUDHI/gudhi-devel/releases/tag/tags%2Fgudhi-release-3.12.0rc3) ----------- Release date: February 2026 Below is a list of changes made since GUDHI 3.11.0: -- [Čech complex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html) `[Python]` +- [Čech complex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html) `[Python]` - Čech complex persistence scikit-learn like interface provides 2 new classes: - * [CechPersistence](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.CechPersistence) for computing the same persistent homology as the Čech complex, while being significantly smaller, using internally a [DelaunayCechComplex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_ref.html#gudhi.DelaunayCechComplex). - * [WeightedCechPersistence](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.WeightedCechPersistence) for computing the same persistent homology as the Weighted Čech complex, while being significantly smaller, using internally a Weighted version of [AlphaComplex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_ref.html#gudhi.AlphaComplex). + * [CechPersistence](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.CechPersistence) for computing the same persistent homology as the Čech complex, while being significantly smaller, using internally a [DelaunayCechComplex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_ref.html#gudhi.DelaunayCechComplex). + * [WeightedCechPersistence](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.WeightedCechPersistence) for computing the same persistent homology as the Weighted Čech complex, while being significantly smaller, using internally a Weighted version of [AlphaComplex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_ref.html#gudhi.AlphaComplex). -- [Alpha complex dD](https://gudhi.inria.fr/doc/3.12.0rc1/class_gudhi_1_1alpha__complex_1_1_alpha__complex.html) `[C++]` +- [Alpha complex dD](https://gudhi.inria.fr/doc/3.12.0rc3/class_gudhi_1_1alpha__complex_1_1_alpha__complex.html) `[C++]` - **API break:** The simplicial complex for the Alpha complex concept has been changed to `dimension_simplex_range` (that must returns a range of simplices of a given dimension) instead of `skeleton_simplex_range` (that was returning a range of simplices lower or equal to a given dimension) -- [Simplex_tree](https://gudhi.inria.fr/doc/3.12.0rc1/class_gudhi_1_1_simplex__tree.html) `[C++]` +- [Simplex_tree](https://gudhi.inria.fr/doc/3.12.0rc3/class_gudhi_1_1_simplex__tree.html) `[C++]` - A new iterator over the simplices of the simplicial complex that match a given dimension -- [Persistence matrix](https://gudhi.inria.fr/doc/3.12.0rc1/group__persistence__matrix.html) `[C++]` +- [Persistence matrix](https://gudhi.inria.fr/doc/3.12.0rc3/group__persistence__matrix.html) `[C++]` > Matrix API is in a beta version and may change in incompatible ways in the near future. - A new function to insert a maximal cell using swaps. -- [Representations](https://gudhi.inria.fr/python/3.12.0rc1/representations.html) `[Python]` +- [Representations](https://gudhi.inria.fr/python/3.12.0rc3/representations.html) `[Python]` - in metrics, `BottleneckDistance` argument `epsilon` is deprecrated and renamed `e` to be consistent with `bottleneck_distance` and `pairwise_persistence_diagram_distances` - Installation diff --git a/.github/for_maintainers/new_gudhi_version_creation.md b/.github/for_maintainers/new_gudhi_version_creation.md index d094615bd..ec87874d5 100644 --- a/.github/for_maintainers/new_gudhi_version_creation.md +++ b/.github/for_maintainers/new_gudhi_version_creation.md @@ -22,7 +22,7 @@ nor [unlabelled closed PRs](https://github.com/GUDHI/gudhi-devel/pulls?q=is%3Apr ## Version file modification -**Edit the file CMakeGUDHIVersion.txt**, and increment major, minor, or patch version number, in function of the version new delivery. +**Edit the file CMakeGUDHIVersion.txt and the file pyproject.toml**, and increment major, minor, or patch version number, in function of the version new delivery. ```bash # cf. .gitignore - ignore this if it is a fresh clone version rm -rf data/points/COIL_database/lucky_cat.off_dist data/points/COIL_database/lucky_cat.off_sc.dot data/points/KleinBottle5D.off_dist data/points/KleinBottle5D.off_sc.dot data/points/human.off_dist data/points/human.off_sc.off data/points/human.off_sc.txt src/python/test/__pycache__ diff --git a/.github/next_release.md b/.github/next_release.md index 13821a8cd..a4f87ce6e 100644 --- a/.github/next_release.md +++ b/.github/next_release.md @@ -9,24 +9,24 @@ From a user point of view, we recommend to download GUDHI user version (gudhi.3. Below is a list of changes: -- [Čech complex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html) `[Python]` +- [Čech complex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html) `[Python]` - Čech complex persistence scikit-learn like interface provides 2 new classes: - * [CechPersistence](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.CechPersistence) for computing the same persistent homology as the Čech complex, while being significantly smaller, using internally a [DelaunayCechComplex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_ref.html#gudhi.DelaunayCechComplex). - * [WeightedCechPersistence](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.WeightedCechPersistence) for computing the same persistent homology as the Weighted Čech complex, while being significantly smaller, using internally a Weighted version of [AlphaComplex](https://gudhi.inria.fr/python/3.12.0rc1/delaunay_complex_ref.html#gudhi.AlphaComplex). + * [CechPersistence](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.CechPersistence) for computing the same persistent homology as the Čech complex, while being significantly smaller, using internally a [DelaunayCechComplex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_ref.html#gudhi.DelaunayCechComplex). + * [WeightedCechPersistence](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_sklearn_itf_ref.html#gudhi.sklearn.WeightedCechPersistence) for computing the same persistent homology as the Weighted Čech complex, while being significantly smaller, using internally a Weighted version of [AlphaComplex](https://gudhi.inria.fr/python/3.12.0rc3/delaunay_complex_ref.html#gudhi.AlphaComplex). -- [Alpha complex dD](https://gudhi.inria.fr/doc/3.12.0rc1/class_gudhi_1_1alpha__complex_1_1_alpha__complex.html) `[C++]` +- [Alpha complex dD](https://gudhi.inria.fr/doc/3.12.0rc3/class_gudhi_1_1alpha__complex_1_1_alpha__complex.html) `[C++]` - **API break:** The simplicial complex for the Alpha complex concept has been changed to `dimension_simplex_range` (that must returns a range of simplices of a given dimension) instead of `skeleton_simplex_range` (that was returning a range of simplices lower or equal to a given dimension) -- [Simplex_tree](https://gudhi.inria.fr/doc/3.12.0rc1/class_gudhi_1_1_simplex__tree.html) `[C++]` +- [Simplex_tree](https://gudhi.inria.fr/doc/3.12.0rc3/class_gudhi_1_1_simplex__tree.html) `[C++]` - A new iterator over the simplices of the simplicial complex that match a given dimension -- [Persistence matrix](https://gudhi.inria.fr/doc/3.12.0rc1/group__persistence__matrix.html) `[C++]` +- [Persistence matrix](https://gudhi.inria.fr/doc/3.12.0rc3/group__persistence__matrix.html) `[C++]` > Matrix API is in a beta version and may change in incompatible ways in the near future. - A new function to insert a maximal cell using swaps. -- [Representations](https://gudhi.inria.fr/python/3.12.0rc1/representations.html) `[Python]` +- [Representations](https://gudhi.inria.fr/python/3.12.0rc3/representations.html) `[Python]` - in metrics, `BottleneckDistance` argument `epsilon` is deprecrated and renamed `e` to be consistent with `bottleneck_distance` and `pairwise_persistence_diagram_distances` - Installation diff --git a/.github/workflows/pip-build-osx.yml b/.github/workflows/pip-build-osx.yml index c0c3de004..97752a301 100644 --- a/.github/workflows/pip-build-osx.yml +++ b/.github/workflows/pip-build-osx.yml @@ -39,6 +39,10 @@ jobs: ./scripts/build_osx_universal_gmpfr.sh # Now the universal libraries are in $PWD/deps-uni/lib - name: Build python wheel + # Force the use of apple clang - brew clang seems problematic for universal wheel + env: + CXX: /usr/bin/clang++ + CC: /usr/bin/clang run: | export GMP_LIB_DIR=$PWD/deps-uni/lib export GMPXX_LIB_DIR=$PWD/deps-uni/lib diff --git a/.github/workflows/pip-packaging-osx.yml b/.github/workflows/pip-packaging-osx.yml index 8b7e49dba..f3ad513e3 100644 --- a/.github/workflows/pip-packaging-osx.yml +++ b/.github/workflows/pip-packaging-osx.yml @@ -48,6 +48,9 @@ jobs: ./scripts/build_osx_universal_gmpfr.sh # Now the universal libraries are in $PWD/deps-uni/lib - name: Build python wheel + # To workaround an issue on Sonoma where mixing ar from brew install + env: + SKBUILD_CMAKE_DEFINE: "CMAKE_AR=/usr/bin/ar" run: | export GMP_LIB_DIR=$PWD/deps-uni/lib export GMPXX_LIB_DIR=$PWD/deps-uni/lib diff --git a/CMakeGUDHIVersion.txt b/CMakeGUDHIVersion.txt index 1ad0ec15a..ace35bdaa 100644 --- a/CMakeGUDHIVersion.txt +++ b/CMakeGUDHIVersion.txt @@ -2,7 +2,7 @@ set (GUDHI_MAJOR_VERSION 3) set (GUDHI_MINOR_VERSION 12) # GUDHI_PATCH_VERSION can be 'ZaN' for Alpha release, 'ZbN' for Beta release, 'ZrcN' for release candidate or 'Z' for a final release. -set (GUDHI_PATCH_VERSION 0rc2) +set (GUDHI_PATCH_VERSION 0rc3) set(GUDHI_VERSION ${GUDHI_MAJOR_VERSION}.${GUDHI_MINOR_VERSION}.${GUDHI_PATCH_VERSION}) message(STATUS "GUDHI version : ${GUDHI_VERSION}") diff --git a/pyproject.toml b/pyproject.toml index 756ad9154..448e7fd57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,9 +28,9 @@ wheel.packages = [] [project] name = "gudhi" -version = "3.12.0a1" +version = "3.12.0rc3" description = "The Gudhi library is an open source library for Computational Topology and Topological Data Analysis (TDA)." -# readme = "doc/pypi_introduction.inc" +readme = "src/python/doc/pypi_introduction.rst" requires-python = ">=3.10" authors = [{ name = "GUDHI Editorial Board " }] classifiers = [ diff --git a/src/cmake/modules/GUDHI_user_version_target.cmake b/src/cmake/modules/GUDHI_user_version_target.cmake index f1b323782..c18779b3e 100644 --- a/src/cmake/modules/GUDHI_user_version_target.cmake +++ b/src/cmake/modules/GUDHI_user_version_target.cmake @@ -45,8 +45,12 @@ add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/Doxyfile.in ${GUDHI_USER_VERSION_DIR}/Doxyfile.in) -add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E - copy ${CMAKE_SOURCE_DIR}/pyproject.toml ${GUDHI_USER_VERSION_DIR}/pyproject.toml) +# readme is not in the same place in developper and user version +file(READ "${CMAKE_SOURCE_DIR}/pyproject.toml" PYPROJECT_TOML) +string(REGEX REPLACE "readme = \"src/python/doc/pypi_introduction.rst\"" + "readme = \"python/doc/pypi_introduction.rst\"" MODIFIED_PYPROJECT_TOML "${PYPROJECT_TOML}") +file(WRITE "${GUDHI_USER_VERSION_DIR}/pyproject.toml" "${MODIFIED_PYPROJECT_TOML}") + file(GLOB_RECURSE PYTHON_FILES ${CMAKE_SOURCE_DIR}/${GUDHI_PYTHON_PATH}/*) foreach(PYTHON_FILE ${PYTHON_FILES}) string(REPLACE "${CMAKE_SOURCE_DIR}/${GUDHI_PYTHON_PATH}/" "" RELATIVE_PYTHON_FILE ${PYTHON_FILE}) diff --git a/src/python/doc/pypi_introduction.inc b/src/python/doc/pypi_introduction.rst similarity index 100% rename from src/python/doc/pypi_introduction.inc rename to src/python/doc/pypi_introduction.rst