Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1a757eb
ENH: Transition build system from shell scripts to consolidated Pytho…
CavRiley Mar 17, 2026
1e54d9d
ENH: Add platform-specific Python build scripts for Linux, macOS, and…
CavRiley Mar 17, 2026
50bf6a3
ENH: Add tarball creation and ITK build cache management
CavRiley Mar 17, 2026
d8335d5
ENH: Remove legacy shell scripts, add pre-commit hooks, drop Python 3.9
CavRiley Mar 17, 2026
e7d229a
DOC: Update online docs and infrastructure for docs generation
CavRiley Mar 18, 2026
3acec00
ENH: Add GitHub Action to generate documentation artifacts
CavRiley Mar 18, 2026
058a35e
DOC: Add CONTRIBUTING.md file
CavRiley Mar 28, 2026
af4d95b
ENH: Add scripts to publish wheels and cached builds
CavRiley Mar 29, 2026
d8b8b0d
ENH: Configure commitizen for ITK commit message convention
hjmjohnson Apr 3, 2026
d666d19
DOC: Add CLAUDE.md with build system overview and commit conventions
hjmjohnson Apr 3, 2026
6e514df
ENH: Dynamically update ITK dependency pins in remote module builds
hjmjohnson Apr 3, 2026
4cfd2b0
ENH: Preserve module pyproject.toml when rewriting ITK deps
hjmjohnson Apr 3, 2026
ee45329
DOC: Add Strategy 3 migration plan to _update_module_itk_deps
hjmjohnson Apr 3, 2026
5a129c3
ENH: Branch between Strategy 3 and Strategy 1 for ITK dep resolution
hjmjohnson Apr 3, 2026
77d7900
ENH: Restrict Strategy 1 dep rewrite to ITK base sub-packages only
hjmjohnson Apr 3, 2026
5e27829
BUG: Pin ITK dep floor to vMAJOR.MINOR of the ITK version being built
hjmjohnson Apr 3, 2026
d16137f
BUG: Use fixed >= 5.4 floor for ITK deps across all versions
hjmjohnson Apr 3, 2026
a372bba
BUG: Pin ITK dep floor to MAJOR.MINOR of the version being built
hjmjohnson Apr 3, 2026
8d31c14
ENH: Add scripts to build all ITK + remote module wheels from latest …
hjmjohnson Apr 3, 2026
9c2467b
ENH: Allow specifying ITK branch, tag, or hash for build-all scripts
hjmjohnson Apr 3, 2026
834cfdb
STYLE: Move build-all-latest-wheels scripts to Utilities/scripts
hjmjohnson Apr 3, 2026
468e8dc
STYLE: Move publish scripts to Utilities/scripts
CavRiley Jun 18, 2026
54cbec6
STYLE: Apply pre-commit hook fixes across the repository
CavRiley Jun 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
name: Bug report
about: Something is broken in the build or packaging pipeline
title: "fix: "
labels: bug
assignees: ""
---

## Environment

- **OS / Platform**: <!-- e.g. Ubuntu 22.04 x86_64, macOS 14 arm64, Windows Server 2022 -->
- **Python version**: <!-- e.g. 3.11.9 -->
- **ITK version / branch**: <!-- e.g. v5.4.0, or commit hash -->
- **Script / entry point used**: <!-- e.g. scripts/build_wheels.py, dockcross-manylinux-build-wheels.sh -->

## Steps to Reproduce


## Expected Behavior

<!-- What should happen. -->

## Actual Behavior

<!-- What actually happens. Paste relevant log output below. -->

<details>
<summary>Log output</summary>

```
```

</details>

## Additional Context

<!-- build_report.json contents, Docker image tag, CMake args, etc. -->
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: ITK Discourse (questions & support)
url: https://discourse.itk.org
about: For build questions or general ITK support, please use the ITK Discourse forum.
- name: ITK Documentation
url: https://itkpythonpackage.readthedocs.io
about: Check the docs before filing an issue.
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest a new capability or improvement to the build/packaging pipeline
title: "feat: "
labels: enhancement
assignees: ""
---

## Problem / Motivation

<!-- What limitation or pain point does this address? -->

## Proposed Solution

<!-- Describe what you'd like to see added or changed. -->

## Alternatives Considered

<!-- Any other approaches you've thought about? -->

## Additional Context

<!-- Platform relevance, ITK module context, links, etc. -->
30 changes: 30 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Summary

<!-- One or two sentences describing what this PR does and why. -->

## Type of Change

- [ ] Bug fix
- [ ] New feature / enhancement
- [ ] Refactor / cleanup
- [ ] Docs / CI only

## Checklist

