[tox]
minversion = 4.0.0
envlist =
    lint
    docs
    py{38,39,310,311,312,313}
isolated_build = True

[testenv]
description = Run unit-testing
deps =
    poetry
# do not put * in passenv as it may break builds due to reduced isolation
passenv =
    CI
    GITHUB_*
    HOME
    PYTEST_*
    SSH_AUTH_SOCK
    TERM
setenv =
    PYTHONDONTWRITEBYTECODE=1
    PYTHONUNBUFFERED=1
commands =
    poetry install
    pytest --cov-report term-missing --cov=rich tests/ {posargs}

[testenv:lint]
description = Runs all linting tasks
commands_pre =
    poetry install -vv --with lint
commands =
    ; poetry install --only dev
    # as long GHA pipelines are not configured to use tox, we should call
    # `make` in order to make testing similar and prevent divergence.
    make format-check
    make typecheck
deps =
    poetry
skip_install = true
allowlist_externals =
    make
    poetry

[testenv:docs]
description = Builds documentation
changedir = docs
deps =
    -r docs/requirements.txt
commands =
    sphinx-build -M html source build
