From ab0fff9dd3377e4ddd2035994d9e1736fed43c62 Mon Sep 17 00:00:00 2001 From: Jamie Hewland Date: Sat, 19 Jun 2021 18:02:53 +0100 Subject: [PATCH] Test on Python 3.10 (#1201) --- .github/workflows/test-suite.yml | 2 +- docs/graphql.md | 7 ++++--- requirements.txt | 2 +- setup.cfg | 5 +++++ setup.py | 3 ++- tests/conftest.py | 4 ++++ 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index eed46850a..751c5193b 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - python-version: ["3.6", "3.7", "3.8", "3.9"] + python-version: ["3.6", "3.7", "3.8", "3.9", "3.10.0-beta.3"] steps: - uses: "actions/checkout@v2" diff --git a/docs/graphql.md b/docs/graphql.md index 72b6478f8..281bdea85 100644 --- a/docs/graphql.md +++ b/docs/graphql.md @@ -2,9 +2,10 @@ !!! Warning GraphQL support in Starlette is **deprecated** as of version 0.15 and will - be removed in a future release. Please consider using a third-party library - to provide GraphQL support. This is usually done by mounting a GraphQL ASGI - application. See [#619](https://github.com/encode/starlette/issues/619). + be removed in a future release. It is also incompatible with Python 3.10+. + Please consider using a third-party library to provide GraphQL support. This + is usually done by mounting a GraphQL ASGI application. + See [#619](https://github.com/encode/starlette/issues/619). Some example libraries are: * [Ariadne](https://ariadnegraphql.org/docs/asgi) diff --git a/requirements.txt b/requirements.txt index 5d0fd280d..abc7a3b0a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Optionals -graphene +graphene; python_version<'3.10' itsdangerous jinja2 python-multipart diff --git a/setup.cfg b/setup.cfg index 1f2db52f0..f59a72029 100644 --- a/setup.cfg +++ b/setup.cfg @@ -32,3 +32,8 @@ filterwarnings= [coverage:run] source_pkgs = starlette, tests +# GraphQLApp incompatible with and untested on Python 3.10. It's deprecated, let's just ignore +# coverage for it until it's gone. +omit = + starlette/graphql.py + tests/test_graphql.py diff --git a/setup.py b/setup.py index a687ad861..978a606c7 100644 --- a/setup.py +++ b/setup.py @@ -40,7 +40,7 @@ def get_long_description(): install_requires=["anyio>=3.0.0,<4"], extras_require={ "full": [ - "graphene", + "graphene; python_version<'3.10'", "itsdangerous", "jinja2", "python-multipart", @@ -60,6 +60,7 @@ def get_long_description(): "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ], zip_safe=False, ) diff --git a/tests/conftest.py b/tests/conftest.py index d1f3ba8e4..9ed420305 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,11 @@ +import sys + import pytest from starlette.testclient import TestClient +collect_ignore = ["test_graphql.py"] if sys.version_info >= (3, 10) else [] + @pytest.fixture( params=[