content: [build-system]
  requires = ["scikit-build-core >=0.10", "nanobind >=1.3.2"]
  build-backend = "scikit_build_core.build"
  
  [project]
  name = "lotf"
  version = "0.0.4"
  description = "LotusFilter: Diversity-aware approximate nearest neighbor search"
  readme = "README.md"
  requires-python = ">=3.10"
  authors = [
      { name = "Yusuke Matsui", email = "matsui@hal.t.u-tokyo.ac.jp" },
  ]
  classifiers = [
      "License :: OSI Approved :: MIT License",
  ]
  dependencies = [
      "numpy",
  ]
  
  [project.urls]
  Homepage = "https://github.com/matsui528/lotf"
  Documentation = "https://matsui528.github.io/lotf"
  
  [project.optional-dependencies]
  docs = [
      "sphinx>=7.0",
      "furo>=2024.1.29",
      "myst-parser>=2.0",
      "sphinx-autodoc-typehints>=1.25",
      "sphinx-copybutton>=0.5",
      "linkify-it-py>=2.0",  # Required for myst-parser linkify extension
  ]
  
  
  [tool.scikit-build]
  # Protect the configuration against future changes in scikit-build-core
  minimum-version = "build-system.requires"
  
  # Setuptools-style build caching in a local directory
  build-dir = "build/{wheel_tag}"
  
  # Build stable ABI wheels for CPython 3.12+
  wheel.py-api = "cp312"
  
  [tool.cibuildwheel]
  # Maximum verbosity to see Boost detection and compilation details
  build-verbosity = 2
  
  # Run pytest to ensure that the package was correctly built
  test-command = "pytest {project}/tests"
  test-requires = "pytest"
  
  
  [tool.ruff]
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".git-rewrite",
      ".hg",
      ".ipynb_checkpoints",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pyenv",
      ".pytest_cache",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "site-packages",
      "venv",
  ]
  
  # Same as Black.
  line-length = 88
  indent-width = 4
  
  # Target Python 3.10
  target-version = "py310"
  
  [tool.ruff.lint]
  # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.
  # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
  # McCabe complexity (`C901`) by default.
  select = ["E4", "E7", "E9", "F"]
  ignore = []
  
  # Allow fix for all enabled rules (when `--fix`) is provided.
  fixable = ["ALL"]
  unfixable = []
  
  # Allow unused variables when underscore-prefixed.
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  [tool.ruff.format]
  # Like Black, use double quotes for strings.
  quote-style = "double"
  
  # Like Black, indent with spaces, rather than tabs.
  indent-style = "space"
  
  # Like Black, respect magic trailing commas.
  skip-magic-trailing-comma = false
  
  # Like Black, automatically detect the appropriate line ending.
  line-ending = "auto"
  