content: [build-system]
  build-backend = "hatchling.build"
  requires = [
    "hatch-vcs>=0.4",
    "hatchling>=1.27",
  ]
  
  [project]
  name = "xml-fmt"
  description = "Run pre-commit with uv"
  readme = "README.md"
  keywords = [
    "format",
    "XML",
  ]
  license.file = "LICENSE.txt"
  authors = [
    { name = "Bernat Gabor", email = "gaborjbernat@gmail.com" },
  ]
  requires-python = ">=3.9"
  classifiers = [
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
  ]
  dynamic = [
    "version",
  ]
  urls."Bug Tracker" = "https://github.com/tox-dev/xml-fmt/issues"
  urls."Changelog" = "https://github.com/tox-dev/xml-fmt/releases"
  urls.Documentation = "https://github.com/tox-dev/xml-fmt/"
  urls."Source Code" = "https://github.com/tox-dev/xml-fmt"
  scripts.xml-fmt = "xml_fmt.__main__:run"
  
  [dependency-groups]
  dev = [
    { include-group = "test" },
    { include-group = "type" },
  ]
  test = [
    "covdefaults>=2.3",
    "pytest>=8.3.4",
    "pytest-cov>=6",
    "pytest-mock>=3.14",
  ]
  type = [
    "mypy==1.14.1",
    { include-group = "test" },
  ]
  fix = [
    "pre-commit-uv>=4.1.4",
  ]
  pkg-meta = [
    "check-wheel-contents>=0.6.1",
    "twine>=6.1",
    "uv>=0.5.26",
  ]
  
  [tool.hatch]
  build.dev-mode-dirs = [
    "src",
  ]
  build.targets.sdist.include = [
    "/src",
    "/tests",
    "tox.ini",
  ]
  build.targets.wheel.only-include = [ "src" ]
  build.targets.wheel.sources = [ "src" ]
  version.source = "vcs"
  
  [tool.ruff]
  target-version = "py39"
  line-length = 120
  format.preview = true
  format.docstring-code-line-length = 100
  format.docstring-code-format = true
  lint.select = [
    "ALL",
  ]
  lint.ignore = [
    "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.
    "S",       # `subprocess` call: check for execution of untrusted input
    "S101",    # asserts allowed in tests.
  ]
  lint.isort = { known-first-party = [
    "xml_fmt",
  ], required-imports = [
    "from __future__ import annotations",
  ] }
  lint.preview = true
  
  [tool.codespell]
  builtin = "clear,usage,en-GB_to_en-US"
  count = true
  
  [tool.pyproject-fmt]
  max_supported_python = "3.13"
  
  [tool.pytest.ini_options]
  filterwarnings = [
    "error",
    "ignore:unclosed database:ResourceWarning",
  ]
  verbosity_assertions = 2
  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 = 63
  run.parallel = true
  run.plugins = [
    "covdefaults",
  ]
  
  [tool.mypy]
  show_error_codes = true
  strict = true
  