[tox] envlist = py312-dj{main,50}-postgres py311-dj{main,50,42,41}-postgres py310-dj{main,50,42,41,32}-postgres py39-dj{main,42,41,32}-postgres py38-dj{main,42,41,32}-postgres py37-dj{32}-postgres linting [testenv] extras = testing deps = djmain: https://github.com/django/django/archive/main.tar.gz dj50: Django>=5.0a1,<5.1 dj42: Django>=4.2,<4.3 dj41: Django>=4.1,<4.2 dj32: Django>=3.2,<4.0 mysql_myisam: mysqlclient==2.1.0 mysql_innodb: mysqlclient==2.1.0 !pypy3-postgres: psycopg2-binary pypy3-postgres: psycopg2cffi coverage: coverage[toml] coverage: coverage-enable-subprocess pytestmin: pytest>=7.0,<7.1 xdist: pytest-xdist>=1.15 setenv = mysql_innodb: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_innodb mysql_myisam: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_mysql_myisam postgres: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_postgres sqlite: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite sqlite_file: DJANGO_SETTINGS_MODULE=pytest_django_test.settings_sqlite_file coverage: PYTESTDJANGO_TEST_RUNNER=coverage run -m pytest coverage: COVERAGE_PROCESS_START={toxinidir}/pyproject.toml coverage: COVERAGE_FILE={toxinidir}/.coverage coverage: PYTESTDJANGO_COVERAGE_SRC={toxinidir}/ passenv = PYTEST_ADDOPTS,TERM,TEST_DB_USER,TEST_DB_PASSWORD,TEST_DB_HOST usedevelop = True commands = coverage: coverage erase {env:PYTESTDJANGO_TEST_RUNNER:pytest} {posargs:tests} coverage: coverage combine coverage: coverage report coverage: coverage xml [testenv:linting] extras = deps = ruff==0.1.3 mypy==1.6.1 commands = ruff check --statistics {posargs:pytest_django pytest_django_test tests} ruff format --quiet --diff {posargs:pytest_django pytest_django_test tests} mypy {posargs:pytest_django pytest_django_test tests} [testenv:doc8] extras = basepython = python3 skip_install = true deps = sphinx doc8 commands = doc8 docs/ [testenv:docs] deps = extras = docs commands = sphinx-build -n -W -b html -d docs/_build/doctrees docs docs/_build/html