[project]
name = "pdoc"
description = "API Documentation for Python Projects"
readme = "README.md"
requires-python = ">=3.9"
license = { text="MIT-0" }
authors = [{name = "Maximilian Hils", email = "pdoc@maximilianhils.com"}]
dynamic = ["version"]

dependencies = [
    "Jinja2 >= 2.11.0",
    "pygments >= 2.12.0",
    "MarkupSafe >= 1.1.1",
]

classifiers = [
    "Topic :: Documentation",
    "Topic :: Software Development :: Documentation",
    "Topic :: Utilities",
    "License :: Public Domain",
    "Development Status :: 5 - Production/Stable",
    "Environment :: Console",
    "Intended Audience :: Developers",
    "Operating System :: OS Independent",
    "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",
    "Typing :: Typed",
]

[project.urls]
Homepage = "https://pdoc.dev"
Source = "https://github.com/mitmproxy/pdoc/"
Documentation = "https://pdoc.dev/docs/pdoc.html"
Issues = "https://github.com/mitmproxy/pdoc/issues"

[project.scripts]
pdoc = "pdoc.__main__:cli"

[tool.uv]
dev-dependencies = [
    "tox>=4.21.2",
    "tox-uv>=1.13.0",
    "ruff>=0.6.9",
    "mypy>=1.11.2",
    "types-pygments>=2.18.0.20240506",
    "pytest>=8.3.3",
    "pytest-cov>=5.0.0",
    "pytest-timeout>=2.3.1",
    "hypothesis>=6.113.0",
    "pdoc-pyo3-sample-library>=1.0.11",
]

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[tool.setuptools.dynamic]
version = {attr = "pdoc.__version__"}

[tool.setuptools.packages.find]
include = ["pdoc*"]

[tool.coverage.run]
branch = false
omit = [
    "pdoc/markdown2/*",
]

# continue exclude: https://github.com/nedbat/coveragepy/issues/198
[tool.coverage.report]
show_missing = true
exclude_lines = [
    "pragma: no cover",
    "@overload",
    "if TYPE_CHECKING:",
    "pass",
    "continue",
]

[tool.pytest.ini_options]
testpaths = "test"
addopts = "-p no:xdist"
timeout = 120
markers = [
    "slow: marks tests as slow.",
]

[[tool.mypy.overrides]]
module = "pytest.*"
ignore_missing_imports = true

[[tool.mypy.overrides]]
module = "demopackage2"
ignore_missing_imports = true

[tool.ruff]
extend-exclude = ["test/testdata/demo.py"]

[tool.ruff.lint]
select = ["E", "F", "I"]
ignore = ["E501"]
isort = { force-single-line = true, force-sort-within-sections = true }

[tool.tox]
legacy_tox_ini = """
[tox]
envlist = lint, py
toxworkdir = {env:TOX_WORK_DIR:.tox}
runner = uv-venv-lock-runner

[testenv]
commands =
    pdoc --version
    pytest --cov=pdoc --cov-report term-missing {posargs:-m "not slow"}

[testenv:old-dependencies]
uv_resolution = lowest

[testenv:lint]
commands =
    ruff check . {posargs}
    mypy pdoc test {posargs}
"""