- [ ] Pre-commit hooks pass locally (`pre-commit run --all-files`)
- [ ] Tested wheel build on affected platform(s) (Linux / macOS / Windows)
- [ ] Docs updated if behavior changed (`docs/`)
- [ ] Commit messages follow Conventional Commits (`feat:`, `fix:`, `chore:`, etc.)

## Platform(s) Tested

<!-- Check all that apply, or note "untested" where applicable. -->
- [ ] Linux x86_64 (manylinux)
- [ ] Linux aarch64 (manylinux)
- [ ] macOS x86_64
- [ ] macOS arm64
- [ ] Windows x86_64

## Related Issues

<!-- Closes #... -->
31 changes: 31 additions & 0 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: docs

on:
pull_request:
paths:
- "docs/**"
- ".readthedocs.yml"
push:
branches: [main]
paths:
- "docs/**"
- ".readthedocs.yml"

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install -r docs/requirements-docs.txt
- name: Build docs
run: sphinx-build -W --keep-going -b html docs docs/_build/html
- uses: actions/upload-artifact@v4
if: always()
with:
name: docs-html
path: docs/_build/html
retention-days: 7
16 changes: 16 additions & 0 deletions .github/workflows/pre-commit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: pre-commit

on:
pull_request:
push:
branches: [main]

jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- uses: pre-commit/action@v3.0.1
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ lib
lib64
MANIFEST
oneTBB-prefix/
pyproject.toml

# Installer logs
pip-log.txt
Expand Down Expand Up @@ -73,3 +72,10 @@ docs/_build
# IDE junk
.idea/*
*.swp
/itkVersion.py
# PyPI credentials
.pypirc

# pixi environments
.pixi/*
!.pixi/config.toml
69 changes: 69 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,73 @@
# Pre-commit configuration for ITKPythonPackage
# Run `pre-commit install` to install git hooks locally
# Run `pre-commit run --all-files` to check all files
# Run `pre-commit autoupdate` to update hook versions

# Exclude generated/vendored directories from all hooks
exclude: ^(\.pixi|build|pixi.lock|docs)/

repos:
# General file hygiene
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
stages: [pre-commit]
- id: end-of-file-fixer
stages: [pre-commit]
- id: check-yaml
stages: [pre-commit]
- id: check-toml
stages: [pre-commit]
- id: check-merge-conflict
stages: [pre-commit]
- id: check-added-large-files
args: [--maxkb=500]
stages: [pre-commit]
# Enforce LF line endings everywhere except Windows PowerShell scripts
- id: mixed-line-ending
args: [--fix=lf]
exclude: \.ps1$
stages: [pre-commit]

# Python: formatting
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
stages: [pre-commit]

# Python: linting + import sorting
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.6
hooks:
- id: ruff
args: [--fix]
stages: [pre-commit]

# Shell: linting
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
stages: [pre-commit]

# Shell: formatting
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.12.0-2
hooks:
- id: shfmt
args: [-i, "2", -w]
stages: [pre-commit]

# TOML: formatting
- repo: https://github.com/ComPWA/taplo-pre-commit
rev: v0.9.3
hooks:
- id: taplo-format
stages: [pre-commit]

# ITK commit message hooks (matching ITK/Utilities/Hooks/)
- repo: local
hooks:
- id: local-prepare-commit-msg
Expand Down
23 changes: 23 additions & 0 deletions .pypirc.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# .pypirc.example -- DO NOT commit real credentials
# Copy to ~/.pypirc and fill in your token.
#
# Generate a token at: https://pypi.org/manage/account/token/
# For TestPyPI: https://test.pypi.org/manage/account/token/
#
# Alternatively, set environment variables:
# TWINE_USERNAME=__token__
# TWINE_PASSWORD=pypi-<your-token>

[distutils]
index-servers =
pypi
testpypi

[pypi]
username = __token__
password = pypi-YOUR-TOKEN-HERE

[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = pypi-YOUR-TOKEN-HERE
13 changes: 13 additions & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: 2

build:
os: ubuntu-22.04
tools:
python: "3.11"

sphinx:
configuration: docs/conf.py

python:
install:
- requirements: docs/requirements-docs.txt
15 changes: 0 additions & 15 deletions .travis.yml

This file was deleted.

7 changes: 7 additions & 0 deletions BuildWheelsSupport/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.26.6 FATAL_ERROR)
# NOTE: 3.26.6 is the first cmake version to support Development.SABIModule

project(ITKPythonPackageWheels CXX)

include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/ITKPythonPackage_Utils.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/ITKPythonPackage_BuildWheels.cmake)
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ itk-io
itk-filtering
itk-registration
itk-segmentation
itk-meta
itk-meta
Loading
Loading