[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "pytools" version = "2024.1.21" description = "A collection of tools for Python" readme = "README.rst" license = { text = "MIT" } authors = [ { name = "Andreas Kloeckner", email = "inform@tiker.net" }, ] requires-python = ">=3.10" classifiers = [ "Development Status :: 4 - Beta", "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 = [ "platformdirs>=2.2", # for dataclass_transform with frozen_default "typing-extensions>=4.5", ] [project.optional-dependencies] numpy = [ "numpy>=1.6", ] test = [ "mypy", "pytest", "ruff", ] siphash = [ "siphash24>=1.6", ] [project.urls] Documentation = "https://documen.tician.de/pytools/" Homepage = "https://github.com/inducer/pytools/" [tool.hatch.build.targets.sdist] exclude = [ "/.git*", "/doc/_build", "/.editorconfig", "/run-*.sh", ] [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 "UP", # pyupgrade "RUF", # ruff "W", # pycodestyle "TC", ] 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 "UP031", # use f-strings instead of % "UP032", # use f-strings instead of .format ] [tool.ruff.lint.flake8-quotes] docstring-quotes = "double" inline-quotes = "double" multiline-quotes = "double" [tool.ruff.lint.isort] combine-as-imports = true known-local-folder = [ "pytools", ] lines-after-imports = 2 required-imports = ["from __future__ import annotations"] [tool.ruff.lint.pep8-naming] extend-ignore-names = ["update_for_*"] [tool.mypy] python_version = "3.10" ignore_missing_imports = true warn_unused_ignores = true # TODO: enable this at some point # check_untyped_defs = true [tool.typos.default] extend-ignore-re = [ "(?Rm)^.*(#|//)\\s*spellchecker:\\s*disable-line$" ]