[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "mkdocs-redirects"
description = "A MkDocs plugin for dynamic page redirects to prevent broken links"
readme = "README.md"
license = "MIT"
keywords = ["mkdocs", "mkdocs-plugin", "redirect"]
authors = [
    {name = "Dustin Burke", email = "dustin@datarobot.com"},
]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Environment :: Console",
    "Environment :: Web Environment",
    "Intended Audience :: Information Technology",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "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",
    "Topic :: Documentation",
    "Topic :: Software Development :: Documentation",
    "Topic :: Text Processing :: Markup :: Markdown",
    "Typing :: Typed",
]
dynamic = ["version"]
requires-python = ">=3.8"
dependencies = [
    "mkdocs >=1.1.1",
    #min "jinja2 >=2.10.1",
    #min "markupsafe >=2.0.1",
]

[project.urls]
Documentation = "https://github.com/mkdocs/mkdocs-redirects#readme"
Source = "https://github.com/mkdocs/mkdocs-redirects"
Issues = "https://github.com/mkdocs/mkdocs-redirects/issues"
History = "https://github.com/mkdocs/mkdocs-redirects/releases"

[project.entry-points."mkdocs.plugins"]
redirects = "mkdocs_redirects.plugin:RedirectPlugin"

[tool.hatch.version]
path = "mkdocs_redirects/__init__.py"

[tool.hatch.build.targets.sdist]
include = ["/mkdocs_redirects", "/tests"]

[tool.hatch.env]
requires = ["hatch-pip-compile >=1.7.0"]

[tool.hatch.envs.default.scripts]
all = [
    "hatch run style:fix",
    "hatch run types:check",
    "hatch run test:test",
]

[tool.hatch.envs.test]
dependencies = [
    "pytest",
]
[tool.hatch.envs.test.scripts]
test = [
    "pytest -q {args}",
]

[tool.hatch.envs.types]
dependencies = [
    "mypy",
]
[tool.hatch.envs.types.scripts]
check = "mypy {args} mkdocs_redirects"

[tool.hatch.envs.style]
type = "pip-compile"
detached = true
dependencies = [
    "ruff",
]
[tool.hatch.envs.style.scripts]
check = "ruff check mkdocs_redirects tests {args}"
format = "ruff format -q mkdocs_redirects tests"
fix = [
    "check --fix --unsafe-fixes",
    "format",
]

[tool.ruff]
line-length = 100
[tool.ruff.lint]
preview = true
select = [
    "F", "E", "W", "I", "UP", "YTT", "C4", "DTZ", "T10", "FA", "ISC", "PIE", "T20", "RSE", "TCH",
    "N803", "N804", "N805", "N806", "N807", "N815", "N816", "N999",
    "B002", "B003", "B005", "B007", "B008", "B009", "B010", "B011", "B012", "B013", "B014", "B015", "B016", "B017", "B018", "B020", "B021", "B022", "B023", "B025", "B026", "B029", "B030", "B031", "B032", "B033", "B034", "B035", "B905",
    "COM818",
    "G001", "G010", "G202",
    "Q004",
    "RET502", "RET504",
    "SIM101", "SIM103", "SIM105", "SIM107", "SIM118", "SIM201", "SIM202", "SIM208", "SIM210", "SIM211", "SIM212", "SIM220", "SIM221", "SIM222", "SIM223", "SIM300", "SIM401", "SIM910", "SIM911",
    "PGH003", "PGH004", "PGH005",
    "PLC0105", "PLC0131", "PLC0132", "PLC0205", "PLC0208", "PLC0414", "PLC2401", "PLC2403", "PLC2701", "PLC2801", "PLC3002",
    "PLE0100", "PLE0101", "PLE0116", "PLE0117", "PLE0118", "PLE0241", "PLE0302", "PLE0307", "PLE0604", "PLE0605", "PLE0704", "PLE1132", "PLE1142", "PLE1205", "PLE1206", "PLE1300", "PLE1307", "PLE1310", "PLE1507", "PLE1700", "PLE2502", "PLE2510", "PLE2512", "PLE2513", "PLE2514", "PLE2515",
    "PLR0124", "PLR0133", "PLR0206", "PLR0402", "PLR1701", "PLR1722", "PLR1733", "PLR1736",
    "PLW0108", "PLW0120", "PLW0127", "PLW0129", "PLW0131", "PLW0245", "PLW0406", "PLW0602", "PLW0603", "PLW0604", "PLW0711", "PLW1501", "PLW1508", "PLW1514", "PLW2101", "PLW3301",
    "TRY302", "TRY401",
    "FLY002",
    "PERF101", "PERF102", "PERF402", "PERF403",
    "FURB105", "FURB118", "FURB131", "FURB132", "FURB148", "FURB163", "FURB167", "FURB168", "FURB169",
    "LOG001", "LOG009",
    "RUF001", "RUF005", "RUF007", "RUF008", "RUF009", "RUF010", "RUF013", "RUF015", "RUF016", "RUF017", "RUF018", "RUF019", "RUF020", "RUF021", "RUF022", "RUF100", "RUF200",
]
ignore = ["E501", "E731"]
[tool.ruff.lint.flake8-comprehensions]
allow-dict-calls-with-keyword-arguments = true

[tool.mypy]
warn_unreachable = true
allow_redefinition = true

[tool.pytest.ini_options]
addopts = "--tb=native"
enable_assertion_pass_hook = true
filterwarnings = ["ignore::DeprecationWarning:.*:",
                  "default::DeprecationWarning:mkdocs_redirects.*:"]
testpaths = ["tests"]
