Skip to content

Commit

Permalink
ENH: Update to pyproject.toml
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Rit committed Jul 4, 2024
1 parent 89d6911 commit 99697b0
Show file tree
Hide file tree
Showing 11 changed files with 167 additions and 89 deletions.
12 changes: 9 additions & 3 deletions .github/workflows/build-test-package-python-cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ on: [push,pull_request]

env:
itk-wheel-tag: 'v5.4.0'
itk-python-package-tag: 'v5.4.0'
itk-python-package-org: 'InsightSoftwareConsortium'
itk-python-package-tag: '766eaae6ba783d92ded30e8379de8bef981bd041'
itk-python-package-org: 'SimonRit'
itk-module-deps: "RTKConsortium/ITKCudaCommon@v1.1.0"

jobs:
Expand Down Expand Up @@ -40,6 +40,7 @@ jobs:
export CUDA_VERSION_MAJOR=`(echo ${CUDA_VERSION} | cut -b1-2)`
export CUDA_VERSION_MINOR=`(echo ${CUDA_VERSION} | cut -b3-)`
CMAKE_OPTIONS="-DRTK_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DRTK_BUILD_APPLICATIONS:BOOL=OFF"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCUDAToolkit_ROOT=/usr/lib64/cuda${CUDA_VERSION}"
CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CUDA_COMPILER=/usr/lib64/cuda${CUDA_VERSION}/bin/nvcc"
Expand Down Expand Up @@ -68,6 +69,8 @@ jobs:
LIBCUBLAS=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcublas.so.${CUDA_VERSION_MAJOR}*`
LIBCUBLASLT=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcublasLt.so.${CUDA_VERSION_MAJOR}*`
LIBCUFFT=`basename /home/srit/Downloads/cuda${CUDA_VERSION}/targets/x86_64-linux/lib/libcufft.so.$((${CUDA_VERSION_MAJOR}-1))*`
sed -i "s/dependencies = \[/dependencies = [ \"itk-cudacommon-cuda${CUDA_VERSION} == 1.1.*\",/g" pyproject.toml
sed -i "s/itk-rtk/itk-rtk-cuda${CUDA_VERSION}/g" pyproject.toml
./dockcross-manylinux-download-cache-and-build-module-wheels.sh "${CMAKE_OPTIONS[@]}" -x "libcuda.so.1;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}" cp3${{ matrix.python3-minor-version }}
mv *zst ../..
Expand Down Expand Up @@ -147,12 +150,15 @@ jobs:
$CUDA_VERSION_MAJOR=$CUDA_VERSION.substring(0,2)
$CUDA_VERSION_MINOR=$CUDA_VERSION.substring(2,$CUDA_VERSION.Length-2)
$env:CUDA_PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
$env:CUDACXX = "$env:CUDA_PATH\bin\nvcc.exe"
$env:Path = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin;" + $env:Path
$LIBCUDART= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cudart64*dll" ).Name
$LIBCUBLAS= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cublas64*dll" ).Name
$LIBCUBLASLT= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cublasLt64*dll" ).Name
$LIBCUFFT= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cufft64*dll" ).Name
./windows-download-cache-and-build-module-wheels.ps1 "${{ matrix.python3-minor-version }}" -setup_options "--lib-paths ""C:/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/bin"" --exclude-libs ""nvcuda.dll;concrt140.dll;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}""" -cmake_options "-DRTK_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"
((Get-Content -Path pyproject.toml) -replace "itk-rtk","itk-rtk-cuda${CUDA_VERSION}") | Set-Content -Path pyproject.toml
((Get-Content -Path pyproject.toml) -replace "dependencies = \[","dependencies = [""itk-cudacommon-cuda${CUDA_VERSION} == 1.1.*"",") | Set-Content -Path pyproject.toml
./windows-download-cache-and-build-module-wheels.ps1 "${{ matrix.python3-minor-version }}" -setup_options "--lib-paths ""C:/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/bin"" --exclude-libs ""nvcuda.dll;concrt140.dll;${LIBCUDART};${LIBCUBLAS};${LIBCUBLASLT};${LIBCUFFT}""" -cmake_options """-DRTK_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"" ""-DRTK_BUILD_APPLICATIONS:BOOL=OFF"""
mkdir -p '${{ github.workspace }}\dist'
cp 'dist\*.whl' '${{ github.workspace }}\dist'
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/build-test-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ on: [push,pull_request]

