[build-system] build-backend = "setuptools.build_meta" requires = [ "setuptools>=63", ] [project] name = "boxtree" version = "2023.1" 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.8" 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.setuptools.packages.find] include = [ "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 "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", "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", ]