Skip to content

Commit 639c941

Browse files
authored
build(tests): Python 3.10 support (#1309)
Adding Python 3.10 to our test suite Refs GH-1273 * Do not test Flask 0.11 and 0.12 in Python 3.10 * fix(python): Capture only 5xx HTTP errors in Falcon Integration (#1314) * Write code that is actually somehow typed and can be linted. * Updated test matrix for Tornado and Asgi
1 parent bebd815 commit 639c941

File tree

4 files changed

+31
-26
lines changed

4 files changed

+31
-26
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
strategy:
7676
matrix:
7777
linux-version: [ubuntu-latest]
78-
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9"]
78+
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10"]
7979
include:
8080
# GHA doesn't host the combo of python 3.4 and ubuntu-latest (which is
8181
# currently 20.04), so run just that one under 18.04. (See

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def get_file_text(file_name):
7272
"Programming Language :: Python :: 3.7",
7373
"Programming Language :: Python :: 3.8",
7474
"Programming Language :: Python :: 3.9",
75+
"Programming Language :: Python :: 3.10",
7576
"Topic :: Software Development :: Libraries :: Python Modules",
7677
],
7778
options={"bdist_wheel": {"universal": "1"}},

test-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
pytest
2-
pytest-forked==1.1.3
2+
pytest-forked
33
tox==3.7.0
44
Werkzeug
55
pytest-localserver==0.5.0

tox.ini

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[tox]
77
envlist =
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]
9191
deps =
@@ -96,9 +96,9 @@ deps =
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

Comments
 (0)