content: [build-system]
  requires = ["hatchling", "hatch-vcs"]
  build-backend = "hatchling.build"
  
  [project]
  name = "HiDimStat"
  # Version from setuptools_scm
  dynamic = ["version"]
  dependencies = [
      "joblib       >= 1.2.0, < 2",
      "numpy        >= 1.25,  < 3",
      "pandas       >= 2.2,   < 3",
      "scikit-learn >= 1.5,   < 1.9",
      "scipy        >= 1.9.2, < 2",
      "tqdm         >= 4.1.0, < 5",
  ]
  requires-python = ">=3.10,   < 4"
  authors = [{ name = "HiDimStat developers" }]
  maintainers = [
      { name = "Bertrand Thirion", email = "bertrand.thirion@inria.fr" },
  ]
  description = "High-dimensional statistical inference tools for Python"
  readme = "README.rst"
  classifiers = [
      "Intended Audience :: Science/Research",
      "Intended Audience :: Developers",
      "Operating System :: Microsoft :: Windows",
      "Operating System :: Unix",
      "Operating System :: MacOS",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Topic :: Software Development",
      "Topic :: Scientific/Engineering",
  ]
  license = { file = "LICENSE" }
  
  [project.optional-dependencies]
  # Requirements necessary for building the documentation
  doc = [
      "matplotlib             >= 3.8.0,   < 4",
      "nilearn                >= 0.11.0,  < 1",
      "numpydoc               >= 1.0.0,   < 2",
      "pydata_sphinx_theme    >= 0.15.1,  < 1",
      "seaborn                >= 0.13,    < 1",
      "sphinxcontrib-bibtex   >= 2.5.0,   < 3",
      "sphinx                 >= 7.0.0,   < 9",
      "sphinx-gallery         >= 0.17.0,  < 1",
      "sphinx-prompt          >= 1.8.0,   < 2",
      "tqdm                   >= 4.1.0,   < 5",
      "sphinx-copybutton"
  ]
  example = ["matplotlib >= 3.1.0,   < 4", "seaborn    >= 0.9,     < 1"]
  style = ["black  >= 24.4.2", "codespell >=2.4.0", "isort  >= 5.13.2"]
  
  # For running unit and docstring tests
  test = [
      "coverage       >= 6.0,     < 8",
      "iniconfig      >= 0.1,     < 3",
      "matplotlib     >= 3.4.0,   < 4",
      "packaging      >= 14.0,    < 100",
      "pytest         >= 8.0,     < 9",
      "pytest-cov     >= 5.0, < 8",
      "pytest-durations >= 1.0.0, < 2",
      "pytest-env     >= 1.0.0,   < 2",
      "pytest-html    >= 4.0.0,   < 5",
      "pytest-mpl     >= 0.14,    < 1",
      "pytest-randomly >= 3.3.0, < 5",
      "pytest-reportlog >= 0.2.1, < 1",
      "pytest-timeout >= 2.3.1,   < 3",
      "pytest-xdist[psutil] >= 3.4.0,  < 4",
      "seaborn        >= 0.12,     < 1",
  ]
  
  [project.urls]
  Development = "https://github.com/nilearn/nilearn"
  Homepage = "https://mind-inria.github.io/hidimstat"
  Repository = "https://github.com/mind-inria/hidimstat"
  
  [tool.codespell]
  builtin = "clear,rare,en-GB_to_en-US"
  skip = "./.git,*.bib,./docs/_build"
  
  [tool.isort]
  profile = "black"
  skip = ["src/hidimstat/_version.py", "docs/_build"]
  
  [tool.hatch.build.hooks.vcs]
  version-file = "src/hidimstat/_version.py"
  
  [tool.hatch.build.targets.wheel]
  packages = ["src/hidimstat"]
  
  [tool.setuptools.packages.find]
  where = ["src"]
  
  
  [tool.hatch.version]
  source = "vcs"
  
  # initialization based on the good practice of pytest
  # https://docs.pytest.org/en/stable/explanation/goodpractices.html
  [tool.pytest.ini_options]
  minversion = "8.0"
  pythonpath = "src"
  testpaths = "test"
  addopts = [
      "-rA",                     # short test summary info
      "--import-mode=importlib", # better control of importing packages
      "--showlocals",            # show local variable inn trackbacks
      "--strict-config",         # no warning from parsing pytest configuration file
      "--strict-markers",        # undefine markers will raise an error
      # pytest-randomly
      # "--randomly-dont-reset-seed", # turn off the rest of the random seed 
      # pytest-xdist option
      "-n=auto", # automatically define the number of process
  ]
  markers = [
      "slow: marks tests as slow (deselect with '-m \"not slow\"')",
      "mpl_image_compare: marks tests to be compared with a baseline image (from pytest-mpl)",
  ]
  # pytest-timeout
  timeout = 60           # on individual test should not take more than 10s
  session_timeout = 1200 # all the tests should be run in 5 min
  
  [tool.pytest_env]
  OPENBLAS_NUM_THREADS = 1
  BLIS_NUM_THREADS = 1
  MKL_NUM_THREADS = 1
  OMP_NUM_THREADS = 1
  