Skip to content

COMP: Update CI best practices and Python 3.10+#48

Open
hjmjohnson wants to merge 6 commits intomainfrom
update-ci-best-practices
Open

COMP: Update CI best practices and Python 3.10+#48
hjmjohnson wants to merge 6 commits intomainfrom
update-ci-best-practices

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

Update clang-format linter, actions/checkout@v5, Python 3.10+, fix @ghcr-mirror refs.

@hjmjohnson hjmjohnson force-pushed the update-ci-best-practices branch 3 times, most recently from 3fb1ce4 to 2b66031 Compare April 3, 2026 23:05
@hjmjohnson hjmjohnson force-pushed the update-ci-best-practices branch from 9b2e930 to 8bedb82 Compare April 10, 2026 23:11
hjmjohnson and others added 5 commits April 13, 2026 05:51
Cherry-picked and squashed from Hans Johnson's unmerged branches:
  - af03b1f  STYLE: Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassMacro
  - f889ad3  STYLE: Replace itkStaticConstMacro with static constexpr
  - 559674c  STYLE: CoordRepType -> CoordinateType code readability
  - 53b0943  COMP: Remove inclusion of .hxx files as headers
  - d1aa10d  STYLE: Prefer itk::Math::abs for consistency

Co-Authored-By: Hans J. Johnson <hans-johnson@uiowa.edu>
…ython 3.10+

- Update clang-format linter from @master to @main with checkout@v5
- Bump reusable workflow from v5.4.0 to v5.4.6 (fixes macos-13
  deprecation, adds GHCR dockcross pre-pull with retry)
- Update minimum Python version to 3.10+
- Apply clang-format to match ITK coding style

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add the module's include/ directory to the src/ executables' include
path so that itkVariationalRegistrationMultiResolutionFilter.h and
other module headers are found during the CTest dashboard build.

Also fix the nodiscard warning on TransformPhysicalPointToContinuousIndex
in itkContinuousBorderWarpImageFilter.hxx by throwing an exception when
the physical point falls outside the image domain.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The wrapping files for VariationalDiffeomorphicRegistrationFilter and
VariationalSymmetricDiffeomorphicRegistrationFilter had a typo in
their filenames (Diffeomophic - missing the r). The non-symmetric
variant also had the typo in the itk_wrap_class() class name,
causing castxml to emit fatal error: file not found during the
Python wheel build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@hjmjohnson hjmjohnson force-pushed the update-ci-best-practices branch from 15ad9f0 to d876712 Compare April 13, 2026 10:52
Two pre-existing issues exposed by working CI:

1. src/ executables fail to link against ITK shared libraries in
   external-module builds. The VariationalRegistration_LIBRARIES
   variable contains target names but the external-module CMake
   context doesn't fully resolve their link dependencies. Adding
   ITK_LIBRARIES (set by find_package(ITK)) provides the complete
   transitive link set:

     undefined reference to itk::DataObject::GetUpdateMTime()
     undefined reference to itk::DataObject::DataHasBeenGenerated()
     undefined reference to typeinfo for itk::ExceptionObject

2. Seven .wrap files pass the wrong number of template arguments:
   - Regularizer, DiffusionRegularizer, ElasticRegularizer,
     GaussianRegularizer, CurvatureRegularizer: all take 1 template
     param (TDisplacementField) but wrapping uses
     itk_wrap_image_filter with 2 image types
   - StopCriterion: takes (TRegistrationFilter, TMRFilter) — not
     image types at all
   - MultiResolutionFilter: takes 4 params, wrapping provides 2

   These wrapping files have never produced working Python bindings.
   Disabled in wrapping/CMakeLists.txt; the 9 correctly-wrapped
   3-parameter filters remain active.

   ITK v6 is NOT required — these are wrapping authoring bugs, not
   API incompatibilities.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@hjmjohnson hjmjohnson force-pushed the update-ci-best-practices branch from d876712 to 05183ce Compare April 13, 2026 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant