冗長なtoxのマトリックスビルドの設定を整理する

django-ftpserverDjangoフレームワークに依存するライブラリなので、toxで複数のPythonバージョンとDjangoバージョンの組合せでテストコードを実行するように設定しています。

tox.iniの設定が冗長だなあと感じていたのですが、envlistのマトリックスをシンプルに記載する方法があるのを教えてもらいました。

envlistで {} を使うとenvlistのマトリックスをすっきりまとめることができ、depsに pattern: のように記述することで、条件付きのライブラリ依存を記述できます。

[tox]
envlist =
  py{36,37,38,39}-dj{22,30,31},
  py{36,37,38,39,310}-dj32,
  py{38,39,310}-dj40,
  coverage,
  flake8

[testenv]
commands = pytest
setenv =
  PYTHONDONTWRITEBYTECODE=1
  PYTHONWARNINGS=once
deps =
  dj22: Django>=2.2,<2.3
  dj30: Django>=3.0,<3.1
  dj31: Django>=3.1,<3.2
  dj32: Django>=3.2,<3.3
  dj40: Django>=4.0,<4.1
  pyftpdlib
  pytest
  pytest-django
  pytest-pythonpath

shkumagaiさんがメンテしてるライブラリのリポジトリを参考にさせてもらいました。ありがとうございます。

GitHub - shkumagai/drf_renderer_svgheatmap: Rendering SVG Heatmap for Django REST Framework