content: [build-system]
  requires = ["uv_build"]
  build-backend = "uv_build"
  
  [project]
  name = "torchio"
  version = "0.20.23"
  description = "Tools for medical image processing with PyTorch"
  readme = "README.md"
  authors = [{ name = "TorchIO contributors" }]
  maintainers = [{ name = "Fernando Perez-Garcia", email = "fepegar@gmail.com" }]
  classifiers = [
      "Development Status :: 4 - Beta",
      "Environment :: Console",
      "Intended Audience :: Science/Research",
      "License :: OSI Approved :: Apache Software License",
      "Natural Language :: English",
      "Operating System :: OS Independent",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3 :: Only",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Topic :: Scientific/Engineering",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
      "Topic :: Scientific/Engineering :: Image Processing",
      "Topic :: Scientific/Engineering :: Medical Science Apps.",
      "Typing :: Typed",
  ]
  keywords = ["medical", "image processing", "pytorch", "augmentation", "mri"]
  requires-python = ">=3.9"
  dependencies = [
      "deprecated>=1.2",
      "einops>=0.3",
      "humanize>=0.1",
      "nibabel>=3",
      "numpy>=1.20",
      "packaging>=20",
      "rich>=10",
      "scipy>=1.7",
      "simpleitk >=1.3, !=2.0.*, !=2.1.1.1",
      "torch>=1.9",
      "tqdm>=4.40",
      "typer>=0.1",
  ]
  
  [project.optional-dependencies]
  csv = ["pandas>=1"]
  plot = ["colorcet", "matplotlib>=3.4"]
  video = ["ffmpeg-python>=0.2.0"]
  sklearn = ["scikit-learn>=1.6.1"]
  
  [project.scripts]
  tiohd = "torchio.cli.print_info:app"
  tiotr = "torchio.cli.apply_transform:app"
  torchio-transform = "torchio.cli.apply_transform:app"
  
  [project.urls]
  Homepage = "https://torchio.org"
  Source = "https://github.com/TorchIO-project/torchio"
  "Issue tracker" = "https://github.com/TorchIO-project/torchio/issues"
  Documentation = "https://docs.torchio.org"
  "Release notes" = "https://github.com/TorchIO-project/torchio/releases"
  
  [dependency-groups]
  dev = [
      { include-group = "doc" },
      { include-group = "maintain" },
      { include-group = "quality" },
      { include-group = "test" },
      "ipykernel",
      "ipywidgets",
      "prek",
  ]
  doc = [
      "distinctipy",
      "einops",
      "furo",
      "matplotlib",
      "sphinx",
      "sphinx-autobuild",
      "sphinx-copybutton",
      "sphinx-gallery",
      "sphinxext-opengraph",
  ]
  maintain = ["bump-my-version"]
  quality = ["ruff"]
  types = [
      "mypy",
      "pandas-stubs",
      "pillow",
      "pip",
      "types-deprecated",
      "types-tqdm",
  ]
  test = [
      "coverage",
      "matplotlib",
      "parameterized",
      "pillow",
      "pytest",
      "pytest-sugar",
      "tox-uv",
  ]
  
  [tool.bumpversion]
  current_version = "0.20.23"
  commit = true
  tag = true
  
  [[tool.bumpversion.files]]
  filename = "src/torchio/__init__.py"
  search = "__version__ = '{current_version}'"
  replace = "__version__ = '{new_version}'"
  
  [[tool.bumpversion.files]]
  filename = "pyproject.toml"
  search = 'version = "{current_version}"'
  replace = 'version = "{new_version}"'
  
  [tool.mypy]
  pretty = true
  
  [[tool.mypy.overrides]]
  module = "duecredit.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "huggingface_hub.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "matplotlib.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "nibabel.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "scipy.*"
  ignore_missing_imports = true
  
  [tool.pytest.ini_options]
  markers = [
      "slow: marks tests as slow (deselect with '-m \"not slow\"')",
      "serial",
  ]
  filterwarnings = [
      # Ignore SimpleITK Swig warnings
      "ignore:builtin type .* has no __module__ attribute",
      "ignore:Casting complex values to real discards the imaginary part",
      # Raised by SimpleITK on CI
      "ignore:invalid escape sequence",
  ]
  
  [tool.ruff.format]
  quote-style = 'single'
  
  [tool.ruff.lint]
  preview = true
  select = ["B", "E", "F", "I", "W"]
  ignore = ["E203", "E501", "N813"]
  
  [tool.ruff.lint.isort]
  force-single-line = true
  
  [tool.coverage.run]
  omit = ["**/_remote_module_non_scriptable.py"]
  