[tox]
envlist=
    coveralls, pylint, flake8, pydocstyle, 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, pypy2.7, pypy3.9

[testenv]
deps=
    pytest
    pytest-asyncio
    # 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 = pytest -c tests/.configs/pytest.ini
python_files = test_*_py3*.py

[testenv:coveralls]
passenv = GITHUB_*, COVERALLS_*
basepython=python3.11
usedevelop=True
deps=
    {[testenv]deps}
    cython
    coverage
    coveralls
commands=
    coverage erase
    coverage run --rcfile=./.coveragerc -m pytest -c tests/.configs/pytest.ini
    coverage report --rcfile=./.coveragerc
    coveralls

[testenv:2.7]
deps=
    pytest
extras=
    yaml
    flask
commands = pytest -c tests/.configs/pytest-py27.ini

[testenv:3.5]
deps=
    pytest
    pytest-asyncio
    contextvars
extras=
    yaml
    flask
commands = pytest -c tests/.configs/pytest-py35.ini

[testenv:pypy2.7]
deps=
    pytest
extras=
    yaml
    flask
commands = pytest -c tests/.configs/pytest-py27.ini

[testenv:pypy3.9]
deps=
    pytest
    pytest-asyncio
    httpx
    fastapi
    boto3
    mypy_boto3_s3
extras=
    yaml
    flask
commands = pytest -c tests/.configs/pytest-py27.ini


[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