content: [build-system]
  build-backend = "hatchling.build"
  requires = [
    "hatchling",
  ]
  
  [project]
  name = "html-sanitizer"
  description = "HTML sanitizer"
  readme = "README.rst"
  license = { text = "BSD-3-Clause" }
  authors = [
    { name = "Matthias Kestenholz", email = "mk@feinheit.ch" },
  ]
  requires-python = ">=3.8"
  classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Environment :: Web Environment",
    "Framework :: Django",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: BSD 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",
    "Programming Language :: Python :: 3.13",
    "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
    "Topic :: Software Development",
  ]
  dynamic = [
    "version",
  ]
  dependencies = [
    "beautifulsoup4",
    "lxml>=5.2",
    "lxml-html-clean>=0.4",
  ]
  urls.Homepage = "https://github.com/matthiask/html-sanitizer/"
  
  [tool.hatch.version]
  path = "html_sanitizer/__init__.py"
  
  [tool.ruff]
  target-version = "py38"
  
  fix = true
  show-fixes = true
  lint.extend-select = [
    # flake8-bugbear
    "B",
    # flake8-comprehensions
    "C4",
    # mmcabe
    "C90",
    # flake8-django
    "DJ",
    "E",
    # pyflakes, pycodestyle
    "F",
    # flake8-boolean-trap
    "FBT",
    # flake8-logging-format
    "G",
    # isort
    "I",
    # flake8-gettext
    "INT",
    # pep8-naming
    "N",
    # pygrep-hooks
    "PGH",
    # flake8-pie
    "PIE",
    # pylint
    "PLC",
    "PLE",
    "PLW",
    # unused noqa
    "RUF100",
    # flake8-simplify
    "SIM",
    # flake8-tidy-imports
    "TID",
    # pyupgrade
    "UP",
    "W",
    # flake8-2020
    "YTT",
  ]
  lint.extend-ignore = [
    # Allow zip() without strict=
    "B905",
    # No line length errors
    "E501",
    # Let me use percent formatting, it's not broken
    "UP031",
  ]
  lint.per-file-ignores."*/migrat*/*" = [
    # Allow using PascalCase model names in migrations
    "N806",
    # Ignore the fact that migration files are invalid module names
    "N999",
  ]
  lint.isort.combine-as-imports = true
  lint.isort.lines-after-imports = 2
  lint.mccabe.max-complexity = 15
  