jobs:
cxx-build-workflow:
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@main
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@v5.4.0

python-build-workflow:
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@main
uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@v5.4.0
with:
cmake-options: '-DRTK_BUILD_APPLICATIONS:BOOL=OFF'
itk-wheel-tag: 'v5.4.0'
itk-python-package-tag: 'v5.4.0'
itk-module-deps: "RTKConsortium/ITKCudaCommon@v1.1.0"
itk-python-package-org: 'SimonRit'
itk-python-package-tag: '766eaae6ba783d92ded30e8379de8bef981bd041'
secrets:
pypi_password: ${{ secrets.pypi_password }}
10 changes: 0 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -280,16 +280,6 @@ option(RTK_BUILD_APPLICATIONS "Build RTK applications" ON)
if(RTK_BUILD_APPLICATIONS)
add_subdirectory(applications)
endif()
if(ITK_WRAP_PYTHON)
# Install Python application
install(FILES applications/rtkconjugategradient/rtkconjugategradient.py
applications/rtkelektasynergygeometry/rtkelektasynergygeometry.py
applications/rtkorageometry/rtkorageometry.py
applications/rtksimulatedgeometry/rtksimulatedgeometry.py
applications/rtkvarianobigeometry/rtkvarianobigeometry.py
DESTINATION ${RTK_INSTALL_LIB_DIR}
COMPONENT PythonWheelRuntimeLibraries)
endif()

# --------------------------------------------------------
# Setup KWStyle from ITK
Expand Down
5 changes: 4 additions & 1 deletion applications/rtkconjugategradient/rtkconjugategradient.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def GetCudaImageFromImage(img):
else:
return img

