strawberry-graphql 0.240.4__py3-none-any.whl → 0.242.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/graphql_ws_handler.py +4 -0
- strawberry/asgi/handlers/graphql_ws_handler.py +3 -2
- strawberry/channels/handlers/graphql_ws_handler.py +1 -1
- strawberry/channels/handlers/ws_handler.py +3 -2
- strawberry/extensions/directives.py +3 -2
- strawberry/litestar/handlers/graphql_ws_handler.py +3 -2
- strawberry/schema/config.py +6 -0
- strawberry/schema/schema_converter.py +2 -2
- {strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/METADATA +1 -1
- {strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/RECORD +13 -13
- {strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/LICENSE +0 -0
- {strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/WHEEL +0 -0
- {strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/entry_points.txt +0 -0
@@ -50,6 +50,10 @@ class GraphQLWSHandler(BaseGraphQLWSHandler):
|
|
50
50
|
if ws_message.type == http.WSMsgType.TEXT:
|
51
51
|
message: OperationMessage = ws_message.json()
|
52
52
|
await self.handle_message(message)
|
53
|
+
else:
|
54
|
+
await self.close(
|
55
|
+
code=1002, reason="WebSocket message type must be text"
|
56
|
+
)
|
53
57
|
finally:
|
54
58
|
if self.keep_alive_task:
|
55
59
|
self.keep_alive_task.cancel()
|
@@ -51,8 +51,9 @@ class GraphQLWSHandler(BaseGraphQLWSHandler):
|
|
51
51
|
try:
|
52
52
|
message = await self._ws.receive_json()
|
53
53
|
except KeyError: # noqa: PERF203
|
54
|
-
|
55
|
-
|
54
|
+
await self.close(
|
55
|
+
code=1002, reason="WebSocket message type must be text"
|
56
|
+
)
|
56
57
|
else:
|
57
58
|
await self.handle_message(message)
|
58
59
|
except WebSocketDisconnect: # pragma: no cover
|
@@ -66,7 +66,7 @@ class GraphQLWSHandler(BaseGraphQLWSHandler):
|
|
66
66
|
# This is not part of the BaseGraphQLWSHandler's interface, but the
|
67
67
|
# channels integration is a high level wrapper that forwards this to
|
68
68
|
# both us and the BaseGraphQLTransportWSHandler.
|
69
|
-
|
69
|
+
await self.close(code=1002, reason=error_message)
|
70
70
|
|
71
71
|
|
72
72
|
__all__ = ["GraphQLWSHandler"]
|
@@ -106,8 +106,9 @@ class GraphQLWSConsumer(ChannelsWSConsumer):
|
|
106
106
|
# Overriding this so that we can pass the errors to handle_invalid_message
|
107
107
|
try:
|
108
108
|
await super().receive(*args, **kwargs)
|
109
|
-
except ValueError
|
110
|
-
|
109
|
+
except ValueError:
|
110
|
+
reason = "WebSocket message type must be text"
|
111
|
+
await self._handler.handle_invalid_message(reason)
|
111
112
|
|
112
113
|
async def receive_json(self, content: Any, **kwargs: Any) -> None:
|
113
114
|
await self._handler.handle_message(content)
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
3
3
|
from typing import TYPE_CHECKING, Any, Callable, Dict, Tuple
|
4
4
|
|
5
5
|
from strawberry.extensions import SchemaExtension
|
6
|
-
from strawberry.types import Info
|
7
6
|
from strawberry.types.nodes import convert_arguments
|
8
7
|
from strawberry.utils.await_maybe import await_maybe
|
9
8
|
|
@@ -81,7 +80,9 @@ def process_directive(
|
|
81
80
|
field_name=info.field_name,
|
82
81
|
type_name=info.parent_type.name,
|
83
82
|
)
|
84
|
-
arguments[info_parameter.name] =
|
83
|
+
arguments[info_parameter.name] = schema.config.info_class(
|
84
|
+
_raw_info=info, _field=field
|
85
|
+
)
|
85
86
|
if value_parameter:
|
86
87
|
arguments[value_parameter.name] = value
|
87
88
|
return strawberry_directive, arguments
|
@@ -46,8 +46,9 @@ class GraphQLWSHandler(BaseGraphQLWSHandler):
|
|
46
46
|
try:
|
47
47
|
message = await self._ws.receive_json()
|
48
48
|
except (SerializationException, ValueError): # noqa: PERF203
|
49
|
-
|
50
|
-
|
49
|
+
await self.close(
|
50
|
+
code=1002, reason="WebSocket message type must be text"
|
51
|
+
)
|
51
52
|
else:
|
52
53
|
await self.handle_message(message)
|
53
54
|
except WebSocketDisconnect: # pragma: no cover
|
strawberry/schema/config.py
CHANGED
@@ -3,6 +3,8 @@ from __future__ import annotations
|
|
3
3
|
from dataclasses import InitVar, dataclass, field
|
4
4
|
from typing import Any, Callable
|
5
5
|
|
6
|
+
from strawberry.types.info import Info
|
7
|
+
|
6
8
|
from .name_converter import NameConverter
|
7
9
|
|
8
10
|
|
@@ -13,6 +15,7 @@ class StrawberryConfig:
|
|
13
15
|
default_resolver: Callable[[Any, str], object] = getattr
|
14
16
|
relay_max_results: int = 100
|
15
17
|
disable_field_suggestions: bool = False
|
18
|
+
info_class: type[Info] = Info
|
16
19
|
|
17
20
|
def __post_init__(
|
18
21
|
self,
|
@@ -21,5 +24,8 @@ class StrawberryConfig:
|
|
21
24
|
if auto_camel_case is not None:
|
22
25
|
self.name_converter.auto_camel_case = auto_camel_case
|
23
26
|
|
27
|
+
if not issubclass(self.info_class, Info):
|
28
|
+
raise TypeError("`info_class` must be a subclass of strawberry.Info")
|
29
|
+
|
24
30
|
|
25
31
|
__all__ = ["StrawberryConfig"]
|
@@ -64,7 +64,6 @@ from strawberry.types.base import (
|
|
64
64
|
)
|
65
65
|
from strawberry.types.enum import EnumDefinition
|
66
66
|
from strawberry.types.field import UNRESOLVED
|
67
|
-
from strawberry.types.info import Info
|
68
67
|
from strawberry.types.lazy_type import LazyType
|
69
68
|
from strawberry.types.private import is_private
|
70
69
|
from strawberry.types.scalar import ScalarWrapper
|
@@ -90,6 +89,7 @@ if TYPE_CHECKING:
|
|
90
89
|
from strawberry.schema_directive import StrawberrySchemaDirective
|
91
90
|
from strawberry.types.enum import EnumValue
|
92
91
|
from strawberry.types.field import StrawberryField
|
92
|
+
from strawberry.types.info import Info
|
93
93
|
from strawberry.types.scalar import ScalarDefinition
|
94
94
|
|
95
95
|
|
@@ -664,7 +664,7 @@ class GraphQLCoreConverter:
|
|
664
664
|
return _get_basic_result
|
665
665
|
|
666
666
|
def _strawberry_info_from_graphql(info: GraphQLResolveInfo) -> Info:
|
667
|
-
return
|
667
|
+
return self.config.info_class(
|
668
668
|
_raw_info=info,
|
669
669
|
_field=field,
|
670
670
|
)
|
@@ -3,7 +3,7 @@ strawberry/__main__.py,sha256=3U77Eu21mJ-LY27RG-JEnpbh6Z63wGOom4i-EoLtUcY,59
|
|
3
3
|
strawberry/aiohttp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
strawberry/aiohttp/handlers/__init__.py,sha256=7EeGIIwrgJYHAS9XJnZLfRGL_GHrligKm39rrVt7qDA,241
|
5
5
|
strawberry/aiohttp/handlers/graphql_transport_ws_handler.py,sha256=-dihpF3pueV6jcd0x4k0GF-3VtG_IvfyKQ1ZVgg1T4U,2092
|
6
|
-
strawberry/aiohttp/handlers/graphql_ws_handler.py,sha256=
|
6
|
+
strawberry/aiohttp/handlers/graphql_ws_handler.py,sha256=3U-E-o_QcLGoVaHE2oAPN3tTTIRwqGH0_688kbOtT7I,2437
|
7
7
|
strawberry/aiohttp/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
8
8
|
strawberry/aiohttp/test/client.py,sha256=4vjTDxtNVfpa74GfUUO7efPI6Ssh1vzfCYp3tPA-SLk,1357
|
9
9
|
strawberry/aiohttp/views.py,sha256=9-oVlT-DVQL9bGiV0uY6lBCRz7KtQDA_nPPk-M0HH2w,6936
|
@@ -11,7 +11,7 @@ strawberry/annotation.py,sha256=ftSxGZQUk4C5_5YRM_wNJFVVnZi0XOp71kD7zv4oxbU,1307
|
|
11
11
|
strawberry/asgi/__init__.py,sha256=gtAP5BF7z0lnxoKDeprEv2tuffjDRWNx2Xc2v-B6Prg,7526
|
12
12
|
strawberry/asgi/handlers/__init__.py,sha256=rz5Gth2eJUn7tDq2--99KSNFeMdDPpLFCkfA7vge0cI,235
|
13
13
|
strawberry/asgi/handlers/graphql_transport_ws_handler.py,sha256=_5N58XdtCZndU81ky1f5cwG9E4NhysxP4uHlqqZNzn4,2147
|
14
|
-
strawberry/asgi/handlers/graphql_ws_handler.py,sha256=
|
14
|
+
strawberry/asgi/handlers/graphql_ws_handler.py,sha256=UnjkjyEen2P4Ld9AuazcZ2qY-VRdBubunb4JHtAP89o,2443
|
15
15
|
strawberry/asgi/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
16
16
|
strawberry/asgi/test/client.py,sha256=VolupxMna9ktF1lYgV_dUQAIN53DNzVyWTeWTbwsxqE,1448
|
17
17
|
strawberry/chalice/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -20,9 +20,9 @@ strawberry/channels/__init__.py,sha256=9oRdAT7uIYETF-23gZ5NteOXSjwkUtwRmwu3YCFv1
|
|
20
20
|
strawberry/channels/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
strawberry/channels/handlers/base.py,sha256=DlMmzuZl-feceZZ7UHLW-zBSNVxHvaWTqwyWDP-e1Dg,7861
|
22
22
|
strawberry/channels/handlers/graphql_transport_ws_handler.py,sha256=jMWmZ4Haoo3bf_bcM4ZheAjkreuhZBhwMhEX6GZ0Ue4,1995
|
23
|
-
strawberry/channels/handlers/graphql_ws_handler.py,sha256=
|
23
|
+
strawberry/channels/handlers/graphql_ws_handler.py,sha256=ulkMQP7h5cFDDLVBWV-10fYa9GS2pFg3FdS0Axtov-U,2583
|
24
24
|
strawberry/channels/handlers/http_handler.py,sha256=k4-qer3trApTv8VXEvAc2ub6QATKcOxPBaIezNqhjDQ,11142
|
25
|
-
strawberry/channels/handlers/ws_handler.py,sha256=
|
25
|
+
strawberry/channels/handlers/ws_handler.py,sha256=hpgXSWsUMWP3ylJtHGFcLtNpSKgPMWJTfnUTKElBBzA,4747
|
26
26
|
strawberry/channels/router.py,sha256=DKIbl4zuRBhfvViUVpyu0Rf_WRT41E6uZC-Yic9Ltvo,2024
|
27
27
|
strawberry/channels/testing.py,sha256=GZqYu_rhrT1gLHmdI219L1fctVDmrv7AMHs0bwhXitc,6166
|
28
28
|
strawberry/cli/__init__.py,sha256=byS5VrEiTJatAH6YS4V1Kd4SOwMRAQO2M1oJdIddivg,585
|
@@ -100,7 +100,7 @@ strawberry/extensions/__init__.py,sha256=SZ-YEMnxAzoDZFo-uHXMHOaY_PPkYm1muPpK4cc
|
|
100
100
|
strawberry/extensions/add_validation_rules.py,sha256=abkOaXG-unAZj2xL2sspeUXpZKBCpj5Kr5h7TreN4gM,1338
|
101
101
|
strawberry/extensions/base_extension.py,sha256=Wf-Xu38lPXXBPuhsxpMi18yL5oH0uoskPhs08hfSYXg,2362
|
102
102
|
strawberry/extensions/context.py,sha256=j2pxKnZ8HOgugm_P_YJV6Fbp_SXkS-U5OLQvn-ofjRM,7210
|
103
|
-
strawberry/extensions/directives.py,sha256=
|
103
|
+
strawberry/extensions/directives.py,sha256=5L6vSXbVuEjSSolKLE7LLfSejJyJhyhwDJgQ8HfTeVA,3045
|
104
104
|
strawberry/extensions/disable_validation.py,sha256=wupc5zATOLyZmay14WI-FKaPZo0jj23hv8_4H3jvbMQ,741
|
105
105
|
strawberry/extensions/field_extension.py,sha256=PHsb1ctvyrjOmgWVQdABFDAlnPYsalExYM7jYu5VPVg,5740
|
106
106
|
strawberry/extensions/mask_errors.py,sha256=Khfun5JtrU57rhnP2Sxsl8Q6Eo70GYoQcn9sPDLg4nY,1460
|
@@ -157,7 +157,7 @@ strawberry/litestar/__init__.py,sha256=zsXzg-mglCGUVO9iNXLm-yadoDSCK7k-zuyRqyvAh
|
|
157
157
|
strawberry/litestar/controller.py,sha256=448P5HTt5ZwxNhuhpgWuhX1-YpZl1UzSxvDJHQquw9c,14062
|
158
158
|
strawberry/litestar/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
159
159
|
strawberry/litestar/handlers/graphql_transport_ws_handler.py,sha256=rDE-I02_fCov4FfpdBJBE2Xt-4FSNU8xJuQ6xedMF6E,2050
|
160
|
-
strawberry/litestar/handlers/graphql_ws_handler.py,sha256=
|
160
|
+
strawberry/litestar/handlers/graphql_ws_handler.py,sha256=b4gz9aEKtpXUcdyB3o9PzmINcuNReIshJM1bfPXH14Q,2347
|
161
161
|
strawberry/parent.py,sha256=sXURm0lauSpjUADsmfNGY-Zl7kHs0A67BFcWuWKzRxw,771
|
162
162
|
strawberry/permission.py,sha256=NsYq-c4AgDCDBsYXsJN94yWJjuwYkvytpqXE4BIf_vc,7226
|
163
163
|
strawberry/printer/__init__.py,sha256=DmepjmgtkdF5RxK_7yC6qUyRWn56U-9qeZMbkztYB9w,62
|
@@ -180,12 +180,12 @@ strawberry/scalars.py,sha256=c3y8EOmX-KUxSgRqk1TNercMA6_rgBHhQPp0z3C2zBU,2240
|
|
180
180
|
strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
|
181
181
|
strawberry/schema/base.py,sha256=yarj62fhfCp0kToJPpWlNcCjyZV2CafbfpZ-yamjNVg,3730
|
182
182
|
strawberry/schema/compat.py,sha256=rRqUm5-XgPXC018_u0Mrd4iad7tTRCNA45Ko4NaT6gk,1836
|
183
|
-
strawberry/schema/config.py,sha256=
|
183
|
+
strawberry/schema/config.py,sha256=6BpCbNNCuekGgiKEPt2mliMqLH_wIjJmSW0tLbnJwk4,924
|
184
184
|
strawberry/schema/exceptions.py,sha256=rqVNb_oYrKM0dHPgvAemqCG6Um282LPPu4zwQ5cZqs4,584
|
185
185
|
strawberry/schema/execute.py,sha256=EWNmu3hvlZMV2EWi8IbWVLUQYRH45AFB68DrOnx3BEI,11913
|
186
186
|
strawberry/schema/name_converter.py,sha256=tpqw2XCSFvJI-H844iWhE2Z1sKic7DrjIZxt11eJN5Y,6574
|
187
187
|
strawberry/schema/schema.py,sha256=rdsZrnAZZDV_eU_9s2K21hgROtP29GRt5MjUrwVBwyE,19034
|
188
|
-
strawberry/schema/schema_converter.py,sha256=
|
188
|
+
strawberry/schema/schema_converter.py,sha256=znAKbouf_Vh5sXMhuxSABAatZ7HrvM3gONAZkjPMeDE,36881
|
189
189
|
strawberry/schema/subscribe.py,sha256=wg-U2S-SrHxvtJA9KttnBQnyUOh-qy7UaPjumNk2Czw,6007
|
190
190
|
strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
|
191
191
|
strawberry/schema/types/base_scalars.py,sha256=NTj_tYqWLQLEOPDhBhSE1My4JXoieyg0jO8B6RNK-xA,1913
|
@@ -245,8 +245,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
|
|
245
245
|
strawberry/utils/operation.py,sha256=SSXxN-vMqdHO6W2OZtip-1z7y4_A-eTVFdhDvhKeLCk,1193
|
246
246
|
strawberry/utils/str_converters.py,sha256=KGd7QH90RevaJjH6SQEkiVVsb8KuhJr_wv5AsI7UzQk,897
|
247
247
|
strawberry/utils/typing.py,sha256=3xws5kxSQGsp8BnYyUwClvxXNzZakMAuOPoq1rjHRuk,14252
|
248
|
-
strawberry_graphql-0.
|
249
|
-
strawberry_graphql-0.
|
250
|
-
strawberry_graphql-0.
|
251
|
-
strawberry_graphql-0.
|
252
|
-
strawberry_graphql-0.
|
248
|
+
strawberry_graphql-0.242.0.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
|
249
|
+
strawberry_graphql-0.242.0.dist-info/METADATA,sha256=N_oJWtKlTnJhbLj9mZfgDsKMfbh7o9YZZ_nUuAVZdV4,7707
|
250
|
+
strawberry_graphql-0.242.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
251
|
+
strawberry_graphql-0.242.0.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
|
252
|
+
strawberry_graphql-0.242.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{strawberry_graphql-0.240.4.dist-info → strawberry_graphql-0.242.0.dist-info}/entry_points.txt
RENAMED
File without changes
|