[tox]
isolated_build = true
envlist =
    py3
    lint
    mypy
    auditwheels

[testenv]
commands = 
    pytest -n6 --extra-info -v -rsXx --ignored --strict-tls {posargs: tests examples}
    pip wheel . -w {toxworkdir}/wheelhouse --no-deps
setenv =
# Avoid stack overflow when Rust core is built without optimizations.
    RUST_MIN_STACK=8388608
passenv = 
    DCC_RS_DEV
    DCC_RS_TARGET
    CHATMAIL_DOMAIN
    CARGO_TARGET_DIR
    RUSTC_WRAPPER
deps = 
    pytest
    pytest-timeout
    pytest-xdist
    pdbpp
    requests
# urllib3 2.0 does not work in manylinux2014 containers.
# https://github.com/deltachat/deltachat-core-rust/issues/4788
    urllib3<2

[testenv:.pkg]
passenv =
    DCC_RS_DEV
    DCC_RS_TARGET
    CARGO_TARGET_DIR
    RUSTC_WRAPPER

[testenv:lint]
skipsdist = True
skip_install = True
deps =
    ruff
    black
    # pygments required by rst-lint
    pygments
    restructuredtext_lint 
commands =
    black --quiet --check --diff setup.py src/deltachat examples/ tests/
    ruff check src/deltachat tests/ examples/
    rst-lint --encoding 'utf-8' README.rst

[testenv:mypy]
deps =
    mypy
    typing
    types-setuptools
    types-requests
commands =
    mypy --no-incremental src/

[testenv:doc]
changedir=doc
deps =
# Pinned version, workaround for <https://github.com/breathe-doc/breathe/issues/981>
    sphinx<7.3
    breathe
    sphinx_rtd_theme
commands =
    sphinx-build -Q -w toxdoc-warnings.log -b html . _build/html


[testenv:lintdoc]
skipsdist = True
usedevelop = True
deps =
    {[testenv:lint]deps}
    {[testenv:doc]deps}
commands =
    {[testenv:lint]commands}
    {[testenv:doc]commands}



[pytest]
addopts = -v -ra --strict-markers
norecursedirs = .tox 
xfail_strict=true
timeout = 300
timeout_func_only = True
markers = 
    ignored: ignore this test in default test runs, use --ignored to run.
