[build-system] build-backend = "hatchling.build" requires = [ "hatch-vcs>=0.4", "hatchling>=1.25", ] [project] name = "pyproject-fmt" description = "Format your pyproject.toml file" readme = "README.md" keywords = [ "format", "pyproject", ] license.file = "LICENSE.txt" authors = [ { name = "Bernat Gabor", email = "gaborjbernat@gmail.com" }, ] requires-python = ">=3.8" classifiers = [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] dynamic = [ "version", ] dependencies = [ "pyproject-fmt-rust==1.1.6", "tomli>=2.0.1; python_version<'3.11'", ] optional-dependencies.docs = [ "furo>=2024.7.18", "sphinx>=7.4.4", "sphinx-argparse-cli>=1.16", "sphinx-autodoc-typehints>=2.2.3", "sphinx-copybutton>=0.5.2", ] optional-dependencies.test = [ "covdefaults>=2.3", "pytest>=8.3.2", "pytest-cov>=5", "pytest-mock>=3.14", ] urls."Bug Tracker" = "https://github.com/tox-dev/pyproject-fmt/issues" urls."Changelog" = "https://github.com/tox-dev/pyproject-fmt/releases" urls.Documentation = "https://github.com/tox-dev/pyproject-fmt/" urls."Source Code" = "https://github.com/tox-dev/pyproject-fmt" scripts.pyproject-fmt = "pyproject_fmt.__main__:run" [tool.hatch] build.dev-mode-dirs = [ "src", ] build.hooks.vcs.version-file = "src/pyproject_fmt/_version.py" build.targets.sdist.include = [ "/src", "/tests", "tox.ini", ] version.source = "vcs" [tool.ruff] target-version = "py38" line-length = 120 format.preview = true format.docstring-code-line-length = 100 format.docstring-code-format = true lint.select = [ "ALL", ] lint.ignore = [ "ANN101", # no type annotation for self "ANN401", # allow Any as type annotation "COM812", # Conflict with formatter "CPY", # No copyright statements "D203", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible "D212", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible "DOC501", # not working with Sphinx "ISC001", # Conflict with formatter "S104", # Possible binding to all interfaces ] lint.per-file-ignores."tests/**/*.py" = [ "D", # don"t care about documentation in tests "FBT", # don"t care about booleans as positional arguments in tests "INP001", # no implicit namespace "PLC2701", # private import "PLR0913", # any number of arguments in tests "PLR0917", # any number of arguments in tests "PLR2004", # Magic value used in comparison, consider replacing with a constant variable "S101", # asserts allowed in tests... "S603", # `subprocess` call: check for execution of untrusted input ] lint.isort = { known-first-party = [ "pyproject_fmt", ], required-imports = [ "from __future__ import annotations", ] } lint.preview = true [tool.codespell] builtin = "clear,usage,en-GB_to_en-US" count = true [tool.pytest] ini_options.testpaths = [ "tests", ] [tool.coverage] html.show_contexts = true html.skip_covered = false paths.source = [ "src", ".tox/*/.venv/lib/*/site-packages", ".tox\\*\\.venv\\Lib\\site-packages", ".tox/*/lib/*/site-packages", ".tox\\*\\Lib\\site-packages", "**/src", "**\\src", ] report.fail_under = 100 run.parallel = true run.plugins = [ "covdefaults", ] covdefaults.subtract_omit = "*/__main__.py" [tool.mypy] show_error_codes = true strict = true