strawberry-graphql 0.246.3__py3-none-any.whl → 0.247.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- strawberry/aiohttp/views.py +16 -5
- strawberry/asgi/__init__.py +20 -7
- strawberry/channels/handlers/ws_handler.py +7 -4
- strawberry/http/async_base_view.py +3 -1
- strawberry/http/exceptions.py +8 -0
- strawberry/litestar/controller.py +26 -9
- strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py +28 -27
- strawberry/subscriptions/protocols/graphql_ws/handlers.py +12 -7
- {strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/METADATA +1 -1
- {strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/RECORD +13 -13
- {strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/LICENSE +0 -0
- {strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/WHEEL +0 -0
- {strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/entry_points.txt +0 -0
strawberry/aiohttp/views.py
CHANGED
@@ -26,7 +26,12 @@ from strawberry.http.async_base_view import (
|
|
26
26
|
AsyncHTTPRequestAdapter,
|
27
27
|
AsyncWebSocketAdapter,
|
28
28
|
)
|
29
|
-
from strawberry.http.exceptions import
|
29
|
+
from strawberry.http.exceptions import (
|
30
|
+
HTTPException,
|
31
|
+
NonJsonMessageReceived,
|
32
|
+
NonTextMessageReceived,
|
33
|
+
WebSocketDisconnected,
|
34
|
+
)
|
30
35
|
from strawberry.http.types import FormData, HTTPMethod, QueryParams
|
31
36
|
from strawberry.http.typevars import (
|
32
37
|
Context,
|
@@ -86,19 +91,25 @@ class AioHTTPWebSocketAdapter(AsyncWebSocketAdapter):
|
|
86
91
|
self.request = request
|
87
92
|
self.ws = ws
|
88
93
|
|
89
|
-
async def iter_json(
|
94
|
+
async def iter_json(
|
95
|
+
self, *, ignore_parsing_errors: bool = False
|
96
|
+
) -> AsyncGenerator[Dict[str, object], None]:
|
90
97
|
async for ws_message in self.ws:
|
91
98
|
if ws_message.type == http.WSMsgType.TEXT:
|
92
99
|
try:
|
93
100
|
yield ws_message.json()
|
94
101
|
except JSONDecodeError:
|
95
|
-
|
102
|
+
if not ignore_parsing_errors:
|
103
|
+
raise NonJsonMessageReceived()
|
96
104
|
|
97
105
|
elif ws_message.type == http.WSMsgType.BINARY:
|
98
|
-
raise
|
106
|
+
raise NonTextMessageReceived()
|
99
107
|
|
100
108
|
async def send_json(self, message: Mapping[str, object]) -> None:
|
101
|
-
|
109
|
+
try:
|
110
|
+
await self.ws.send_json(message)
|
111
|
+
except RuntimeError as exc:
|
112
|
+
raise WebSocketDisconnected from exc
|
102
113
|
|
103
114
|
async def close(self, code: int, reason: str) -> None:
|
104
115
|
await self.ws.close(code=code, message=reason.encode())
|
strawberry/asgi/__init__.py
CHANGED
@@ -33,7 +33,12 @@ from strawberry.http.async_base_view import (
|
|
33
33
|
AsyncHTTPRequestAdapter,
|
34
34
|
AsyncWebSocketAdapter,
|
35
35
|
)
|
36
|
-
from strawberry.http.exceptions import
|
36
|
+
from strawberry.http.exceptions import (
|
37
|
+
HTTPException,
|
38
|
+
NonJsonMessageReceived,
|
39
|
+
NonTextMessageReceived,
|
40
|
+
WebSocketDisconnected,
|
41
|
+
)
|
37
42
|
from strawberry.http.types import FormData, HTTPMethod, QueryParams
|
38
43
|
from strawberry.http.typevars import (
|
39
44
|
Context,
|
@@ -85,18 +90,26 @@ class ASGIWebSocketAdapter(AsyncWebSocketAdapter):
|
|
85
90
|
def __init__(self, request: WebSocket, response: WebSocket) -> None:
|
86
91
|
self.ws = response
|
87
92
|
|
88
|
-
async def iter_json(
|
93
|
+
async def iter_json(
|
94
|
+
self, *, ignore_parsing_errors: bool = False
|
95
|
+
) -> AsyncGenerator[Dict[str, object], None]:
|
89
96
|
try:
|
90
|
-
|
91
|
-
|
97
|
+
while self.ws.application_state != WebSocketState.DISCONNECTED:
|
98
|
+
try:
|
92
99
|
yield await self.ws.receive_json()
|
93
|
-
|
94
|
-
|
100
|
+
except JSONDecodeError: # noqa: PERF203
|
101
|
+
if not ignore_parsing_errors:
|
102
|
+
raise NonJsonMessageReceived()
|
103
|
+
except KeyError:
|
104
|
+
raise NonTextMessageReceived()
|
95
105
|
except WebSocketDisconnect: # pragma: no cover
|
96
106
|
pass
|
97
107
|
|
98
108
|
async def send_json(self, message: Mapping[str, object]) -> None:
|
99
|
-
|
109
|
+
try:
|
110
|
+
await self.ws.send_json(message)
|
111
|
+
except WebSocketDisconnect as exc:
|
112
|
+
raise WebSocketDisconnected from exc
|
100
113
|
|
101
114
|
async def close(self, code: int, reason: str) -> None:
|
102
115
|
await self.ws.close(code=code, reason=reason)
|
@@ -16,7 +16,7 @@ from typing import (
|
|
16
16
|
from typing_extensions import TypeGuard
|
17
17
|
|
18
18
|
from strawberry.http.async_base_view import AsyncBaseHTTPView, AsyncWebSocketAdapter
|
19
|
-
from strawberry.http.exceptions import NonJsonMessageReceived
|
19
|
+
from strawberry.http.exceptions import NonJsonMessageReceived, NonTextMessageReceived
|
20
20
|
from strawberry.http.typevars import Context, RootValue
|
21
21
|
from strawberry.subscriptions import GRAPHQL_TRANSPORT_WS_PROTOCOL, GRAPHQL_WS_PROTOCOL
|
22
22
|
|
@@ -31,7 +31,9 @@ class ChannelsWebSocketAdapter(AsyncWebSocketAdapter):
|
|
31
31
|
def __init__(self, request: GraphQLWSConsumer, response: GraphQLWSConsumer) -> None:
|
32
32
|
self.ws_consumer = response
|
33
33
|
|
34
|
-
async def iter_json(
|
34
|
+
async def iter_json(
|
35
|
+
self, *, ignore_parsing_errors: bool = False
|
36
|
+
) -> AsyncGenerator[Dict[str, object], None]:
|
35
37
|
while True:
|
36
38
|
message = await self.ws_consumer.message_queue.get()
|
37
39
|
|
@@ -39,12 +41,13 @@ class ChannelsWebSocketAdapter(AsyncWebSocketAdapter):
|
|
39
41
|
break
|
40
42
|
|
41
43
|
if message["message"] is None:
|
42
|
-
raise
|
44
|
+
raise NonTextMessageReceived()
|
43
45
|
|
44
46
|
try:
|
45
47
|
yield json.loads(message["message"])
|
46
48
|
except json.JSONDecodeError:
|
47
|
-
|
49
|
+
if not ignore_parsing_errors:
|
50
|
+
raise NonJsonMessageReceived()
|
48
51
|
|
49
52
|
async def send_json(self, message: Mapping[str, object]) -> None:
|
50
53
|
serialized_message = json.dumps(message)
|
@@ -81,7 +81,9 @@ class AsyncHTTPRequestAdapter(abc.ABC):
|
|
81
81
|
|
82
82
|
class AsyncWebSocketAdapter(abc.ABC):
|
83
83
|
@abc.abstractmethod
|
84
|
-
def iter_json(
|
84
|
+
def iter_json(
|
85
|
+
self, *, ignore_parsing_errors: bool = False
|
86
|
+
) -> AsyncGenerator[Dict[str, object], None]: ...
|
85
87
|
|
86
88
|
@abc.abstractmethod
|
87
89
|
async def send_json(self, message: Mapping[str, object]) -> None: ...
|
strawberry/http/exceptions.py
CHANGED
@@ -4,8 +4,16 @@ class HTTPException(Exception):
|
|
4
4
|
self.reason = reason
|
5
5
|
|
6
6
|
|
7
|
+
class NonTextMessageReceived(Exception):
|
8
|
+
pass
|
9
|
+
|
10
|
+
|
7
11
|
class NonJsonMessageReceived(Exception):
|
8
12
|
pass
|
9
13
|
|
10
14
|
|
15
|
+
class WebSocketDisconnected(Exception):
|
16
|
+
pass
|
17
|
+
|
18
|
+
|
11
19
|
__all__ = ["HTTPException"]
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
import json
|
5
6
|
import warnings
|
6
7
|
from datetime import timedelta
|
7
8
|
from typing import (
|
@@ -37,7 +38,6 @@ from litestar.background_tasks import BackgroundTasks
|
|
37
38
|
from litestar.di import Provide
|
38
39
|
from litestar.exceptions import (
|
39
40
|
NotFoundException,
|
40
|
-
SerializationException,
|
41
41
|
ValidationException,
|
42
42
|
WebSocketDisconnect,
|
43
43
|
)
|
@@ -49,7 +49,12 @@ from strawberry.http.async_base_view import (
|
|
49
49
|
AsyncHTTPRequestAdapter,
|
50
50
|
AsyncWebSocketAdapter,
|
51
51
|
)
|
52
|
-
from strawberry.http.exceptions import
|
52
|
+
from strawberry.http.exceptions import (
|
53
|
+
HTTPException,
|
54
|
+
NonJsonMessageReceived,
|
55
|
+
NonTextMessageReceived,
|
56
|
+
WebSocketDisconnected,
|
57
|
+
)
|
53
58
|
from strawberry.http.types import FormData, HTTPMethod, QueryParams
|
54
59
|
from strawberry.http.typevars import Context, RootValue
|
55
60
|
from strawberry.subscriptions import GRAPHQL_TRANSPORT_WS_PROTOCOL, GRAPHQL_WS_PROTOCOL
|
@@ -192,18 +197,30 @@ class LitestarWebSocketAdapter(AsyncWebSocketAdapter):
|
|
192
197
|
def __init__(self, request: WebSocket, response: WebSocket) -> None:
|
193
198
|
self.ws = response
|
194
199
|
|
195
|
-
async def iter_json(
|
200
|
+
async def iter_json(
|
201
|
+
self, *, ignore_parsing_errors: bool = False
|
202
|
+
) -> AsyncGenerator[Dict[str, object], None]:
|
196
203
|
try:
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
204
|
+
while self.ws.connection_state != "disconnect":
|
205
|
+
text = await self.ws.receive_text()
|
206
|
+
|
207
|
+
# Litestar internally defaults to an empty string for non-text messages
|
208
|
+
if text == "":
|
209
|
+
raise NonTextMessageReceived()
|
210
|
+
|
211
|
+
try:
|
212
|
+
yield json.loads(text)
|
213
|
+
except json.JSONDecodeError:
|
214
|
+
if not ignore_parsing_errors:
|
215
|
+
raise NonJsonMessageReceived()
|
202
216
|
except WebSocketDisconnect:
|
203
217
|
pass
|
204
218
|
|
205
219
|
async def send_json(self, message: Mapping[str, object]) -> None:
|
206
|
-
|
220
|
+
try:
|
221
|
+
await self.ws.send_json(message)
|
222
|
+
except WebSocketDisconnect as exc:
|
223
|
+
raise WebSocketDisconnected from exc
|
207
224
|
|
208
225
|
async def close(self, code: int, reason: str) -> None:
|
209
226
|
await self.ws.close(code=code, reason=reason)
|
@@ -7,7 +7,6 @@ from typing import (
|
|
7
7
|
TYPE_CHECKING,
|
8
8
|
Any,
|
9
9
|
Awaitable,
|
10
|
-
Callable,
|
11
10
|
Dict,
|
12
11
|
List,
|
13
12
|
Optional,
|
@@ -15,7 +14,11 @@ from typing import (
|
|
15
14
|
|
16
15
|
from graphql import GraphQLError, GraphQLSyntaxError, parse
|
17
16
|
|
18
|
-
from strawberry.http.exceptions import
|
17
|
+
from strawberry.http.exceptions import (
|
18
|
+
NonJsonMessageReceived,
|
19
|
+
NonTextMessageReceived,
|
20
|
+
WebSocketDisconnected,
|
21
|
+
)
|
19
22
|
from strawberry.subscriptions.protocols.graphql_transport_ws.types import (
|
20
23
|
CompleteMessage,
|
21
24
|
ConnectionAckMessage,
|
@@ -76,10 +79,17 @@ class BaseGraphQLTransportWSHandler:
|
|
76
79
|
self.on_request_accepted()
|
77
80
|
|
78
81
|
try:
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
82
|
+
try:
|
83
|
+
async for message in self.websocket.iter_json():
|
84
|
+
await self.handle_message(message)
|
85
|
+
except NonTextMessageReceived:
|
86
|
+
await self.handle_invalid_message("WebSocket message type must be text")
|
87
|
+
except NonJsonMessageReceived:
|
88
|
+
await self.handle_invalid_message(
|
89
|
+
"WebSocket message must be valid JSON"
|
90
|
+
)
|
91
|
+
except WebSocketDisconnected:
|
92
|
+
pass
|
83
93
|
finally:
|
84
94
|
await self.shutdown()
|
85
95
|
|
@@ -125,50 +135,41 @@ class BaseGraphQLTransportWSHandler:
|
|
125
135
|
self.task_logger.exception("Exception in worker task", exc_info=error)
|
126
136
|
|
127
137
|
async def handle_message(self, message: dict) -> None:
|
128
|
-
handler: Callable
|
129
|
-
handler_arg: Any
|
130
138
|
try:
|
131
139
|
message_type = message.pop("type")
|
132
140
|
|
133
141
|
if message_type == ConnectionInitMessage.type:
|
134
|
-
|
135
|
-
handler_arg = ConnectionInitMessage(**message)
|
142
|
+
await self.handle_connection_init(ConnectionInitMessage(**message))
|
136
143
|
|
137
144
|
elif message_type == PingMessage.type:
|
138
|
-
|
139
|
-
handler_arg = PingMessage(**message)
|
145
|
+
await self.handle_ping(PingMessage(**message))
|
140
146
|
|
141
147
|
elif message_type == PongMessage.type:
|
142
|
-
|
143
|
-
handler_arg = PongMessage(**message)
|
148
|
+
await self.handle_pong(PongMessage(**message))
|
144
149
|
|
145
150
|
elif message_type == SubscribeMessage.type:
|
146
|
-
handler = self.handle_subscribe
|
147
|
-
|
148
151
|
payload_args = message.pop("payload")
|
149
|
-
|
150
152
|
payload = SubscribeMessagePayload(
|
151
153
|
query=payload_args["query"],
|
152
154
|
operationName=payload_args.get("operationName"),
|
153
155
|
variables=payload_args.get("variables"),
|
154
156
|
extensions=payload_args.get("extensions"),
|
155
157
|
)
|
156
|
-
|
158
|
+
await self.handle_subscribe(
|
159
|
+
SubscribeMessage(payload=payload, **message)
|
160
|
+
)
|
157
161
|
|
158
162
|
elif message_type == CompleteMessage.type:
|
159
|
-
|
160
|
-
handler_arg = CompleteMessage(**message)
|
163
|
+
await self.handle_complete(CompleteMessage(**message))
|
161
164
|
|
162
165
|
else:
|
163
|
-
|
164
|
-
|
166
|
+
error_message = f"Unknown message type: {message_type}"
|
167
|
+
await self.handle_invalid_message(error_message)
|
165
168
|
|
166
169
|
except (KeyError, TypeError):
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
await handler(handler_arg)
|
171
|
-
await self.reap_completed_tasks()
|
170
|
+
await self.handle_invalid_message("Failed to parse message")
|
171
|
+
finally:
|
172
|
+
await self.reap_completed_tasks()
|
172
173
|
|
173
174
|
async def handle_connection_init(self, message: ConnectionInitMessage) -> None:
|
174
175
|
if self.connection_timed_out:
|
@@ -11,7 +11,7 @@ from typing import (
|
|
11
11
|
cast,
|
12
12
|
)
|
13
13
|
|
14
|
-
from strawberry.http.exceptions import
|
14
|
+
from strawberry.http.exceptions import NonTextMessageReceived, WebSocketDisconnected
|
15
15
|
from strawberry.subscriptions.protocols.graphql_ws import (
|
16
16
|
GQL_COMPLETE,
|
17
17
|
GQL_CONNECTION_ACK,
|
@@ -65,12 +65,17 @@ class BaseGraphQLWSHandler:
|
|
65
65
|
|
66
66
|
async def handle(self) -> None:
|
67
67
|
try:
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
68
|
+
try:
|
69
|
+
async for message in self.websocket.iter_json(
|
70
|
+
ignore_parsing_errors=True
|
71
|
+
):
|
72
|
+
await self.handle_message(cast(OperationMessage, message))
|
73
|
+
except NonTextMessageReceived:
|
74
|
+
await self.websocket.close(
|
75
|
+
code=1002, reason="WebSocket message type must be text"
|
76
|
+
)
|
77
|
+
except WebSocketDisconnected:
|
78
|
+
pass
|
74
79
|
finally:
|
75
80
|
if self.keep_alive_task:
|
76
81
|
self.keep_alive_task.cancel()
|
@@ -3,9 +3,9 @@ strawberry/__main__.py,sha256=3U77Eu21mJ-LY27RG-JEnpbh6Z63wGOom4i-EoLtUcY,59
|
|
3
3
|
strawberry/aiohttp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
strawberry/aiohttp/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
5
5
|
strawberry/aiohttp/test/client.py,sha256=xPwOo1V0XbC86LWHiSRTLcGNOa796flz49wzWmdkvSs,1775
|
6
|
-
strawberry/aiohttp/views.py,sha256=
|
6
|
+
strawberry/aiohttp/views.py,sha256=nzZSiCT3ruBHRmPy7P7Ow8tzRtCfSpHq0KR_Eu8U1WY,7765
|
7
7
|
strawberry/annotation.py,sha256=u5rkFs6CDUaiJZMK7jp_VDUWdZZ3HXQEbR2ocruDpxA,13065
|
8
|
-
strawberry/asgi/__init__.py,sha256=
|
8
|
+
strawberry/asgi/__init__.py,sha256=cykkfbnNfpJu65DrCn3GPI4QamW1d2ez2fI6WVsEnwE,7993
|
9
9
|
strawberry/asgi/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
10
10
|
strawberry/asgi/test/client.py,sha256=VolupxMna9ktF1lYgV_dUQAIN53DNzVyWTeWTbwsxqE,1448
|
11
11
|
strawberry/chalice/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -14,7 +14,7 @@ strawberry/channels/__init__.py,sha256=-9ENTIu1AILbqffJ663qH6AwpZgLrJx_kaokS7RrC
|
|
14
14
|
strawberry/channels/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
strawberry/channels/handlers/base.py,sha256=KV4KA0eF5NRtikV9m4ssoPI5pmCZvDuRkfoTxwh42qI,7853
|
16
16
|
strawberry/channels/handlers/http_handler.py,sha256=fnQcPwdUz2CboVlnI3s1urQ_ZnZyNZvRx7SM_xPLLEA,11577
|
17
|
-
strawberry/channels/handlers/ws_handler.py,sha256=
|
17
|
+
strawberry/channels/handlers/ws_handler.py,sha256=k9xax8S1g0tfEFSe76UOHkheHqIrnYjEioYlLm4UPLo,6052
|
18
18
|
strawberry/channels/router.py,sha256=DKIbl4zuRBhfvViUVpyu0Rf_WRT41E6uZC-Yic9Ltvo,2024
|
19
19
|
strawberry/channels/testing.py,sha256=GZqYu_rhrT1gLHmdI219L1fctVDmrv7AMHs0bwhXitc,6166
|
20
20
|
strawberry/cli/__init__.py,sha256=byS5VrEiTJatAH6YS4V1Kd4SOwMRAQO2M1oJdIddivg,585
|
@@ -132,9 +132,9 @@ strawberry/file_uploads/utils.py,sha256=2zsXg3QsKgGLD7of2dW-vgQn_Naf7I3Men9PhEAF
|
|
132
132
|
strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
133
133
|
strawberry/flask/views.py,sha256=3gd1Xgxg3IT72dz2nrMBK094dMNxTUHciu3oofGOAG4,6235
|
134
134
|
strawberry/http/__init__.py,sha256=GSvHUDXl1cHfLnb37PXOAnxfoXhvz0f467P1O8uDatM,1620
|
135
|
-
strawberry/http/async_base_view.py,sha256=
|
135
|
+
strawberry/http/async_base_view.py,sha256=n4Kg9sG9awN7EWa0JIQUmMtnyfI6aqRmg3n2IkoQ_F4,15742
|
136
136
|
strawberry/http/base.py,sha256=DFGBb6UhHR1EOmZkLn5V-2IKXzjYasg6yv06PQnm9Ds,2336
|
137
|
-
strawberry/http/exceptions.py,sha256
|
137
|
+
strawberry/http/exceptions.py,sha256=9E2dreS1crRoJVUEPuHyx23NcDELDHNzkAOa-rGv-8I,348
|
138
138
|
strawberry/http/ides.py,sha256=njYI2b5R0PnY27ll1ePdIvgPQU3m6Aod_JTBrcZYs0U,638
|
139
139
|
strawberry/http/parse_content_type.py,sha256=sgtcOO_ZOFg7WWWibYyLc4SU58K-SErcW56kQczQmKU,412
|
140
140
|
strawberry/http/sync_base_view.py,sha256=qA9o-Ic4ZcTXiKF02lBsrN7ET6VeXGYWf9m9mjhlfWU,7199
|
@@ -142,7 +142,7 @@ strawberry/http/temporal_response.py,sha256=QrGYSg7Apu7Mh-X_uPKDZby-UicXw2J_ywxa
|
|
142
142
|
strawberry/http/types.py,sha256=cAuaiUuvaMI_XhZ2Ey6Ej23WyQKqMGFxzzpVHDjVazY,371
|
143
143
|
strawberry/http/typevars.py,sha256=8hK5PfNPZXb2EhZmqlobYyfwJJcO2Wb96T91MlLEVJs,450
|
144
144
|
strawberry/litestar/__init__.py,sha256=zsXzg-mglCGUVO9iNXLm-yadoDSCK7k-zuyRqyvAh1w,237
|
145
|
-
strawberry/litestar/controller.py,sha256=
|
145
|
+
strawberry/litestar/controller.py,sha256=yA8f59NuC6ZJgpG2p4HoILko3FdWiNx5AWdkQGti_6U,13992
|
146
146
|
strawberry/parent.py,sha256=sXURm0lauSpjUADsmfNGY-Zl7kHs0A67BFcWuWKzRxw,771
|
147
147
|
strawberry/permission.py,sha256=HusiB46yZANdpZM3AdzFVZB6JkCu7dcvoZ3QP2E01jM,7575
|
148
148
|
strawberry/printer/__init__.py,sha256=DmepjmgtkdF5RxK_7yC6qUyRWn56U-9qeZMbkztYB9w,62
|
@@ -187,10 +187,10 @@ strawberry/static/pathfinder.html,sha256=0DPx9AmJ2C_sJstFXnWOz9k5tVQHeHaK7qdVY4l
|
|
187
187
|
strawberry/subscriptions/__init__.py,sha256=1VGmiCzFepqRFyCikagkUoHHdoTG3XYlFu9GafoQMws,170
|
188
188
|
strawberry/subscriptions/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
189
189
|
strawberry/subscriptions/protocols/graphql_transport_ws/__init__.py,sha256=wN6dkMu6WiaIZTE19PGoN9xXpIN_RdDE_q7F7ZgjCxk,138
|
190
|
-
strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=
|
190
|
+
strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=pxP_yeEqXku3_AHh-Ev9BdHBn8iTfwKo4wrTo8RKz8g,14486
|
191
191
|
strawberry/subscriptions/protocols/graphql_transport_ws/types.py,sha256=udYxzGtwjETYvY5f23org0t-aY4cimTjEGFYUR3idaY,2596
|
192
192
|
strawberry/subscriptions/protocols/graphql_ws/__init__.py,sha256=ijn1A1O0Fzv5p9n-jw3T5H7M3oxbN4gbxRaepN7HyJk,553
|
193
|
-
strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=
|
193
|
+
strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=IabXcES66aBA8aE2h2o73gwdp6iZ5HG9Hm2G5TOTuNc,7739
|
194
194
|
strawberry/subscriptions/protocols/graphql_ws/types.py,sha256=CKm4Hy95p6H9u_-QyWdxipwzNeeDIWtilP3RRp8vjPw,1050
|
195
195
|
strawberry/test/__init__.py,sha256=U3B5Ng7C_H8GpCpfvgZZcfADMw6cor5hm78gS3nDdMI,115
|
196
196
|
strawberry/test/client.py,sha256=Va7J1tIjZ6PxbOqPl57jSp5lNLOZSueHPmrUuUx5sRY,6462
|
@@ -230,8 +230,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
|
|
230
230
|
strawberry/utils/operation.py,sha256=SSXxN-vMqdHO6W2OZtip-1z7y4_A-eTVFdhDvhKeLCk,1193
|
231
231
|
strawberry/utils/str_converters.py,sha256=KGd7QH90RevaJjH6SQEkiVVsb8KuhJr_wv5AsI7UzQk,897
|
232
232
|
strawberry/utils/typing.py,sha256=3xws5kxSQGsp8BnYyUwClvxXNzZakMAuOPoq1rjHRuk,14252
|
233
|
-
strawberry_graphql-0.
|
234
|
-
strawberry_graphql-0.
|
235
|
-
strawberry_graphql-0.
|
236
|
-
strawberry_graphql-0.
|
237
|
-
strawberry_graphql-0.
|
233
|
+
strawberry_graphql-0.247.1.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
|
234
|
+
strawberry_graphql-0.247.1.dist-info/METADATA,sha256=eb7SR0I78_-i_gttEvj0BVWxHZky6TUv6nAlfqgJxWs,7758
|
235
|
+
strawberry_graphql-0.247.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
236
|
+
strawberry_graphql-0.247.1.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
|
237
|
+
strawberry_graphql-0.247.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{strawberry_graphql-0.246.3.dist-info → strawberry_graphql-0.247.1.dist-info}/entry_points.txt
RENAMED
File without changes
|