From b15d79db136f85d571ee765ddc3b5a4a619dc7b1 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Tue, 11 Nov 2025 17:04:21 -0600 Subject: [PATCH 1/3] COMP: Update RemoteModulePackageAction and Python 3.10+ Update github actions to v5.4.4 and package management for python 3.10 --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 21bd210..fdd6ea2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "itk-isotropicwavelets" -version = "0.7.1" +version = "0.7.2" description = "Steerable Wavelet Pyramid with Isotropic Wavelets and Riesz Functions" readme = "README.rst" license = {file = "LICENSE"} @@ -38,7 +38,7 @@ classifiers = [ "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: Software Development :: Libraries", ] -requires-python = ">=3.9" +requires-python = ">=3.10" dependencies = [ "itk == 5.4.*", ] @@ -51,7 +51,7 @@ Homepage = "https://github.com/InsightSoftwareConsortium/ITKIsotropicWavelets" # The versions of CMake to allow. If CMake is not present on the system or does # not pass this specifier, it will be downloaded via PyPI if possible. An empty # string will disable this check. -cmake.version = ">=3.16.3" +cmake.version = ">=3.22.1" # A list of args to pass to CMake when configuring the project. Setting this in # config or envvar will override toml. See also ``cmake.define``. From c328d8912aee71f45e355f9a9e752986a147aeab Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Wed, 1 Apr 2026 17:58:15 -0500 Subject: [PATCH 2/3] BUG: Fix duplicate SWIG template instantiation in StructureTensor wrapping The VariableSizeMatrix Image wrapping iterated over WRAP_ITK_REAL types but always used double for the matrix element type, producing multiple names for the same underlying type. SWIG -Werror turned the resulting Warning 404 (duplicate template instantiation) into a build failure. Remove the redundant foreach(t) loop for Image and ImageSource wrappings where the type is always VariableSizeMatrix, and use consistent template names across all related wrappings. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build-test-package.yml | 4 ++-- wrapping/itkStructureTensorImageFilter.wrap | 17 ++++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index c9e610e..60fa236 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -12,9 +12,9 @@ on: jobs: cxx-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.3 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.6 python-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.3 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.6 secrets: pypi_password: ${{ secrets.pypi_password }} diff --git a/wrapping/itkStructureTensorImageFilter.wrap b/wrapping/itkStructureTensorImageFilter.wrap index fa70c29..c67236a 100644 --- a/wrapping/itkStructureTensorImageFilter.wrap +++ b/wrapping/itkStructureTensorImageFilter.wrap @@ -2,19 +2,15 @@ itk_wrap_include("itkVariableSizeMatrix.h") itk_wrap_class("itk::Image" POINTER) foreach(d ${ITK_WRAP_IMAGE_DIMS}) - foreach(t ${WRAP_ITK_REAL}) - itk_wrap_template("VSM${ITKM_I${t}}${d}" - "itk::VariableSizeMatrix< ${ITKT_D} >, ${d}") - endforeach() + itk_wrap_template("VSM${d}" + "itk::VariableSizeMatrix< ${ITKT_D} >, ${d}") endforeach() itk_end_wrap_class() itk_wrap_class("itk::ImageSource" POINTER) foreach(d ${ITK_WRAP_IMAGE_DIMS}) - foreach(t ${WRAP_ITK_REAL}) - itk_wrap_template("VSM${ITKM_I${ITKM_${t}}}${d}" - "itk::Image, ${d} >") - endforeach() + itk_wrap_template("IVSM${d}" + "itk::Image, ${d} >") endforeach() itk_end_wrap_class() @@ -29,7 +25,7 @@ itk_end_wrap_class() itk_wrap_class("itk::ImageToImageFilter" POINTER) foreach(d ${ITK_WRAP_IMAGE_DIMS}) foreach(t ${WRAP_ITK_REAL}) - itk_wrap_template("${ITKM_I${t}${d}}VSM${ITKM_I${ITKM_${t}}}${d}" + itk_wrap_template("${ITKM_I${t}${d}}IVSM${d}" "${ITKT_I${t}${d}}, itk::Image, ${d} >") endforeach() endforeach() @@ -38,9 +34,8 @@ itk_end_wrap_class() itk_wrap_class("itk::StructureTensorImageFilter" POINTER) foreach(d ${ITK_WRAP_IMAGE_DIMS}) foreach(t ${WRAP_ITK_REAL}) - itk_wrap_template("${ITKM_I${t}${d}}VSM${ITKM_I${ITKM_${t}}}${d}" + itk_wrap_template("${ITKM_I${t}${d}}IVSM${d}" "${ITKT_I${t}${d}}, itk::Image, ${d} >") endforeach() endforeach() itk_end_wrap_class() - From 3e09431f345b264db9b2f13ba449df9ab5bd6352 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Thu, 2 Apr 2026 21:46:16 -0500 Subject: [PATCH 3/3] COMP: Pin ITK wheel build to v5.4.5 for Python packaging --- .github/workflows/build-test-package.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 60fa236..4676bf0 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -16,5 +16,8 @@ jobs: python-build-workflow: uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.6 + with: + itk-wheel-tag: 'v5.4.5' + itk-python-package-tag: 'v5.4.5' secrets: pypi_password: ${{ secrets.pypi_password }}