strawberry-graphql 0.168.2__py3-none-any.whl → 0.170.0__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/handlers/__init__.py +1 -2
- strawberry/aiohttp/views.py +109 -47
- strawberry/asgi/__init__.py +118 -29
- strawberry/asgi/handlers/__init__.py +1 -2
- strawberry/chalice/views.py +81 -158
- strawberry/cli/debug_server.py +2 -1
- strawberry/django/views.py +138 -200
- strawberry/fastapi/router.py +101 -164
- strawberry/file_uploads/utils.py +2 -2
- strawberry/flask/views.py +117 -178
- strawberry/http/async_base_view.py +215 -0
- strawberry/http/base.py +63 -0
- strawberry/http/exceptions.py +4 -0
- strawberry/http/sync_base_view.py +210 -0
- strawberry/http/temporal_response.py +3 -1
- strawberry/http/types.py +13 -0
- strawberry/http/typevars.py +7 -0
- strawberry/sanic/utils.py +9 -2
- strawberry/sanic/views.py +86 -136
- strawberry/schema/name_converter.py +4 -1
- strawberry/schema/schema_converter.py +6 -1
- strawberry/starlite/controller.py +119 -177
- strawberry/types/graphql.py +5 -2
- {strawberry_graphql-0.168.2.dist-info → strawberry_graphql-0.170.0.dist-info}/METADATA +1 -1
- {strawberry_graphql-0.168.2.dist-info → strawberry_graphql-0.170.0.dist-info}/RECORD +28 -24
- strawberry/aiohttp/handlers/http_handler.py +0 -163
- strawberry/asgi/handlers/http_handler.py +0 -214
- {strawberry_graphql-0.168.2.dist-info → strawberry_graphql-0.170.0.dist-info}/LICENSE +0 -0
- {strawberry_graphql-0.168.2.dist-info → strawberry_graphql-0.170.0.dist-info}/WHEEL +0 -0
- {strawberry_graphql-0.168.2.dist-info → strawberry_graphql-0.170.0.dist-info}/entry_points.txt +0 -0
@@ -2,15 +2,13 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
import json
|
6
5
|
from dataclasses import dataclass
|
7
6
|
from datetime import timedelta
|
8
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional, Union, cast
|
7
|
+
from typing import TYPE_CHECKING, Any, Dict, Mapping, Optional, Tuple, Union, cast
|
9
8
|
|
10
9
|
from starlite import (
|
11
10
|
BackgroundTasks,
|
12
11
|
Controller,
|
13
|
-
HttpMethod,
|
14
12
|
MediaType,
|
15
13
|
Provide,
|
16
14
|
Request,
|
@@ -22,29 +20,21 @@ from starlite import (
|
|
22
20
|
)
|
23
21
|
from starlite.exceptions import (
|
24
22
|
NotFoundException,
|
25
|
-
SerializationException,
|
26
23
|
ValidationException,
|
27
24
|
)
|
28
|
-
from starlite.status_codes import
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
from starlite.status_codes import HTTP_200_OK
|
26
|
+
from strawberry.exceptions import InvalidCustomContext
|
27
|
+
from strawberry.http.async_base_view import AsyncBaseHTTPView, AsyncHTTPRequestAdapter
|
28
|
+
from strawberry.http.exceptions import HTTPException
|
29
|
+
from strawberry.http.types import FormData, HTTPMethod, QueryParams
|
30
|
+
from strawberry.http.typevars import (
|
31
|
+
Context,
|
32
|
+
RootValue,
|
32
33
|
)
|
33
|
-
from strawberry.exceptions import InvalidCustomContext, MissingQueryError
|
34
|
-
from strawberry.file_uploads.utils import replace_placeholders_with_files
|
35
|
-
from strawberry.http import (
|
36
|
-
GraphQLHTTPResponse,
|
37
|
-
parse_query_params,
|
38
|
-
parse_request_data,
|
39
|
-
process_result,
|
40
|
-
)
|
41
|
-
from strawberry.schema.exceptions import InvalidOperationTypeError
|
42
34
|
from strawberry.subscriptions import GRAPHQL_TRANSPORT_WS_PROTOCOL, GRAPHQL_WS_PROTOCOL
|
43
35
|
from strawberry.subscriptions.protocols.graphql_transport_ws import (
|
44
36
|
WS_4406_PROTOCOL_NOT_ACCEPTABLE,
|
45
37
|
)
|
46
|
-
from strawberry.types.graphql import OperationType
|
47
|
-
from strawberry.utils.debug import pretty_print_graphql_operation
|
48
38
|
from strawberry.utils.graphiql import get_graphiql_html
|
49
39
|
|
50
40
|
from .handlers.graphql_transport_ws_handler import (
|
@@ -53,19 +43,19 @@ from .handlers.graphql_transport_ws_handler import (
|
|
53
43
|
from .handlers.graphql_ws_handler import GraphQLWSHandler as BaseGraphQLWSHandler
|
54
44
|
|
55
45
|
if TYPE_CHECKING:
|
56
|
-
from typing import FrozenSet,
|
46
|
+
from typing import FrozenSet, List, Type
|
57
47
|
|
58
48
|
from starlite.types import AnyCallable, Dependencies
|
49
|
+
from strawberry.http import GraphQLHTTPResponse
|
59
50
|
from strawberry.schema import BaseSchema
|
60
|
-
from strawberry.types import ExecutionResult
|
61
51
|
|
62
52
|
MergedContext = Union[
|
63
53
|
"BaseContext",
|
64
54
|
Union[
|
65
55
|
Dict[str, Any],
|
66
56
|
Dict[str, BackgroundTasks],
|
67
|
-
Dict[str, Request],
|
68
|
-
Dict[str, Response],
|
57
|
+
Dict[str, Request[Any, Any]],
|
58
|
+
Dict[str, Response[Any]],
|
69
59
|
Dict[str, websocket],
|
70
60
|
],
|
71
61
|
]
|
@@ -75,21 +65,27 @@ CustomContext = Union["BaseContext", Dict[str, Any]]
|
|
75
65
|
|
76
66
|
async def _context_getter(
|
77
67
|
custom_context: Optional[CustomContext],
|
78
|
-
request: Request,
|
68
|
+
request: Request[Any, Any],
|
69
|
+
response: Response[Any],
|
79
70
|
) -> MergedContext:
|
80
71
|
if isinstance(custom_context, BaseContext):
|
81
72
|
custom_context.request = request
|
82
73
|
return custom_context
|
74
|
+
|
83
75
|
default_context = {
|
84
76
|
"request": request,
|
77
|
+
"response": response,
|
85
78
|
}
|
79
|
+
|
86
80
|
if isinstance(custom_context, dict):
|
87
81
|
return {
|
88
82
|
**default_context,
|
89
83
|
**custom_context,
|
90
84
|
}
|
85
|
+
|
91
86
|
if custom_context is None:
|
92
87
|
return default_context
|
88
|
+
|
93
89
|
raise InvalidCustomContext()
|
94
90
|
|
95
91
|
|
@@ -121,6 +117,35 @@ class GraphQLTransportWSHandler(BaseGraphQLTransportWSHandler):
|
|
121
117
|
return await self._get_root_value()
|
122
118
|
|
123
119
|
|
120
|
+
class StarliteRequestAdapter(AsyncHTTPRequestAdapter):
|
121
|
+
def __init__(self, request: Request[Any, Any]):
|
122
|
+
self.request = request
|
123
|
+
|
124
|
+
@property
|
125
|
+
def query_params(self) -> QueryParams:
|
126
|
+
return self.request.query_params
|
127
|
+
|
128
|
+
@property
|
129
|
+
def method(self) -> HTTPMethod:
|
130
|
+
return cast(HTTPMethod, self.request.method.upper())
|
131
|
+
|
132
|
+
@property
|
133
|
+
def headers(self) -> Mapping[str, str]:
|
134
|
+
return self.request.headers
|
135
|
+
|
136
|
+
@property
|
137
|
+
def content_type(self) -> Optional[str]:
|
138
|
+
return self.request.content_type[0]
|
139
|
+
|
140
|
+
async def get_body(self) -> bytes:
|
141
|
+
return await self.request.body()
|
142
|
+
|
143
|
+
async def get_form_data(self) -> FormData:
|
144
|
+
multipart_data = await self.request.form()
|
145
|
+
|
146
|
+
return FormData(form=multipart_data, files=multipart_data)
|
147
|
+
|
148
|
+
|
124
149
|
class BaseContext:
|
125
150
|
def __init__(self):
|
126
151
|
self.request: Optional[Union[Request, WebSocket]] = None
|
@@ -163,21 +188,32 @@ def make_graphql_controller(
|
|
163
188
|
else:
|
164
189
|
root_value_getter_ = root_value_getter
|
165
190
|
|
166
|
-
|
191
|
+
def response_getter() -> Response[Any]:
|
192
|
+
return Response({}, background=BackgroundTasks([]))
|
193
|
+
|
194
|
+
schema_ = schema
|
195
|
+
allow_queries_via_get_ = allow_queries_via_get
|
196
|
+
graphiql_ = graphiql
|
197
|
+
|
198
|
+
class GraphQLController(
|
199
|
+
Controller,
|
200
|
+
AsyncBaseHTTPView[
|
201
|
+
Request[Any, Any], Response[Any], Response[Any], Context, RootValue
|
202
|
+
],
|
203
|
+
):
|
204
|
+
request_adapter_class = StarliteRequestAdapter
|
167
205
|
path: str = routes_path
|
168
206
|
dependencies: Optional[Dependencies] = {
|
169
207
|
"custom_context": Provide(custom_context_getter_),
|
170
208
|
"context": Provide(_context_getter),
|
171
209
|
"root_value": Provide(root_value_getter_),
|
210
|
+
"response": Provide(response_getter),
|
172
211
|
}
|
173
212
|
graphql_ws_handler_class: Type[GraphQLWSHandler] = GraphQLWSHandler
|
174
213
|
graphql_transport_ws_handler_class: Type[
|
175
214
|
GraphQLTransportWSHandler
|
176
215
|
] = GraphQLTransportWSHandler
|
177
216
|
|
178
|
-
_schema: BaseSchema = schema
|
179
|
-
_graphiql: bool = graphiql
|
180
|
-
_allow_queries_via_get: bool = allow_queries_via_get
|
181
217
|
_keep_alive: bool = keep_alive
|
182
218
|
_keep_alive_interval: float = keep_alive_interval
|
183
219
|
_debug: bool = debug
|
@@ -185,192 +221,98 @@ def make_graphql_controller(
|
|
185
221
|
_connection_init_wait_timeout: timedelta = connection_init_wait_timeout
|
186
222
|
_graphiql_allowed_accept: FrozenSet[str] = frozenset({"text/html", "*/*"})
|
187
223
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
variables: Optional[Dict[str, Any]] = None,
|
192
|
-
context: Optional[CustomContext] = None,
|
193
|
-
operation_name: Optional[str] = None,
|
194
|
-
root_value: Optional[Any] = None,
|
195
|
-
allowed_operation_types: Optional[Iterable[OperationType]] = None,
|
196
|
-
):
|
197
|
-
if self._debug:
|
198
|
-
pretty_print_graphql_operation(operation_name, query or "", variables)
|
199
|
-
|
200
|
-
return await self._schema.execute(
|
201
|
-
query,
|
202
|
-
root_value=root_value,
|
203
|
-
variable_values=variables,
|
204
|
-
operation_name=operation_name,
|
205
|
-
context_value=context,
|
206
|
-
allowed_operation_types=allowed_operation_types,
|
207
|
-
)
|
208
|
-
|
209
|
-
async def process_result(self, result: ExecutionResult) -> GraphQLHTTPResponse:
|
210
|
-
return process_result(result)
|
224
|
+
schema: BaseSchema = schema_
|
225
|
+
allow_queries_via_get = allow_queries_via_get_
|
226
|
+
graphiql = graphiql_
|
211
227
|
|
212
228
|
async def execute_request(
|
213
229
|
self,
|
214
|
-
request: Request,
|
215
|
-
data: dict,
|
230
|
+
request: Request[Any, Any],
|
216
231
|
context: CustomContext,
|
217
232
|
root_value: Any,
|
218
233
|
) -> Response[Union[GraphQLResource, str]]:
|
219
|
-
request_data = parse_request_data(data or {})
|
220
|
-
|
221
|
-
allowed_operation_types = OperationType.from_http(request.method)
|
222
|
-
|
223
|
-
if not self._allow_queries_via_get and request.method == HttpMethod.GET:
|
224
|
-
allowed_operation_types = allowed_operation_types - {
|
225
|
-
OperationType.QUERY
|
226
|
-
}
|
227
|
-
|
228
|
-
response: Union[Response[dict], Response[BaseContext]] = Response(
|
229
|
-
{}, background=BackgroundTasks([])
|
230
|
-
)
|
231
|
-
|
232
|
-
if isinstance(context, BaseContext):
|
233
|
-
context.response = response
|
234
|
-
elif isinstance(context, dict):
|
235
|
-
context["response"] = response
|
236
234
|
try:
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
235
|
+
return await self.run(
|
236
|
+
request,
|
237
|
+
# TODO: check the dependency, above, can we make it so that
|
238
|
+
# we don't need to type ignore here?
|
239
|
+
context=context, # type: ignore
|
242
240
|
root_value=root_value,
|
243
|
-
allowed_operation_types=allowed_operation_types,
|
244
241
|
)
|
245
|
-
except
|
242
|
+
except HTTPException as e:
|
246
243
|
return Response(
|
247
|
-
e.
|
248
|
-
status_code=
|
249
|
-
media_type=MediaType.TEXT,
|
250
|
-
)
|
251
|
-
except MissingQueryError:
|
252
|
-
return Response(
|
253
|
-
"No GraphQL query found in the request",
|
254
|
-
status_code=HTTP_400_BAD_REQUEST,
|
244
|
+
e.reason,
|
245
|
+
status_code=e.status_code,
|
255
246
|
media_type=MediaType.TEXT,
|
256
247
|
)
|
257
248
|
|
258
|
-
|
249
|
+
def render_graphiql(self, request: Request[Any, Any]) -> Response[str]:
|
250
|
+
html = get_graphiql_html()
|
251
|
+
return Response(html, media_type=MediaType.HTML)
|
259
252
|
|
260
|
-
|
261
|
-
|
253
|
+
def create_response(
|
254
|
+
self, response_data: GraphQLHTTPResponse, sub_response: Response[bytes]
|
255
|
+
) -> Response[bytes]:
|
256
|
+
response = Response(
|
257
|
+
self.encode_json(response_data).encode(),
|
258
|
+
status_code=HTTP_200_OK,
|
259
|
+
media_type=MediaType.JSON,
|
262
260
|
)
|
263
261
|
|
264
|
-
|
262
|
+
response.headers.update(sub_response.headers)
|
263
|
+
response.cookies.extend(sub_response.cookies)
|
264
|
+
response.background = sub_response.background
|
265
265
|
|
266
|
-
|
267
|
-
|
268
|
-
return False
|
269
|
-
accept: Set[str] = set()
|
270
|
-
for value in request.headers.getall("accept", ""):
|
271
|
-
accept.symmetric_difference_update(set(value.split(",")))
|
272
|
-
return bool(self._graphiql_allowed_accept & accept)
|
266
|
+
if sub_response.status_code:
|
267
|
+
response.status_code = sub_response.status_code
|
273
268
|
|
274
|
-
|
275
|
-
html = get_graphiql_html()
|
276
|
-
return Response(html, media_type=MediaType.HTML)
|
277
|
-
|
278
|
-
@staticmethod
|
279
|
-
def _merge_responses(
|
280
|
-
response: Response, actual_response: Response
|
281
|
-
) -> Response[Union[GraphQLResource, str]]:
|
282
|
-
actual_response.headers.update(response.headers)
|
283
|
-
actual_response.cookies.extend(response.cookies)
|
284
|
-
actual_response.background = response.background
|
285
|
-
if response.status_code:
|
286
|
-
actual_response.status_code = response.status_code
|
287
|
-
|
288
|
-
return actual_response
|
269
|
+
return response
|
289
270
|
|
290
271
|
@get(raises=[ValidationException, NotFoundException])
|
291
272
|
async def handle_http_get(
|
292
273
|
self,
|
293
|
-
request: Request,
|
274
|
+
request: Request[Any, Any],
|
294
275
|
context: CustomContext,
|
295
276
|
root_value: Any,
|
277
|
+
response: Response[Any],
|
296
278
|
) -> Response[Union[GraphQLResource, str]]:
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
detail="Unable to parse request body as JSON"
|
305
|
-
) from error
|
306
|
-
return await self.execute_request(
|
307
|
-
request=request,
|
308
|
-
data=query_data,
|
309
|
-
context=context,
|
310
|
-
root_value=root_value,
|
311
|
-
)
|
312
|
-
if self.should_render_graphiql(request):
|
313
|
-
return cast(
|
314
|
-
"Response[Union[GraphQLResource, str]]",
|
315
|
-
self.get_graphiql_response(),
|
316
|
-
)
|
317
|
-
raise NotFoundException()
|
279
|
+
self.temporal_response = response
|
280
|
+
|
281
|
+
return await self.execute_request(
|
282
|
+
request=request,
|
283
|
+
context=context,
|
284
|
+
root_value=root_value,
|
285
|
+
)
|
318
286
|
|
319
287
|
@post(status_code=HTTP_200_OK)
|
320
288
|
async def handle_http_post(
|
321
289
|
self,
|
322
|
-
request: Request,
|
290
|
+
request: Request[Any, Any],
|
323
291
|
context: CustomContext,
|
324
292
|
root_value: Any,
|
293
|
+
response: Response[Any],
|
325
294
|
) -> Response[Union[GraphQLResource, str]]:
|
326
|
-
|
327
|
-
|
328
|
-
content_type, _ = request.content_type
|
329
|
-
|
330
|
-
if "application/json" in content_type:
|
331
|
-
try:
|
332
|
-
data = await request.json()
|
333
|
-
except SerializationException:
|
334
|
-
actual_response = Response(
|
335
|
-
"Unable to parse request body as JSON",
|
336
|
-
status_code=HTTP_400_BAD_REQUEST,
|
337
|
-
media_type=MediaType.TEXT,
|
338
|
-
)
|
339
|
-
return actual_response
|
340
|
-
elif content_type.startswith("multipart/form-data"):
|
341
|
-
multipart_data = await request.form()
|
342
|
-
operations: Dict[str, Any] = multipart_data.get("operations", "{}")
|
343
|
-
files_map: Dict[str, List[str]] = multipart_data.get("map", "{}")
|
344
|
-
try:
|
345
|
-
data = replace_placeholders_with_files(
|
346
|
-
operations, files_map, multipart_data
|
347
|
-
)
|
348
|
-
except KeyError:
|
349
|
-
return Response(
|
350
|
-
"File(s) missing in form data",
|
351
|
-
status_code=HTTP_400_BAD_REQUEST,
|
352
|
-
media_type=MediaType.TEXT,
|
353
|
-
)
|
354
|
-
except (TypeError, AttributeError):
|
355
|
-
return Response(
|
356
|
-
"Unable to parse the multipart body",
|
357
|
-
status_code=HTTP_400_BAD_REQUEST,
|
358
|
-
media_type=MediaType.TEXT,
|
359
|
-
)
|
360
|
-
else:
|
361
|
-
return Response(
|
362
|
-
"Unsupported Media Type",
|
363
|
-
status_code=HTTP_415_UNSUPPORTED_MEDIA_TYPE,
|
364
|
-
media_type=MediaType.TEXT,
|
365
|
-
)
|
295
|
+
self.temporal_response = response
|
366
296
|
|
367
297
|
return await self.execute_request(
|
368
298
|
request=request,
|
369
|
-
data=data,
|
370
299
|
context=context,
|
371
300
|
root_value=root_value,
|
372
301
|
)
|
373
302
|
|
303
|
+
async def get_context(
|
304
|
+
self, request: Request[Any, Any], response: Response[Any]
|
305
|
+
) -> Context: # pragma: no cover
|
306
|
+
raise ValueError("`get_context` is not used by Starlite's controller")
|
307
|
+
|
308
|
+
async def get_root_value(
|
309
|
+
self, request: Request[Any, Any]
|
310
|
+
) -> Optional[RootValue]: # pragma: no cover
|
311
|
+
raise ValueError("`get_root_value` is not used by Starlite's controller")
|
312
|
+
|
313
|
+
async def get_sub_response(self, request: Request[Any, Any]) -> Response[Any]:
|
314
|
+
return self.temporal_response
|
315
|
+
|
374
316
|
@websocket()
|
375
317
|
async def websocket_endpoint(
|
376
318
|
self,
|
@@ -387,7 +329,7 @@ def make_graphql_controller(
|
|
387
329
|
preferred_protocol = self.pick_preferred_protocol(socket)
|
388
330
|
if preferred_protocol == GRAPHQL_TRANSPORT_WS_PROTOCOL:
|
389
331
|
await self.graphql_transport_ws_handler_class(
|
390
|
-
schema=self.
|
332
|
+
schema=self.schema,
|
391
333
|
debug=self._debug,
|
392
334
|
connection_init_wait_timeout=self._connection_init_wait_timeout,
|
393
335
|
get_context=_get_context,
|
@@ -396,7 +338,7 @@ def make_graphql_controller(
|
|
396
338
|
).handle()
|
397
339
|
elif preferred_protocol == GRAPHQL_WS_PROTOCOL:
|
398
340
|
await self.graphql_ws_handler_class(
|
399
|
-
schema=self.
|
341
|
+
schema=self.schema,
|
400
342
|
debug=self._debug,
|
401
343
|
keep_alive=self._keep_alive,
|
402
344
|
keep_alive_interval=self._keep_alive_interval,
|
strawberry/types/graphql.py
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
import enum
|
4
|
-
from typing import Set
|
4
|
+
from typing import TYPE_CHECKING, Set
|
5
|
+
|
6
|
+
if TYPE_CHECKING:
|
7
|
+
from strawberry.http.types import HTTPMethod
|
5
8
|
|
6
9
|
|
7
10
|
class OperationType(enum.Enum):
|
@@ -10,7 +13,7 @@ class OperationType(enum.Enum):
|
|
10
13
|
SUBSCRIPTION = "subscription"
|
11
14
|
|
12
15
|
@staticmethod
|
13
|
-
def from_http(method:
|
16
|
+
def from_http(method: HTTPMethod) -> Set[OperationType]:
|
14
17
|
if method == "GET":
|
15
18
|
return {OperationType.QUERY}
|
16
19
|
|
@@ -1,25 +1,23 @@
|
|
1
1
|
strawberry/__init__.py,sha256=peph4GFl7xjU9_3Dh7ftTxdbOil4I9abdLFUIlEhD7U,1002
|
2
2
|
strawberry/__main__.py,sha256=3U77Eu21mJ-LY27RG-JEnpbh6Z63wGOom4i-EoLtUcY,59
|
3
3
|
strawberry/aiohttp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
strawberry/aiohttp/handlers/__init__.py,sha256=
|
4
|
+
strawberry/aiohttp/handlers/__init__.py,sha256=7EeGIIwrgJYHAS9XJnZLfRGL_GHrligKm39rrVt7qDA,241
|
5
5
|
strawberry/aiohttp/handlers/graphql_transport_ws_handler.py,sha256=Jk4GG8YTxvHCFG2AnaGp9ZjDqaAEwz5TIzOpOn3jrD8,2157
|
6
6
|
strawberry/aiohttp/handlers/graphql_ws_handler.py,sha256=xP5ls2k5D6Zbx8yN6hSfHVw9hn7GurBTh6NJDWPhQFk,2204
|
7
|
-
strawberry/aiohttp/handlers/http_handler.py,sha256=-rskCjH8bQHRdtUqbJizAe6NJkjtAvh8CG7I2rwJqBc,5998
|
8
7
|
strawberry/aiohttp/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
9
8
|
strawberry/aiohttp/test/client.py,sha256=tlpHymSWqhiQbLmKwodcaX2vdc8BW1IaNTFTHlWKlOY,1323
|
10
|
-
strawberry/aiohttp/views.py,sha256=
|
9
|
+
strawberry/aiohttp/views.py,sha256=l85Dy_-e6-19t5szkWn2NQZAkkqSQ-qT47ZXRDXOyfE,5705
|
11
10
|
strawberry/annotation.py,sha256=fabmzUZXfWX6RvfSOAC_LzlgbEs5TT-xliB8b6szB1o,9940
|
12
11
|
strawberry/arguments.py,sha256=-QXnDMvyTyp-3GJvRMuCgwU8SqkgTDO8YmZfYdsc7y0,7837
|
13
|
-
strawberry/asgi/__init__.py,sha256=
|
14
|
-
strawberry/asgi/handlers/__init__.py,sha256=
|
12
|
+
strawberry/asgi/__init__.py,sha256=g2yc_zkN90sK2y9zt9OT2acXEaTjPeSH8QipN3JBjwY,6627
|
13
|
+
strawberry/asgi/handlers/__init__.py,sha256=rz5Gth2eJUn7tDq2--99KSNFeMdDPpLFCkfA7vge0cI,235
|
15
14
|
strawberry/asgi/handlers/graphql_transport_ws_handler.py,sha256=q17qkfWbgR0NZNBBWI9cMdi3ej67L_mtLKSajUM6260,2136
|
16
15
|
strawberry/asgi/handlers/graphql_ws_handler.py,sha256=uTBYGx3b2wW-MHR9wgaPbX1lJLlxxs6LAHJ0ZkZISuc,2319
|
17
|
-
strawberry/asgi/handlers/http_handler.py,sha256=AiXRjlqAAbu1YpGgPKgiOldWupccSrTs5HH7T37hFP4,7699
|
18
16
|
strawberry/asgi/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
19
17
|
strawberry/asgi/test/client.py,sha256=SfcpTzipwFmpPPPBK1h4oxqKa9mFt0OEJg-CbB6bvsY,1402
|
20
18
|
strawberry/auto.py,sha256=npbPB8-4Qbc0PZ3KgOKmfJs6SBFH69nXHZj6sxyBuyY,2565
|
21
19
|
strawberry/chalice/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
strawberry/chalice/views.py,sha256=
|
20
|
+
strawberry/chalice/views.py,sha256=pZhN0xGj2HJrmuP1cP382zripNjRUgzeqJZEZltoGCw,4293
|
23
21
|
strawberry/channels/__init__.py,sha256=-zyz1y9jTpnzuECW5uU4Eh7bC0S2SalSfINpVlU5YkA,524
|
24
22
|
strawberry/channels/context.py,sha256=IVzYw57VF-CNS_2Vs_TlFII85SX_QmGxaAYe5uwnuKA,523
|
25
23
|
strawberry/channels/handlers/base.py,sha256=3ZuiOJ5rg_YSLn9c5wjLZPF4iWpdh0v5y7hvQUfrqag,5510
|
@@ -35,7 +33,7 @@ strawberry/cli/commands/codegen.py,sha256=LBu5s0IbFFZjWU5NHHh-k1v8OfdZsZsr7RwP1b
|
|
35
33
|
strawberry/cli/commands/export_schema.py,sha256=ex4AXavEWaiE9UT1vryT2px7HqtHnZHYpdVlG-M9eXs,651
|
36
34
|
strawberry/cli/commands/server.py,sha256=mIvM8VfIK1vS1Yd_vUfxLPJpQi2EJxfuw1TnpvkYRRM,2025
|
37
35
|
strawberry/cli/constants.py,sha256=GhhDZOl9lN4glq50OI1oSbPSGqQXEarZ6r_Grq8pcpI,138
|
38
|
-
strawberry/cli/debug_server.py,sha256=
|
36
|
+
strawberry/cli/debug_server.py,sha256=wyczYrKHT-XHLQNkW72nY5eHuKoIscHAXpI4G-DRxLg,967
|
39
37
|
strawberry/cli/utils/__init__.py,sha256=ayHhf4I6hAlMFJeg3jBmB1wm3havkLlr_QnoLEqSj9Y,612
|
40
38
|
strawberry/cli/utils/load_schema.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
39
|
strawberry/codegen/__init__.py,sha256=J391-vRPHeeNBJuUlyf2AUZO_mkqMCyJZ_1l4DaRY8w,170
|
@@ -54,7 +52,7 @@ strawberry/django/apps.py,sha256=ZWw3Mzv1Cgy0T9xT8Jr2_dkCTZjT5WQABb34iqnu5pc,135
|
|
54
52
|
strawberry/django/context.py,sha256=KHZ-u9tc2ip3FAEj4mXoFPeKVyq3KyVjHqCZM9uFc7c,607
|
55
53
|
strawberry/django/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
56
54
|
strawberry/django/test/client.py,sha256=lPEbe_4lNL1pSgtywq4O-b6n7ALCW3U9_uvoWz3EaSM,592
|
57
|
-
strawberry/django/views.py,sha256=
|
55
|
+
strawberry/django/views.py,sha256=NCp75DKa1Jt4YSVKcbh0zTsr-VDrlx8A19CmJOS7Bp8,7927
|
58
56
|
strawberry/enum.py,sha256=lkQa6QOnAXnlkQnQsGY1ybF-1yVTranptpM49c6HOGQ,4230
|
59
57
|
strawberry/exceptions/__init__.py,sha256=VppVQCi94XbBcoZUM7VmRQKprL6ahCEftN9K2wSesXw,6131
|
60
58
|
strawberry/exceptions/duplicated_type_name.py,sha256=N4Y9yQ-WG7B1PjP--pUMp_4x6EUqrUi7EGZEv1y6NQ0,2225
|
@@ -113,7 +111,7 @@ strawberry/fastapi/context.py,sha256=hxLoihS9TM16iyUPiAGQf-0i4wv975CJYHHI6EwOewA
|
|
113
111
|
strawberry/fastapi/handlers/__init__.py,sha256=TziBHyibYBOGiidjpCkjNThYbVY7K_nt0hnRLVHVh3I,241
|
114
112
|
strawberry/fastapi/handlers/graphql_transport_ws_handler.py,sha256=k8BhP1xQAFc1GnbQoFhi8KQSWwY1x-ngR9qIDVJW_ic,549
|
115
113
|
strawberry/fastapi/handlers/graphql_ws_handler.py,sha256=U84lpd7Lxl2bEnFr9QroswmEaMO5ipLCZTeYRAaZH-g,504
|
116
|
-
strawberry/fastapi/router.py,sha256
|
114
|
+
strawberry/fastapi/router.py,sha256=EbbxDf21fH5DXkUg_LcSR5kTNVHscoNEUeXclpJgSw8,11360
|
117
115
|
strawberry/federation/__init__.py,sha256=FeUxLiBVuk9TKBmJJi51SeUaI8c80rS8hbl9No-hjII,535
|
118
116
|
strawberry/federation/argument.py,sha256=5qyJYlQGEZd6iXWseQ7dnnejCYj5HyglfK10jOCIJBg,802
|
119
117
|
strawberry/federation/enum.py,sha256=g_f_Pl43vNLoboR4YSocPzY9aWIB9uz5sOhZIG4NvgQ,2117
|
@@ -129,12 +127,18 @@ strawberry/federation/union.py,sha256=PN8TtF5h5BvT1-QMDTNdc-y3Wk_HSwyMfGHNLPfIir
|
|
129
127
|
strawberry/field.py,sha256=6hwWoVSMJ48Dikz29PwARtL8_Fj4nAn6myrXXHdTx5s,16814
|
130
128
|
strawberry/file_uploads/__init__.py,sha256=v2-6FGBqnTnMPSUTFOiXpIutDMl-ga0PFtw5tKlcagk,50
|
131
129
|
strawberry/file_uploads/scalars.py,sha256=jccJh-h7t4naRiDzrszGoYsp95zdF30c7y5Ht0Zrk_s,131
|
132
|
-
strawberry/file_uploads/utils.py,sha256=
|
130
|
+
strawberry/file_uploads/utils.py,sha256=U8gk1aHjWOBa_Opyvc47h6OpYToGq1QiSnEkI2kphdo,1112
|
133
131
|
strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
134
132
|
strawberry/flask/graphiql.py,sha256=YnLRPOJRdzyG62T2TuFOqQ1WX0uiIU6xHLtOvmyBpw4,275
|
135
|
-
strawberry/flask/views.py,sha256=
|
133
|
+
strawberry/flask/views.py,sha256=GlK2zovhrcwVirl3qoacM1oHrPzVXHk7xEpKm_4wRC8,4966
|
136
134
|
strawberry/http/__init__.py,sha256=MMp6ZM0nqV5NrqCwhpSr9KZE5UklJIxRDwd_OgsQnhs,1493
|
137
|
-
strawberry/http/
|
135
|
+
strawberry/http/async_base_view.py,sha256=sNnUXszBJnHzGnl4ssXoH9GhBcJzkx4_VKQIqzQ2V5M,6894
|
136
|
+
strawberry/http/base.py,sha256=GkpqEJ2Xxr3G5TQVKOlOfn2dmOkv0tFBlXEp5Qbu5lY,1865
|
137
|
+
strawberry/http/exceptions.py,sha256=4lgbMQ-UF2HHu2PczqkS1vGAcU08cEGY03FMrVvjqeA,155
|
138
|
+
strawberry/http/sync_base_view.py,sha256=b6yBnrW-gzoNX3ffbk0HQlSqjhTxlXb2C0IyaXG7Y3s,6581
|
139
|
+
strawberry/http/temporal_response.py,sha256=6w_Nn3CNiU54jzEQP8pwzzHhGuh7eJw7S0wIneASJT8,187
|
140
|
+
strawberry/http/types.py,sha256=5alxKekKDASeQS0RkeJYo1CG5HKTXCSfclWPtbYOaPE,348
|
141
|
+
strawberry/http/typevars.py,sha256=Kc2xRx3Jic7AruCtv3FOuv2hqeQQzcCLP1E53Nwmpts,207
|
138
142
|
strawberry/lazy_type.py,sha256=CP-qKPUmeAHkj6raUwY8FalCdFgnK4B_C5evmPOPcjs,3079
|
139
143
|
strawberry/mutation.py,sha256=NROPvHJU1BBxZB7Wj4Okxw4hDIYM59MCpukAGEmSNYA,255
|
140
144
|
strawberry/object_type.py,sha256=MbCwjaGt-m5WUn-X7ajyKUxeSWHWxPqt5AV0vuJYrH0,11020
|
@@ -148,8 +152,8 @@ strawberry/resolvers.py,sha256=g7_g3jmXszziGydY1UG6IItf9s6B1lGLUCnwW1kb8U0,224
|
|
148
152
|
strawberry/sanic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
149
153
|
strawberry/sanic/context.py,sha256=qfoj8QMaAiWbCQFAdm2KPPJGNc7ilXeKAl5z0XJ2nzo,805
|
150
154
|
strawberry/sanic/graphiql.py,sha256=QqAgPCrXh0_RDweBXBTTKv3dOEeWd7-GW-EHW_sBnY4,377
|
151
|
-
strawberry/sanic/utils.py,sha256=
|
152
|
-
strawberry/sanic/views.py,sha256=
|
155
|
+
strawberry/sanic/utils.py,sha256=eDiJPJYpELj4hFsx8CCAHomqe7dDEpStDPm6OfkstJ0,998
|
156
|
+
strawberry/sanic/views.py,sha256=I6RKiYFdPuu7uosJsSmfL0xg_SfJ9UEye-E-tuXzo28,5148
|
153
157
|
strawberry/scalars.py,sha256=CSxTGSvpFyT9H83NxZeiBerl_WPGe43TlSxcrn60960,2076
|
154
158
|
strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
|
155
159
|
strawberry/schema/base.py,sha256=rj4pMnVSdTclZpYIPoyWlwEtSYohqJPJzEgInsoON08,2895
|
@@ -157,16 +161,16 @@ strawberry/schema/compat.py,sha256=fEOig4-X5Q3TrbuHcWXk1t69TzMfOr8vy3U-xB03yEU,1
|
|
157
161
|
strawberry/schema/config.py,sha256=G1MC5DNKvSFNmg4bcu9XjQhceW8xZMIHf1hG3aS4SGA,599
|
158
162
|
strawberry/schema/exceptions.py,sha256=_9Ua-lLRCJfbtd8B6MXILNKGI2SwHkcBNkAHYM7ITp8,534
|
159
163
|
strawberry/schema/execute.py,sha256=vUjrEGzbO5L4YMIosx3RTVt9TQyogf6AeBbKWoMFdO0,10085
|
160
|
-
strawberry/schema/name_converter.py,sha256=
|
164
|
+
strawberry/schema/name_converter.py,sha256=eQh4A-8fQAkhwgFhGk0_qFUQ2NPfqKO8DzKJVrxf0vk,6284
|
161
165
|
strawberry/schema/schema.py,sha256=X_i3TE0Vvm9AV9QrV9qDBdSisbxAkpajpv1RXmQoYG8,11915
|
162
|
-
strawberry/schema/schema_converter.py,sha256=
|
166
|
+
strawberry/schema/schema_converter.py,sha256=qG0-M90_xbUJlYf-hchHduAB3awKTfZBBpIHbzqa2z0,30382
|
163
167
|
strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
|
164
168
|
strawberry/schema/types/base_scalars.py,sha256=yg5Z7jGonN477L5-edMWLZuoehIpm0tdQJ9ATVV3kgc,1831
|
165
169
|
strawberry/schema/types/concrete_type.py,sha256=4HUFIWPfAodU1cj0VAAuU1IrAnsG3XIX_P3X-6n_1IE,708
|
166
170
|
strawberry/schema/types/scalar.py,sha256=MQUnxLjNf13PokHnOJymnjcRF1OPstviEAg0I8_t1Sk,2203
|
167
171
|
strawberry/schema_directive.py,sha256=JI5-pTpSRgtrJjmJmL-z3Z3ECD6yGe2d21gB9IISO5Y,1968
|
168
172
|
strawberry/starlite/__init__.py,sha256=v209swT8H9MljVL-npvANhEO1zz3__PSfxb_Ix-NoeE,134
|
169
|
-
strawberry/starlite/controller.py,sha256=
|
173
|
+
strawberry/starlite/controller.py,sha256=ullES3DqIQUgYFWoU9aK02kcdWseuwD8-2DthJVIZmo,11479
|
170
174
|
strawberry/starlite/handlers/graphql_transport_ws_handler.py,sha256=5mJgJilNtU6hzVT3xV7l1EhfDOPQr0J7ElxS7Jb-xOc,2070
|
171
175
|
strawberry/starlite/handlers/graphql_ws_handler.py,sha256=1o--kbz2GUAnS245G2kw52hXQK6ZW3CBjSqre0dJqaE,2211
|
172
176
|
strawberry/static/graphiql.html,sha256=MnaLNPv0WV9yKYY3-VPd8f7ydgbhnLU6AlDEc0WaVz0,4432
|
@@ -188,7 +192,7 @@ strawberry/types/__init__.py,sha256=APb1Cjy6bxqFxIfDfempP6eb9NE3LYDwQ3gX7r07lXI,
|
|
188
192
|
strawberry/types/execution.py,sha256=fKvwWwOeB6zBXMyPh8GCApeL5HsJZOsqPOyeYifL9dc,2476
|
189
193
|
strawberry/types/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
190
194
|
strawberry/types/fields/resolver.py,sha256=gvhjPbBhjaZVPe5jbt61hgKwpMIutC3IzKTMi8JgaYg,12010
|
191
|
-
strawberry/types/graphql.py,sha256=
|
195
|
+
strawberry/types/graphql.py,sha256=3SWZEsa0Zy1eVW6vy75BnB7t9_lJVi6TBV3_1j3RNBs,687
|
192
196
|
strawberry/types/info.py,sha256=OsqYMzJ6L0xcE80uvS_Oz-b75zsQ66Iv9tvi7f48Q58,2335
|
193
197
|
strawberry/types/nodes.py,sha256=6SA3BFh756S5IZ0NuZc9cLXdQ7gy73TvS3AnFU5Mk6I,4911
|
194
198
|
strawberry/types/type_resolver.py,sha256=gBFuXK4rBgJWCMof1nu36S2Po33z4vP3Kdwt0RFvyAI,7313
|
@@ -208,8 +212,8 @@ strawberry/utils/logging.py,sha256=pz1pRJtx5xX2ejGKNN-fG8zPA4SJjnq1HK9xaQpjd4s,1
|
|
208
212
|
strawberry/utils/operation.py,sha256=-b2Qo6PtMO86emY-opS9ak-knRW_NQbXvEVPmscFRlk,1152
|
209
213
|
strawberry/utils/str_converters.py,sha256=VdOnzaxhwJnmQl1Lon0VOjl72uXhM8tLfGxoGwn3arI,657
|
210
214
|
strawberry/utils/typing.py,sha256=KtfgwoTTNYSw6IDZWf1McwzxZs5D1guNCVmXt8Mh9z8,10071
|
211
|
-
strawberry_graphql-0.
|
212
|
-
strawberry_graphql-0.
|
213
|
-
strawberry_graphql-0.
|
214
|
-
strawberry_graphql-0.
|
215
|
-
strawberry_graphql-0.
|
215
|
+
strawberry_graphql-0.170.0.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
|
216
|
+
strawberry_graphql-0.170.0.dist-info/METADATA,sha256=2Q4B8EhcP0C-6LW6_k_Qj4_uU0H_7d6-I7l1udCzv_g,7551
|
217
|
+
strawberry_graphql-0.170.0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
218
|
+
strawberry_graphql-0.170.0.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
|
219
|
+
strawberry_graphql-0.170.0.dist-info/RECORD,,
|