File tree 9 files changed +69
-13
lines changed
9 files changed +69
-13
lines changed Original file line number Diff line number Diff line change
1
+ name : CI
2
+
3
+ on :
4
+ push :
5
+ branches : [main, master]
6
+ tags :
7
+ - v[0-9]+.[0-9]+.[0-9]+
8
+ pull_request :
9
+ branches : [main, master]
10
+
11
+ jobs :
12
+ test :
13
+ runs-on : ubuntu-latest
14
+ strategy :
15
+ max-parallel : 5
16
+ matrix :
17
+ include :
18
+ - python-version : 2.7
19
+ tox-version : " py27"
20
+ - python-version : 3.6
21
+ tox-version : " py36"
22
+ - python-version : 3.7
23
+ tox-version : " py37"
24
+ - python-version : 3.8
25
+ tox-version : " py38"
26
+ - python-version : 3.9
27
+ tox-version : " py39"
28
+
29
+ steps :
30
+ - uses : actions/checkout@v2
31
+ - name : Set up Python ${{ matrix.python-version }}
32
+ uses : actions/setup-python@v2
33
+ with :
34
+ python-version : ${{ matrix.python-version }}
35
+
36
+ - name : Install Dependencies
37
+ run : |
38
+ pip install -U tox
39
+ - name : Run Tests
40
+ run : tox -e ${{ matrix.tox-version }}
Original file line number Diff line number Diff line change @@ -50,9 +50,12 @@ clean-test: ## remove test and coverage artifacts
50
50
lint : # # check style with flake8
51
51
flake8 graphql_ws tests
52
52
53
+ format :
54
+ black ./graphql_ws ./tests
55
+
53
56
test : # # run tests quickly with the default Python
54
57
py.test
55
-
58
+
56
59
57
60
test-all : # # run tests on every Python version with tox
58
61
tox
Original file line number Diff line number Diff line change @@ -41,7 +41,7 @@ def remove_operation(self, op_id):
41
41
42
42
def unsubscribe (self , op_id ):
43
43
async_iterator = self .remove_operation (op_id )
44
- if hasattr (async_iterator , ' dispose' ):
44
+ if hasattr (async_iterator , " dispose" ):
45
45
async_iterator .dispose ()
46
46
return async_iterator
47
47
Original file line number Diff line number Diff line change 7
7
8
8
9
9
class GraphQLSubscriptionConsumer (AsyncJsonWebsocketConsumer ):
10
-
11
10
async def connect (self ):
12
11
self .connection_context = None
13
12
if WS_PROTOCOL in self .scope ["subprotocols" ]:
Original file line number Diff line number Diff line change
1
+ from channels import __version__ as channels_version
1
2
from channels .routing import ProtocolTypeRouter , URLRouter
2
3
from channels .sessions import SessionMiddlewareStack
4
+ from django .utils .version import get_version_tuple
3
5
from django .apps import apps
4
6
from django .urls import path
5
7
from .consumers import GraphQLSubscriptionConsumer
10
12
AuthMiddlewareStack = None
11
13
12
14
13
- websocket_urlpatterns = [path ("subscriptions" , GraphQLSubscriptionConsumer )]
15
+ channels_version_tuple = get_version_tuple (channels_version )
16
+
17
+
18
+ if channels_version_tuple > (3 , 0 , 0 ):
19
+ websocket_urlpatterns = [
20
+ path ("subscriptions" , GraphQLSubscriptionConsumer .as_asgi ())
21
+ ]
22
+ else :
23
+ websocket_urlpatterns = [path ("subscriptions" , GraphQLSubscriptionConsumer )]
14
24
15
25
application = ProtocolTypeRouter ({"websocket" : URLRouter (websocket_urlpatterns )})
16
26
Original file line number Diff line number Diff line change 1
1
import json
2
2
3
- from channels .generic .websockets import JsonWebsocketConsumer
3
+ try :
4
+ # Channels version > 1 renamed the websockets module to websocket.
5
+ from channels .generic .websockets import JsonWebsocketConsumer
6
+ except ImportError :
7
+ from channels .generic .websocket import JsonWebsocketConsumer
4
8
from graphene_django .settings import graphene_settings
5
9
6
10
from .base import BaseConnectionContext
Original file line number Diff line number Diff line change @@ -41,6 +41,7 @@ maintainer =
41
41
PyYAML>=5.3,<6
42
42
dev =
43
43
flake8>=3.7,<4
44
+ black
44
45
tox>=3,<4
45
46
Sphinx>=1.8,<2
46
47
test =
@@ -50,13 +51,12 @@ test =
50
51
pytest-asyncio; python_version>="3.4"
51
52
graphene>=2.0,<3
52
53
gevent
53
- graphene>=2.0
54
54
graphene_django
55
55
mock; python_version<"3"
56
56
django ==1.11.*; python_version<"3"
57
57
channels ==1.*; python_version<"3"
58
- django ==2 .*; python_version>="3"
59
- channels ==2 .*; python_version>="3"
58
+ django ==3 .*; python_version>="3"
59
+ channels ==3 .*; python_version>="3"
60
60
aiohttp; python_version>="3.5"
61
61
62
62
[bdist_wheel]
Original file line number Diff line number Diff line change @@ -91,7 +91,7 @@ def test_observer_data():
91
91
send_error = send_error ,
92
92
send_message = send_message ,
93
93
)
94
- observer .on_next (' data' )
94
+ observer .on_next (" data" )
95
95
assert send_result .called
96
96
assert not send_error .called
97
97
@@ -107,6 +107,6 @@ def test_observer_exception():
107
107
send_error = send_error ,
108
108
send_message = send_message ,
109
109
)
110
- observer .on_next (TypeError (' some bad message' ))
110
+ observer .on_next (TypeError (" some bad message" ))
111
111
assert send_error .called
112
112
assert not send_result .called
Original file line number Diff line number Diff line change @@ -83,18 +83,18 @@ async def test_resolver_with_promise(server):
83
83
connection_context = None , op_id = 1 , execution_result = result
84
84
)
85
85
assert server .send_message .called
86
- assert result .data == {' test' : [1 , 2 ]}
86
+ assert result .data == {" test" : [1 , 2 ]}
87
87
88
88
89
89
async def test_resolver_with_nested_promise (server ):
90
90
server .send_message = AsyncMock ()
91
91
result = mock .Mock ()
92
92
inner = promise .Promise (lambda resolve , reject : resolve (2 ))
93
- outer = promise .Promise (lambda resolve , reject : resolve ({'in' : inner }))
93
+ outer = promise .Promise (lambda resolve , reject : resolve ({"in" : inner }))
94
94
result .data = {"test" : [1 , outer ]}
95
95
result .errors = None
96
96
await server .send_execution_result (
97
97
connection_context = None , op_id = 1 , execution_result = result
98
98
)
99
99
assert server .send_message .called
100
- assert result .data == {' test' : [1 , {'in' : 2 }]}
100
+ assert result .data == {" test" : [1 , {"in" : 2 }]}
You can’t perform that action at this time.
0 commit comments