[tox]
envlist =
    py{37,38,39,310,311,312}
    pypy3
    build
    cov
    fmt
    lint

[testenv]
extras =
    test
commands =
    pytest {posargs}

[testenv:build]
deps =
    build>=1
    twine
commands =
    python -m build
    ; twine check dist/*.whl dist/*.tar.gz

[testenv:clean]
skip_install = true
deps =
    cleanpy>=0.4
commands =
    cleanpy --all --exclude-envs .

[testenv:cov]
passenv = *
extras =
    test
deps =
    coverage[toml]>=5
commands =
    coverage run -m pytest {posargs:-vv}
    coverage report -m

[testenv:fmt-black]
skip_install = true
deps =
    autoflake>=2
    black>=24.1
    isort>=5
commands =
    autoflake --in-place --recursive --remove-all-unused-imports --ignore-init-module-imports .
    isort .
    black setup.py test pathvalidate

[testenv:fmt]
skip_install = true
deps =
    autoflake>=2
    isort>=5
    ruff>=0.3.5
commands =
    autoflake --in-place --recursive --remove-all-unused-imports --ignore-init-module-imports .
    isort .
    ruff format

[testenv:lint]
extras =
    test
deps =
    codespell>=2
    mypy>=1
    pyright>=1.1
    releasecmd
    ruff>=0.3.5
    setuptools_scm
commands =
    mypy tcolorpy setup.py
    codespell tcolorpy test -q2 --check-filenames
    pyright
    ruff format --check
    ruff check
