content: [build-system]
  build-backend = "setuptools.build_meta"
  requires = [
    "setuptools",
    "setuptools-scm"
  ]
  
  [project]
  authors = [
    {email = "m.graham@ucl.ac.uk", name = "Matt Graham"}
  ]
  classifiers = [
    "Operating System :: OS Independent",
    "Topic :: Scientific/Engineering",
    "Intended Audience :: Science/Research",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Typing :: Typed"
  ]
  dependencies = [
    "numpy>=1.22",
    "scipy>=1.1"
  ]
  description = "MCMC samplers based on simulating Hamiltonian dynamics on a manifold."
  dynamic = [
    "version"
  ]
  keywords = [
    "inference",
    "sampling",
    "MCMC",
    "HMC"
  ]
  name = "mici"
  readme = "README.md"
  requires-python = ">=3.10"
  license.file = "LICENCE"
  
  [project.optional-dependencies]
  autograd = [
    "autograd>=1.3",
    "multiprocess>=0.7.0"
  ]
  dev = [
    "black",
    "build",
    "mypy",
    "pre-commit",
    "pytest",
    "ruff",
    "tox>=4",
    "twine"
  ]
  jax = [
    "jax>=0.4.1",
    "multiprocess>=0.7.0"
  ]
  symnum = [
    "symnum>=0.2.1"
  ]
  
  [project.urls]
  documentation = "https://matt-graham.github.io/mici"
  homepage = "https://github.com/matt-graham/mici"
  
  [tool.coverage]
  run = {branch = true, parallel = true, relative_files = true, source = [
    "mici"
  ]}
  paths.source = [
    "src",
    ".tox*/*/lib/python*/site-packages"
  ]
  
  [tool.coverage.report]
  exclude_also = [
    "if TYPE_CHECKING:"
  ]
  skip_covered = true
  sort = "cover"
  
  [tool.pytest.ini_options]
  addopts = "--color=yes -v"
  testpaths = [
    "tests"
  ]
  
  [tool.ruff]
  force-exclude = true
  target-version = "py310"
  
  [tool.ruff.lint]
  ignore = [
    "ANN003", # missing-type-kwargs
    "D102", # missing docstrings on public methods
    "D105", # missing docstrings on magic methods
    "D107", # missing docstring on __init__ method
    "D205", # blank line between summary and description in docstrings
    "D212", # multi-line-summary-first-line
    "D417", # argument description in docstring (unreliable)
    "COM812", # missing-trailing-comma (conflicts with ruff format)
    "ISC001" # single-line-implicit-string-concatenation (conflifts with ruff format)
  ]
  per-file-ignores = {"test_*" = [
    "ANN",
    "ARG002",
    "D100",
    "D101",
    "D102",
    "D103",
    "INP001",
    "S101",
    "SLF"
  ], "docs/**.py" = [
    "ANN",
    "D",
    "INP001"
  ], "__init__.py" = [
    "F401"
  ]}
  select = [
    "A",
    "ANN",
    "ARG",
    "ASYNC",
    "B",
    "BLE",
    "C",
    "C4",
    "C90",
    "COM",
    "D",
    "DJ",
    "DTZ",
    "E",
    "EM",
    "ERA",
    "EXE",
    "F",
    "FA",
    "FBT",
    "FLY",
    "I",
    "ICN",
    "INP",
    "ISC",
    "LOG",
    "N",
    "NPY",
    "PD",
    "PERF",
    "PGH",
    "PIE",
    "PL",
    "PT",
    "PTH",
    "PYI",
    "Q",
    "RET",
    "RSE",
    "RUF",
    "S",
    "SIM",
    "SLF",
    "SLOT",
    "T",
    "T20",
    "TCH",
    "TD",
    "TID",
    "TRY",
    "UP",
    "W",
    "YTT"
  ]
  isort.known-first-party = [
    "mici"
  ]
  mccabe.max-complexity = 18
  pep8-naming.classmethod-decorators = [
    "classmethod",
    "pydantic.validator"
  ]
  pydocstyle.convention = "google"
  pylint.max-args = 20
  
  [tool.setuptools_scm]
  local_scheme = "no-local-version"
  write_to = "src/mici/_version.py"
  
  [tool.tox]
  legacy_tox_ini = """
      [gh-actions]
      python =
          3.10: py310
          3.11: py311
          3.12: py312
          3.13: py313
  
      [testenv]
      commands =
          pytest --cov --cov-branch --cov-report=xml {posargs}
      extras =
          autograd
          jax
          symnum
      deps =
          pytest
          pytest-cov
          py3{10,11,12}: pystan
          pymc>=5
          arviz
      set_env =
          JAX_ENABLE_X64=1
  
      [testenv:docs]
      commands =
          sphinx-apidoc -o docs src/ -T -e -d 2 -M
          sphinx-build -W -b html docs docs/_build/html
      deps =
          sphinx
          pydata-sphinx-theme
  
      [tox]
      env_list =
          py310
          py311
          py312
          py313
  """
  