Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
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
29 changes: 29 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## 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 use ITK prefixes (`BUG:`, `COMP:`, `DOC:`, `ENH:`, `PERF:`, `STYLE:`)

## Platform(s) Tested

<!-- Check all that apply, or note "untested" where applicable. -->
- [ ] Linux x86_64 (manylinux)
- [ ] Linux aarch64 (manylinux)
- [ ] 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
16 changes: 15 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 All @@ -54,6 +53,9 @@ pip-log.txt
.tox
coverage.xml
htmlcov
.pytest_cache/
.hypothesis/
__pycache__/

# Translations
*.mo
Expand All @@ -73,3 +75,15 @@ docs/_build
# IDE junk
.idea/*
*.swp
/itkVersion.py
# PyPI credentials
.pypirc

# pixi environments
.pixi/*
!.pixi/config.toml

# pixi installer that the Windows entry-point scripts fetch into the
# working directory (make_windows_zip.ps1,
# windows-download-cache-and-build-module-wheels.ps1)
install-pixi.ps1
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/|docs/|pixi\.lock$)

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.

Loading
Loading