if __name__ == '__main__':
def main():
# argument parsing
parser = argparse.ArgumentParser(description=
'Reconstructs a 3D volume from a sequence of projections with a conjugate gradient technique',
Expand Down Expand Up @@ -131,3 +131,6 @@ def GetCudaImageFromImage(img):
writer.SetFileName(args_info.output)
writer.SetInput(conjugategradient.GetOutput())
writer.Update()

if __name__ == '__main__':
main()
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from an Elekta Synergy acquisition.")
Expand All @@ -27,3 +27,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtkorageometry/rtkorageometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from a Varian OBI acquisition.")
Expand Down Expand Up @@ -37,3 +37,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtksimulatedgeometry/rtksimulatedgeometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import sys
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from simulated/regular trajectory. See https://www.openrtk.org/Doxygen/DocGeo3D.html for more information.")
Expand Down Expand Up @@ -51,3 +51,6 @@
writer.SetFilename(args.output)
writer.SetObject(geometry)
writer.WriteFile()

if __name__ == '__main__':
main()
5 changes: 4 additions & 1 deletion applications/rtkvarianobigeometry/rtkvarianobigeometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import itk
from itk import RTK as rtk

if __name__ == '__main__':
def main():
# Argument parsing
parser = argparse.ArgumentParser(description=
"Creates an RTK geometry file from a Varian OBI acquisition.")
Expand Down Expand Up @@ -34,3 +34,6 @@
xmlWriter.SetFilename(args.output)
xmlWriter.SetObject(reader.GetGeometry())
xmlWriter.WriteFile()

if __name__ == '__main__':
main()
127 changes: 127 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
[build-system]
requires = ["scikit-build-core"]
build-backend = "scikit_build_core.build"

[project]
name = "itk-rtk"
version = "2.5.0"
description = "The Reconstruction Toolkit (RTK) for fast circular cone-beam CT reconstruction"
readme = "README.md"
license = {file = "LICENSE.TXT"}
authors = [
{ name = "RTK Consortium", email = "simon.rit@creatis.insa-lyon.fr" },
]
keywords = [
"itk",
"rtk",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: Healthcare Industry",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Operating System :: Android",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Programming Language :: C++",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Scientific/Engineering :: Medical Science Apps.",
"Topic :: Software Development :: Libraries",
]
requires-python = ">=3.8"
dependencies = [
"itk == 5.4.*",
]

[project.scripts]
rtkconjugategradient = "itk.rtkconjugategradient:main"
rtkelektasynergygeometry = "itk.rtkelektasynergygeometry:main"
rtkorageometry = "itk.rtkorageometry:main"
rtksimulatedgeometry = "itk.rtksimulatedgeometry:main"
rtkvarianobigeometry = "itk.rtkvarianobigeometry:main"

[project.urls]
Download = "https://github.com/RTKConsortium/RTK"
Homepage = "https://www.openrtk.org"

[tool.scikit-build]
# 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"

# 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``.
cmake.args = []

# A table of defines to pass to CMake when configuring the project. Additive.
cmake.define = {}

# Verbose printout when building.
cmake.verbose = true

# The build type to use when building the project. Valid options are: "Debug",
# "Release", "RelWithDebInfo", "MinSizeRel", "", etc.
cmake.build-type = "Release"

# The source directory to use when building the project. Currently only affects
# the native builder (not the setuptools plugin).
cmake.source-dir = "."

# The versions of Ninja to allow. If Ninja 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.
ninja.version = ">=1.11"

# If CMake is not present on the system or is older required, it will be
# downloaded via PyPI if possible. An empty string will disable this check.
ninja.make-fallback = true

# The logging level to display, "DEBUG", "INFO", "WARNING", and "ERROR" are
# possible options.
logging.level = "INFO"

# Files to include in the SDist even if they are skipped by default. Supports
# gitignore syntax.
sdist.include = []

# Files to exclude from the SDist even if they are included by default. Supports
# gitignore syntax.
sdist.exclude = []

# A list of license files to include in the wheel. Supports glob patterns.
wheel.license-files = ["LICEN[CS]E*",]

# Target the platlib or the purelib. If not set, the default is to target the
# platlib if wheel.cmake is true, and the purelib otherwise.
wheel.platlib = "false"

# If CMake is less than this value, backport a copy of FindPython. Set to 0
# disable this, or the empty string.
backport.find-python = "3.26.1"

# Select the editable mode to use. Can be "redirect" (default) or "inplace".
editable.mode = "redirect"

# Rebuild the project when the package is imported. The build-directory must be
# set.
editable.rebuild = false

# The components to install. If empty, all default components are installed.
install.components = []

# Whether to strip the binaries. True for scikit-build-core 0.5+.
install.strip = true

# If set, this will provide a method for backward compatibility.
minimum-version = "0.8.2"

# The build directory. Defaults to a temporary directory, but can be set.
build-dir = "build/{wheel_tag}"
65 changes: 0 additions & 65 deletions setup.py

This file was deleted.

8 changes: 7 additions & 1 deletion wrapping/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,10 @@ wrap_itk_python_bindings_install(/itk "RTK"
${RTK_SOURCE_DIR}/applications/rtk3Doutputimage_group.py
${RTK_SOURCE_DIR}/applications/rtkinputprojections_group.py
${RTK_SOURCE_DIR}/applications/rtkiterations_group.py
${RTK_SOURCE_DIR}/applications/rtkprojectors_group.py)
${RTK_SOURCE_DIR}/applications/rtkprojectors_group.py
${RTK_SOURCE_DIR}/applications/rtkconjugategradient/rtkconjugategradient.py
${RTK_SOURCE_DIR}/applications/rtkelektasynergygeometry/rtkelektasynergygeometry.py
${RTK_SOURCE_DIR}/applications/rtkorageometry/rtkorageometry.py
${RTK_SOURCE_DIR}/applications/rtksimulatedgeometry/rtksimulatedgeometry.py
${RTK_SOURCE_DIR}/applications/rtkvarianobigeometry/rtkvarianobigeometry.py
)

0 comments on commit 99697b0

Please sign in to comment.