From d145c9a5cfd7a6a6b3d64376a9141ec6a7d7e9f3 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 26 Jan 2025 09:02:57 -0600 Subject: [PATCH 1/4] STYLE: Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassMacro Added two new macro's, intended to replace the old 'itkTypeMacro' and 'itkTypeMacroNoParent'. The main aim is to be clearer about what those macro's do: add a virtual 'GetNameOfClass()' member function and override it. Unlike 'itkTypeMacro', 'itkOverrideGetNameOfClassMacro' does not have a 'superclass' parameter, as it was not used anyway. Note that originally 'itkTypeMacro' did not use its 'superclass' parameter either, looking at commit 699b66cb04d410e555656828e8892107add38ccb, Will Schroeder, June 27, 2001: https://github.com/InsightSoftwareConsortium/ITK/blob/699b66cb04d410e555656828e8892107add38ccb/Code/Common/itkMacro.h#L331-L337 --- include/itkNormalizedCorrelationTwoImageToOneImageMetric.h | 2 +- include/itkSiddonJacobsRayCastInterpolateImageFunction.h | 2 +- include/itkTwoImageToOneImageMetric.h | 2 +- include/itkTwoProjectionImageRegistrationMethod.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/itkNormalizedCorrelationTwoImageToOneImageMetric.h b/include/itkNormalizedCorrelationTwoImageToOneImageMetric.h index b650ca7..3b77bd3 100644 --- a/include/itkNormalizedCorrelationTwoImageToOneImageMetric.h +++ b/include/itkNormalizedCorrelationTwoImageToOneImageMetric.h @@ -57,7 +57,7 @@ class NormalizedCorrelationTwoImageToOneImageMetric : public TwoImageToOneImageM itkNewMacro(Self); /** Run-time type information (and related methods). */ - itkTypeMacro(NormalizedCorrelationTwoImageToOneImageMetric, Object); + itkOverrideGetNameOfClassMacro(NormalizedCorrelationTwoImageToOneImageMetric); /** Types transferred from the base class */ diff --git a/include/itkSiddonJacobsRayCastInterpolateImageFunction.h b/include/itkSiddonJacobsRayCastInterpolateImageFunction.h index b5f3d9c..4861943 100644 --- a/include/itkSiddonJacobsRayCastInterpolateImageFunction.h +++ b/include/itkSiddonJacobsRayCastInterpolateImageFunction.h @@ -90,7 +90,7 @@ class SiddonJacobsRayCastInterpolateImageFunction : public InterpolateImageFunct /** Run-time type information (and related methods). */ - itkTypeMacro(SiddonJacobsRayCastInterpolateImageFunction, InterpolateImageFunction); + itkOverrideGetNameOfClassMacro(SiddonJacobsRayCastInterpolateImageFunction); /** Method for creation through the object factory. */ itkNewMacro(Self); diff --git a/include/itkTwoImageToOneImageMetric.h b/include/itkTwoImageToOneImageMetric.h index de1f5ac..5365563 100644 --- a/include/itkTwoImageToOneImageMetric.h +++ b/include/itkTwoImageToOneImageMetric.h @@ -64,7 +64,7 @@ class TwoImageToOneImageMetric : public SingleValuedCostFunction using CoordinateRepresentationType = Superclass::ParametersValueType; /** Run-time type information (and related methods). */ - itkTypeMacro(TwoImageToOneImageMetric, SingleValuedCostFunction); + itkOverrideGetNameOfClassMacro(TwoImageToOneImageMetric); /** Type of the moving Image. */ using MovingImageType = TMovingImage; diff --git a/include/itkTwoProjectionImageRegistrationMethod.h b/include/itkTwoProjectionImageRegistrationMethod.h index 1442c9a..5003720 100644 --- a/include/itkTwoProjectionImageRegistrationMethod.h +++ b/include/itkTwoProjectionImageRegistrationMethod.h @@ -77,7 +77,7 @@ class TwoProjectionImageRegistrationMethod : public ProcessObject itkNewMacro(Self); /** Run-time type information (and related methods). */ - itkTypeMacro(TwoProjectionImageRegistrationMethod, ProcessObject); + itkOverrideGetNameOfClassMacro(TwoProjectionImageRegistrationMethod); /** Type of the Fixed image. */ using FixedImageType = TFixedImage; From 637a14d8100fb6920b17b9caa5d96d47d6aab489 Mon Sep 17 00:00:00 2001 From: Hans Johnson Date: Sun, 26 Jan 2025 10:56:46 -0600 Subject: [PATCH 2/4] STYLE: Replace itkStaticConstMacro with static constexpr Use static constexpr directly now that C++11 conformance is required by all compilers. :%s/itkStaticConstMacro *( *\([^,]*\),[ \_s]*\([^,]*\),\_s*\([^)]*\)) */static constexpr \2 \1 = \3/ge 'itkStaticConstMacro(name, type, value)' became unconditionally identical to 'static constexpr type name = value' with ITK commit aec95193ab00e1322039911e1032da00f3a103b6 "ENH: Update compiler macros (#810)", maekclena, 7 May 2019. 'itkGetStaticConstMacro(name)' became unconditionally identical to '(Self::name)' with ITK commit 84e490b81e3f3c2b0edb89ae7b9de53bfc52f2b2 "Removing some outdated compiler conditionals", Hans Johnson, 31 July 2010. Most 'itkStaticConstMacro' calls were removed by ITK commit 5c14741e1e063a132ea7e7ee69c5bd0a4e49af74 --- include/itkTwoImageToOneImageMetric.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/itkTwoImageToOneImageMetric.h b/include/itkTwoImageToOneImageMetric.h index 5365563..6233b17 100644 --- a/include/itkTwoImageToOneImageMetric.h +++ b/include/itkTwoImageToOneImageMetric.h @@ -82,8 +82,8 @@ class TwoImageToOneImageMetric : public SingleValuedCostFunction /** Type of the Transform Base class */ using TransformType = Transform; + Self::MovingImageDimension, + Self::FixedImageDimension>; using TransformPointer = typename TransformType::Pointer; using InputPointType = typename TransformType::InputPointType; @@ -97,8 +97,8 @@ class TwoImageToOneImageMetric : public SingleValuedCostFunction /** Gaussian filter to compute the gradient of the Moving Image */ using RealType = typename NumericTraits::RealType; - using GradientPixelType = CovariantVector; - using GradientImageType = Image; + using GradientPixelType = CovariantVector; + using GradientImageType = Image; using GradientImagePointer = SmartPointer; using GradientImageFilterType = GradientRecursiveGaussianImageFilter; using GradientImageFilterPointer = typename GradientImageFilterType::Pointer; @@ -106,12 +106,12 @@ class TwoImageToOneImageMetric : public SingleValuedCostFunction /** Type for the mask of the fixed image. Only pixels that are "inside" this mask will be considered for the computation of the metric */ - typedef SpatialObject FixedImageMaskType; + typedef SpatialObject FixedImageMaskType; using FixedImageMaskPointer = typename FixedImageMaskType::Pointer; /** Type for the mask of the moving image. Only pixels that are "inside" this mask will be considered for the computation of the metric */ - typedef SpatialObject MovingImageMaskType; + typedef SpatialObject MovingImageMaskType; using MovingImageMaskPointer = typename MovingImageMaskType::Pointer; From 1ad800b2384dd7703a857b26fc5773116a85d64a Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Mon, 10 Nov 2025 13:47:34 -0600 Subject: [PATCH 3/4] STYLE: Update clang-format to match ITK 2025-11-10 Update to match clang-format-19 from ITK Set the default build package tags to v5.4.4 for capturing the ITKRemoteModuleBuildTestPackageAction shared scripts. This pulls the default configuration items needed to build against ITK version v5.4.4. Update pyproject.toml for ITK 5.4.4 Ensure that cmake is 3.16.3 or greater to match v5.4.4 minimum requirements. Increment version number. Replace keyword of "ITK" with lowercase "itk" in some instances to be consistent. Update RemoteModulePackageAction and Python 3.9+ Update github actions to v5.4.4 and package management for python 3.9 --- .clang-format | 252 ++++++++++++++++++---- .github/workflows/build-test-package.yml | 4 +- .github/workflows/clang-format-linter.yml | 7 +- CMakeLists.txt | 2 +- include/itkTwoImageToOneImageMetric.h | 4 +- pyproject.toml | 6 +- test/TwoProjection2D3DRegistration.cxx | 2 +- 7 files changed, 222 insertions(+), 55 deletions(-) diff --git a/.clang-format b/.clang-format index 411b009..2fd9142 100644 --- a/.clang-format +++ b/.clang-format @@ -1,4 +1,4 @@ -## This config file is only relevant for clang-format version 8.0.0 +## This config file is only relevant for clang-format version 19.1.7 ## ## Examples of each format style can be found on the in the clang-format documentation ## See: https://clang.llvm.org/docs/ClangFormatStyleOptions.html for details of each option @@ -10,142 +10,310 @@ ## maintaining a consistent code style. ## ## EXAMPLE apply code style enforcement before commit: -# Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_8.0.0} --modified +# Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_19.1.7} --modified ## EXAMPLE apply code style enforcement after commit: -# Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_8.0.0} --last +# Utilities/Maintenance/clang-format.bash --clang ${PATH_TO_CLANG_FORMAT_19.1.7} --last --- -# This configuration requires clang-format version 8.0.0 exactly. -BasedOnStyle: Mozilla +# This configuration requires clang-format version 19.1.7 exactly. Language: Cpp AccessModifierOffset: -2 AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: false -AlignConsecutiveDeclarations: true -AlignEscapedNewlines: Right -AlignOperands: true -AlignTrailingComments: true -# clang 9.0 AllowAllArgumentsOnNextLine: true -# clang 9.0 AllowAllConstructorInitializersOnNextLine: true +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: true + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseArrows: false + AlignCaseColons: false +AlignConsecutiveTableGenBreakingDAGArgColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenCondOperatorColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenDefinitionColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: false +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseExpressionOnASingleLine: true AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: Inline -# clang 9.0 AllowShortLambdasOnASingleLine: All -# clang 9.0 features AllowShortIfStatementsOnASingleLine: Never -AllowShortIfStatementsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +#AllowShortFunctionsOnASingleLine: Inline Only merge functions defined inside a class. Implies empty. +#AllowShortFunctionsOnASingleLine: None (in configuration: None) Never merge functions into a single line. +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: All AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: Yes +AttributeMacros: + - __capability BinPackArguments: false BinPackParameters: false -BreakBeforeBraces: Custom +BitFieldColonSpacing: Both BraceWrapping: - # clang 9.0 feature AfterCaseLabel: false + AfterCaseLabel: true AfterClass: true - AfterControlStatement: true + AfterControlStatement: Always AfterEnum: true + AfterExternBlock: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: true AfterStruct: true AfterUnion: true - AfterExternBlock: true BeforeCatch: true BeforeElse: true -## This is the big change from historical ITK formatting! -# Historically ITK used a style similar to https://en.wikipedia.org/wiki/Indentation_style#Whitesmiths_style -# with indented braces, and not indented code. This style is very difficult to automatically -# maintain with code beautification tools. Not indenting braces is more common among -# formatting tools. + BeforeLambdaBody: false + BeforeWhile: false IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: false SplitEmptyNamespace: false +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakAfterReturnType: All +BreakArrays: true BreakBeforeBinaryOperators: None -#clang 6.0 BreakBeforeInheritanceComma: true -BreakInheritanceList: BeforeComma +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: Custom +BreakBeforeInlineASMColon: OnlyMultiline BreakBeforeTernaryOperators: true -#clang 6.0 BreakConstructorInitializersBeforeComma: true BreakConstructorInitializers: BeforeComma -BreakAfterJavaFieldAnnotations: false +BreakFunctionDefinitionParameters: false +BreakInheritanceList: BeforeComma BreakStringLiterals: true +BreakTemplateDeclarations: Yes ## The following line allows larger lines in non-documentation code ColumnLimit: 120 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false -ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 2 ContinuationIndentWidth: 2 Cpp11BracedListStyle: false DerivePointerAlignment: false DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock ExperimentalAutoDetectBinPacking: false FixNamespaceComments: true ForEachMacros: - foreach - Q_FOREACH - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE IncludeBlocks: Preserve IncludeCategories: - Regex: '^"(llvm|llvm-c|clang|clang-c)/' Priority: 2 + SortPriority: 0 + CaseSensitive: false - Regex: '^(<|"(gtest|gmock|isl|json)/)' Priority: 3 + SortPriority: 0 + CaseSensitive: false - Regex: '.*' Priority: 1 + SortPriority: 0 + CaseSensitive: false IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false IndentCaseLabels: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true IndentPPDirectives: AfterHash +IndentRequiresClause: true IndentWidth: 2 IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 JavaScriptQuotes: Leave JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLines: + AtEndOfFile: false + AtStartOfBlock: true + AtStartOfFile: true +LambdaBodyIndentation: Signature +LineEnding: DeriveLF MacroBlockBegin: '' MacroBlockEnd: '' +MainIncludeChar: Quote MaxEmptyLinesToKeep: 2 NamespaceIndentation: None ObjCBinPackProtocolList: Auto ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true ObjCSpaceAfterProperty: true ObjCSpaceBeforeProtocolList: false +PackConstructorInitializers: BinPack PenaltyBreakAssignment: 2 PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 ## The following line allows larger lines in non-documentation code PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 PenaltyBreakString: 1000 PenaltyBreakTemplateDeclaration: 10 PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Middle +PPIndentWidth: -1 +QualifierAlignment: Custom +QualifierOrder: + - friend + - static + - inline + - constexpr + - const + - type +ReferenceAlignment: Pointer ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false # We may want to sort the includes as a separate pass -SortIncludes: false +SortIncludes: Never +SortJavaStaticImport: Before # We may want to revisit this later -SortUsingDeclarations: false +SortUsingDeclarations: Never SpaceAfterCStyleCast: false -# SpaceAfterLogicalNot: false +SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false SpaceBeforeRangeBasedForLoopColon: true -SpaceInEmptyParentheses: false +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false SpacesBeforeTrailingComments: 1 -SpacesInAngles: false +SpacesInAngles: Never SpacesInContainerLiterals: false -SpacesInCStyleCastParentheses: false -SpacesInParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + ExceptDoubleParentheses: false + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false SpacesInSquareBrackets: false -Standard: Cpp11 +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT StatementMacros: - Q_UNUSED - QT_REQUIRE_VERSION + - ITK_GCC_PRAGMA_PUSH + - ITK_GCC_PRAGMA_POP + - ITK_GCC_SUPPRESS_Wfloat_equal + - ITK_GCC_SUPPRESS_Wformat_nonliteral + - ITK_GCC_SUPPRESS_Warray_bounds + - ITK_CLANG_PRAGMA_PUSH + - ITK_CLANG_PRAGMA_POP + - ITK_CLANG_SUPPRESS_Wzero_as_null_pointer_constant + - ITK_CLANG_SUPPRESS_Wduplicate_enum + - CLANG_PRAGMA_PUSH + - CLANG_PRAGMA_POP + - CLANG_SUPPRESS_Wfloat_equal + - INTEL_PRAGMA_WARN_PUSH + - INTEL_PRAGMA_WARN_POP + - INTEL_SUPPRESS_warning_1292 + - itkTemplateFloatingToIntegerMacro + - itkLegacyMacro +TableGenBreakInsideDAGArg: DontBreak TabWidth: 2 UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE ... diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 19b97f5..18758d6 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -5,10 +5,10 @@ on: [push,pull_request] jobs: cxx-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.0 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.4 python-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.0 + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.4 with: test-notebooks: false secrets: diff --git a/.github/workflows/clang-format-linter.yml b/.github/workflows/clang-format-linter.yml index 69166d9..7d1df4f 100644 --- a/.github/workflows/clang-format-linter.yml +++ b/.github/workflows/clang-format-linter.yml @@ -7,7 +7,8 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v5 + + - uses: InsightSoftwareConsortium/ITKClangFormatLinterAction@main with: - fetch-depth: 1 - - uses: InsightSoftwareConsortium/ITKClangFormatLinterAction@master + itk-branch: main diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d0c36f..bd3c86a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2) +cmake_minimum_required(VERSION 3.16.3) project(TwoProjectionRegistration) if(NOT ITK_SOURCE_DIR) diff --git a/include/itkTwoImageToOneImageMetric.h b/include/itkTwoImageToOneImageMetric.h index 6233b17..f16f3ff 100644 --- a/include/itkTwoImageToOneImageMetric.h +++ b/include/itkTwoImageToOneImageMetric.h @@ -81,9 +81,7 @@ class TwoImageToOneImageMetric : public SingleValuedCostFunction static constexpr unsigned int FixedImageDimension = TFixedImage::ImageDimension; /** Type of the Transform Base class */ - using TransformType = Transform; + using TransformType = Transform; using TransformPointer = typename TransformType::Pointer; using InputPointType = typename TransformType::InputPointType; diff --git a/pyproject.toml b/pyproject.toml index ff2e32c..47f40fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "itk-twoprojectionregistration" -version = "2.0.0" +version = "2.0.1" description = "ITK classes for two-projection 2D/3D registration" readme = "README.rst" license = {file = "LICENSE"} @@ -36,7 +36,7 @@ classifiers = [ "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: Software Development :: Libraries", ] -requires-python = ">=3.8" +requires-python = ">=3.9" dependencies = [ "itk == 5.4.*", ] @@ -49,7 +49,7 @@ Homepage = "https://github.com/InsightSoftwareConsortium/ITKTwoProjectionRegistr # 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``. diff --git a/test/TwoProjection2D3DRegistration.cxx b/test/TwoProjection2D3DRegistration.cxx index 1cb1880..9f75878 100644 --- a/test/TwoProjection2D3DRegistration.cxx +++ b/test/TwoProjection2D3DRegistration.cxx @@ -46,7 +46,7 @@ // We have chosen to implement the registration using the normalized coorelation // similarity measure. -//#include "itkGradientDifferenceTwoImageToOneImageMetric.h" +// #include "itkGradientDifferenceTwoImageToOneImageMetric.h" #include "itkNormalizedCorrelationTwoImageToOneImageMetric.h" // This is an intensity based registration algorithm so ray casting is From 1d223792875428cd5abe167636325120d226a646 Mon Sep 17 00:00:00 2001 From: "Hans J. Johnson" Date: Sat, 15 Nov 2025 12:55:06 -0600 Subject: [PATCH 4/4] ENH: Change master->main for LICENSE --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 6df7751..c45cbdb 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ ITKTwoProjectionRegistration :alt: PyPI Version .. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg - :target: https://github.com/InsightSoftwareConsortium/TwoProjectionRegistration/blob/master/LICENSE) + :target: https://github.com/InsightSoftwareConsortium/TwoProjectionRegistration/blob/main/LICENSE) :alt: License Overview