content: [project]
  name = "openslide-python"
  maintainers = [
      {name = "OpenSlide project", email = "openslide-users@lists.andrew.cmu.edu"}
  ]
  description = "Python interface to OpenSlide"
  readme = "README.md"
  license = "LGPL-2.1-only AND BSD-3-Clause AND MIT AND LicenseRef-Public-Domain"
  license-files = ["COPYING.LESSER", "**/LICENSE.*"]
  keywords = ["OpenSlide", "whole-slide image", "virtual slide", "library"]
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Developers",
      "Intended Audience :: Healthcare Industry",
      "Intended Audience :: Science/Research",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft :: Windows",
      "Operating System :: POSIX :: Linux",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "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",
      "Programming Language :: Python :: 3.14",
      "Topic :: Scientific/Engineering :: Bio-Informatics",
      "Typing :: Typed",
  ]
  requires-python = ">= 3.9"
  dependencies = ["Pillow"]
  dynamic = ["version"]
  
  [project.urls]
  Homepage = "https://openslide.org/"
  Documentation = "https://openslide.org/api/python/"
  "Release notes" = "https://github.com/openslide/openslide-python/blob/main/CHANGELOG.md"
  Repository = "https://github.com/openslide/openslide-python"
  
  [dependency-groups]
  test = ["pytest >= 7"]
  
  [tool.setuptools]
  include-package-data = false
  packages = ["openslide"]
  
  [tool.setuptools.dynamic]
  version = {attr = "openslide._version.__version__"}
  
  [tool.setuptools.package-data]
  openslide = ["py.typed", "*.pyi"]
  
  [tool.black]
  skip-string-normalization = true
  target-version = ["py39", "py310", "py311", "py312", "py313", "py314"]
  
  # Ref: https://github.com/codespell-project/codespell#using-a-config-file
  [tool.codespell]
  check-hidden = true
  # ignore-regex = ""
  # ignore-words-list = ""
  
  # https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#flake8
  # also ignore:
  # - E741 ambiguous variable name
  # requires Flake8-pyproject
  [tool.flake8]
  max-line-length = 88
  extend-ignore = ["E203", "E741"]
  
  [tool.isort]
  profile = "black"
  force_sort_within_sections = true
  
  [tool.mypy]
  python_version = "3.10"
  strict = true
  
  [tool.pytest.ini_options]
  minversion = "7.0"
  # don't try to import openslide from the source directory, since it doesn't
  # have the compiled extension module
  addopts = "--import-mode importlib"
  # allow tests to import common module
  pythonpath = "tests"
  
  [tool.rstcheck]
  ignore_messages = "(Hyperlink target \".*\" is not referenced\\.$)"
  
  [build-system]
  requires = ["setuptools >= 77.0.0"]
  build-backend = "setuptools.build_meta"
  