66[tox]
77envlist =
88 # === Core ===
9- py{2.7,3.4,3.5,3.6,3.7,3.8,3.9}
9+ py{2.7,3.4,3.5,3.6,3.7,3.8,3.9,3.10 }
1010 pypy
1111
1212
@@ -24,29 +24,28 @@ envlist =
2424 {pypy,py2.7,py3.5}-django-{1.8,1.9,1.10}
2525 {pypy,py2.7}-django-{1.8,1.9,1.10,1.11}
2626 {py3.5,py3.6,py3.7}-django-{2.0,2.1}
27- {py3.7,py3.8,py3.9}-django-{2.2,3.0,3.1,3.2}
27+ {py3.7,py3.8,py3.9,py3.10 }-django-{2.2,3.0,3.1,3.2}
2828
2929 {pypy,py2.7,py3.4,py3.5,py3.6,py3.7,py3.8,py3.9}-flask-{0.10,0.11,0.12,1.0}
30- {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9}-flask-1.1
31- {py3.6,py3.8,py3.9}-flask-2.0
30+ {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-flask-1.1
31+ {py3.6,py3.8,py3.9,py3.10 }-flask-2.0
3232
33- {py3.7,py3.8,py3.9}-quart
33+ {py3.7,py3.8,py3.9,py3.10 }-quart
3434
35- {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9}-bottle-0.12
35+ {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-bottle-0.12
3636
3737 {pypy,py2.7,py3.5,py3.6,py3.7}-falcon-1.4
38- {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9}-falcon-2.0
38+ {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-falcon-2.0
3939
4040 {py3.5,py3.6,py3.7}-sanic-{0.8,18}
4141 {py3.6,py3.7}-sanic-19
4242 {py3.6,py3.7,py3.8}-sanic-20
43- {py3.7,py3.8,py3.9}-sanic-21
43+ {py3.7,py3.8,py3.9,py3.10 }-sanic-21
4444
45- # TODO: Add py3.9
4645 {pypy,py2.7}-celery-3
4746 {pypy,py2.7,py3.5,py3.6}-celery-{4.1,4.2}
4847 {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-celery-{4.3,4.4}
49- {py3.6,py3.7,py3.8}-celery-5.0
48+ {py3.6,py3.7,py3.8,py3.9,py3.10 }-celery-5.0
5049
5150 py3.7-beam-{2.12,2.13,2.32,2.33}
5251
@@ -55,37 +54,38 @@ envlist =
5554
5655 py3.7-gcp
5756
58- {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9}-pyramid-{1.6,1.7,1.8,1.9,1.10}
57+ {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-pyramid-{1.6,1.7,1.8,1.9,1.10}
5958
6059 {pypy,py2.7,py3.5,py3.6}-rq-{0.6,0.7,0.8,0.9,0.10,0.11}
6160 {pypy,py2.7,py3.5,py3.6,py3.7,py3.8,py3.9}-rq-{0.12,0.13,1.0,1.1,1.2,1.3}
62- {py3.5,py3.6,py3.7,py3.8,py3.9}-rq-{1.4,1.5}
61+ {py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-rq-{1.4,1.5}
6362
6463 py3.7-aiohttp-3.5
65- {py3.7,py3.8,py3.9}-aiohttp-3.6
64+ {py3.7,py3.8,py3.9,py3.10 }-aiohttp-3.6
6665
67- {py3.7,py3.8,py3.9}-tornado-{5,6}
66+ {py3.7,py3.8,py3.9}-tornado-{5}
67+ {py3.7,py3.8,py3.9,py3.10}-tornado-{6}
6868
6969 {py3.5,py3.6,py3.7,py3.8,py3.9}-trytond-{4.6,5.0,5.2}
70- {py3.6,py3.7,py3.8,py3.9}-trytond-{5.4}
70+ {py3.6,py3.7,py3.8,py3.9,py3.10 }-trytond-{5.4}
7171
7272 {py2.7,py3.8,py3.9}-requests
7373
7474 {py2.7,py3.7,py3.8,py3.9}-redis
7575 {py2.7,py3.7,py3.8,py3.9}-rediscluster-{1,2}
7676
77- py{3.7,3.8,3.9}-asgi
77+ py{3.7,3.8,3.9,3.10 }-asgi
7878
79- {py2.7,py3.7,py3.8,py3.9}-sqlalchemy-{1.2,1.3}
79+ {py2.7,py3.7,py3.8,py3.9,py3.10 }-sqlalchemy-{1.2,1.3}
8080
8181
82- {py3.5,py3.6,py3.7,py3.8,py3.9}-pure_eval
82+ {py3.5,py3.6,py3.7,py3.8,py3.9,py3.10 }-pure_eval
8383
8484 {py3.6,py3.7,py3.8}-chalice-{1.16,1.17,1.18,1.19,1.20}
8585
8686 {py2.7,py3.6,py3.7,py3.8}-boto3-{1.9,1.10,1.11,1.12,1.13,1.14,1.15,1.16}
8787
88- {py3.6,py3.7,py3.8,py3.9}-httpx-{0.16,0.17}
88+ {py3.6,py3.7,py3.8,py3.9,py3.10 }-httpx-{0.16,0.17}
8989
9090[testenv]
9191deps =
9696
9797 django-{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: djangorestframework>=3.0.0,<4.0.0
9898
99- {py3.7,py3.8,py3.9}-django-{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: channels>2
100- {py3.7,py3.8,py3.9}-django-{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: pytest-asyncio
101- {py2.7,py3.7,py3.8,py3.9}-django-{1.11,2.2,3.0,3.1,3.2}: psycopg2-binary
99+ {py3.7,py3.8,py3.9,py3.10 }-django-{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: channels>2
100+ {py3.7,py3.8,py3.9,py3.10 }-django-{1.11,2.0,2.1,2.2,3.0,3.1,3.2}: pytest-asyncio
101+ {py2.7,py3.7,py3.8,py3.9,py3.10 }-django-{1.11,2.2,3.0,3.1,3.2}: psycopg2-binary
102102
103103 django-{1.6,1.7}: pytest-django<3.0
104104 django-{1.8,1.9,1.10,1.11,2.0,2.1}: pytest-django<4.0
@@ -140,7 +140,7 @@ deps =
140140 sanic-19: sanic>=19.0,<20.0
141141 sanic-20: sanic>=20.0,<21.0
142142 sanic-21: sanic>=21.0,<22.0
143- {py3.7,py3.8,py3.9}-sanic-21: sanic_testing
143+ {py3.7,py3.8,py3.9,py3.10 }-sanic-21: sanic_testing
144144 {py3.5,py3.6}-sanic: aiocontextvars ==0.2.1
145145 sanic: aiohttp
146146 py3.5-sanic: ujson<4
@@ -163,7 +163,7 @@ deps =
163163 celery-5.0: Celery>=5.0,<5.1
164164
165165 py3.5-celery: newrelic<6.0.0
166- {pypy,py2.7,py3.6,py3.7,py3.8,py3.9}-celery: newrelic
166+ {pypy,py2.7,py3.6,py3.7,py3.8,py3.9,py3.10 }-celery: newrelic
167167
168168 requests: requests>=2.0
169169
@@ -295,6 +295,7 @@ basepython =
295295 py3.7: python3.7
296296 py3.8: python3.8
297297 py3.9: python3.9
298+ py3.10: python3.10
298299
299300 # Python version is pinned here because flake8 actually behaves differently
300301 # depending on which version is used. You can patch this out to point to
@@ -314,6 +315,9 @@ commands =
314315 ; https://github.com/more-itertools/more-itertools/issues/578
315316 py3.5-flask-{0.10,0.11,0.12}: pip install more-itertools<8.11.0
316317
318+ ; use old pytest for old Python versions:
319+ {py2.7,py3.4,py3.5}: pip install pytest-forked ==1.1.3
320+
317321 py.test {env:TESTPATH} {posargs}
318322
319323[testenv:linters]
0 commit comments