[tox]
envlist =
    py3{13,12,11,10,9}
    pypy310
    py313-min
    py39-dev
    style
    typing
    docs
skip_missing_interpreters = true

[testenv]
package = wheel
wheel_build_env = .pkg
envtmpdir = {toxworkdir}/tmp/{envname}
constrain_package_deps = true
use_frozen_constraints = true
deps =
    -r requirements/tests.txt
    min: -r requirements/tests-min.txt
    dev: -r requirements/tests-dev.txt
commands = pytest -v --tb=short --basetemp={envtmpdir} {posargs}

[testenv:style]
deps = pre-commit
skip_install = true
commands = pre-commit run --all-files

[testenv:typing]
deps = -r requirements/typing.txt
commands =
    mypy
    pyright

[testenv:docs]
deps = -r requirements/docs.txt
commands = sphinx-build -E -W -b dirhtml docs docs/_build/dirhtml

[testenv:update-actions]
labels = update
deps = gha-update
skip_install = true
commands = gha-update

[testenv:update-pre_commit]
labels = update
deps = pre-commit
skip_install = true
commands = pre-commit autoupdate -j4

[testenv:update-requirements]
labels = update
deps = pip-tools
skip_install = true
change_dir = requirements
commands =
    pip-compile build.in -q {posargs:-U}
    pip-compile docs.in -q {posargs:-U}
    pip-compile tests.in -q {posargs:-U}
    pip-compile tests-min.in -q
    pip-compile typing.in -q {posargs:-U}
    pip-compile dev.in -q {posargs:-U}
