Skip to content
pyproject.toml 3.14 KiB
Newer Older
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "boxtree"
version = "2024.10"
description = "Quadtree/octree building in Python and OpenCL"
readme = "README.rst"
license = { text = "MIT" }
authors = [
    { name = "Andreas Kloeckner", email = "inform@tiker.net" },
]
requires-python = ">=3.10"
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "Intended Audience :: Other Audience",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: MIT License",
    "Natural Language :: English",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3 :: Only",
    "Topic :: Scientific/Engineering",
    "Topic :: Scientific/Engineering :: Information Analysis",
    "Topic :: Scientific/Engineering :: Mathematics",
    "Topic :: Scientific/Engineering :: Visualization",
    "Topic :: Software Development :: Libraries",
    "Topic :: Utilities",
]
dependencies = [
    "arraycontext>=2021.1",
    "cgen>=2020.1",
    "mako",
    "pymbolic>=2022.2",
    "pyopencl>=2022.1",
    "pytools>=2022.1",
]

[project.optional-dependencies]
doc = [
    "furo",
    "sphinx-copybutton",
    "sphinx>=4",
]
fmmlib = [
    "pyfmmlib>=2023.1",
]
meshmode = [
    "loopy>=2024.1",
    "meshmode>=2021.2",
    "modepy>=2021.1",
]
test = [
    "pylint",
    "pytest",
    "ruff",
]

[project.urls]
Documentation = "https://documen.tician.de/boxtree"
Repository = "https://github.com/inducer/boxtree"

[tool.ruff]
preview = true

[tool.ruff.lint]
extend-select = [
    "B",   # flake8-bugbear
    "C",   # flake8-comprehensions
    "E",   # pycodestyle
    "F",   # pyflakes
    "G",   # flake8-logging-format
    "I",   # flake8-isort
    "N",   # pep8-naming
    "NPY", # numpy
    "Q",   # flake8-quotes
Andreas Klöckner's avatar
Andreas Klöckner committed
    "RUF", # ruff
    "SIM", # flake8-simplify
    "UP",  # pyupgrade
    "W",   # pycodestyle
]
extend-ignore = [
    "C90",  # McCabe complexity
    "E221", # multiple spaces before operator
    "E226", # missing whitespace around arithmetic operator
    "E402", # module-level import not at top of file
    "SIM223", # simplify `False and ...` conditional
]

[tool.ruff.lint.flake8-quotes]
docstring-quotes = "double"
inline-quotes = "double"
multiline-quotes = "double"

[tool.ruff.lint.isort]
combine-as-imports = true
known-first-party = [
    "pytools",
    "pymbolic",
    "loopy",
    "pyopencl",
Andreas Klöckner's avatar
Andreas Klöckner committed
    "meshmode",
    "modepy",
    "cgen"
]
known-local-folder = [
    "boxtree",
]
lines-after-imports = 2

# TODO: enable postponed annotations at some point
# required-imports = ["from __future__ import annotations"]
# [tool.ruff.lint.per-file-ignores]
# "doc/**/*.py" = ["I002"]
# "examples/**/*.py" = ["I002"]

[tool.typos.default]
extend-ignore-re = [
  "(?Rm)^.*(#|//)\\s*spellchecker:\\s*disable-line$"
]

[tool.typos.default.extend-words]
# arange like np.arange
arange = "arange"
# as in mis-implements
mis = "mis"

[tool.typos.files]
extend-exclude = [
  "contrib/*/*.ipynb",
  "notes/*/*.eps",
]

[tool.pytest.ini_options]
markers = [
    "opencl: uses OpenCL",
    "geo_lookup: tests geometric lookups",
    "area_query: tests area queries",
    "mpi: tests distributed FMM",