[tox]
envlist=
    coveralls, pylint, flake8, pydocstyle, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, pypy2, pypy3

[testenv]
deps=
    # TODO: Hotfix, remove when fixed https://github.com/aio-libs/aiohttp/issues/5107
    typing_extensions
    httpx
    fastapi
    numpy
    scipy
    boto3
    mypy_boto3_s3
extras=
    yaml
    pydantic
    flask
    aiohttp
commands=
    python -m unittest discover -s tests/unit -p test_*_py3*.py

[testenv:coveralls]
passenv = GITHUB_* COVERALLS_*
basepython=python3.9
usedevelop=True
deps=
    {[testenv]deps}
    cython
    coverage
    coveralls
commands=
    coverage erase
    coverage run --rcfile=./.coveragerc -m unittest discover -s tests/unit/ -p test_*_py3*.py
    coverage report --rcfile=./.coveragerc
    coveralls

[testenv:2.7]
deps=
extras=
    yaml
    flask
commands=
    python -m unittest discover -s tests/unit -p test_*_py2_py3.py

[testenv:3.4]
deps=
    contextvars
extras=
    flask
commands=
    python -m unittest discover -s tests/unit -p test_*_py3.py

[testenv:3.5]
deps=
    contextvars
extras=
    yaml
    flask
commands=
    python -m unittest discover -s tests/unit -p test_*_py3.py

[testenv:pypy2]
deps=
extras=
    yaml
    flask
commands=
    python -m unittest discover -s tests/unit -p test_*_py2_py3.py

[testenv:pypy3]
deps=
    httpx
    fastapi
    boto3
    mypy_boto3_s3
extras=
    yaml
    flask
commands=
    python -m unittest discover -s tests/unit -p test_*_py2_py3.py


[testenv:pylint]
deps=
    pylint
commands=
    - pylint -f colorized --rcfile=./.pylintrc src/dependency_injector

[testenv:flake8]
deps=
    flake8
commands=
    flake8 --max-complexity=10 src/dependency_injector/
    flake8 --max-complexity=10 examples/

[testenv:pydocstyle]
deps=
    pydocstyle
commands=
    pydocstyle src/dependency_injector/
    pydocstyle examples/

[testenv:mypy]
deps=
    mypy
commands=
    mypy tests/typing
