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.
@@ -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
- # Ignore non-text messages
55
- continue
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
- pass
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 as e:
110
- await self._handler.handle_invalid_message(str(e))
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] = Info(_raw_info=info, _field=field)
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
- # Ignore non-text messages
50
- continue
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
@@ -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 Info(
667
+ return self.config.info_class(
668
668
  _raw_info=info,
669
669
  _field=field,
670
670
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strawberry-graphql
3
- Version: 0.240.4
3
+ Version: 0.242.0
4
4
  Summary: A library for creating GraphQL APIs
5
5
  Home-page: https://strawberry.rocks/
6
6
  License: MIT
@@ -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=Ol8tBLIeal7bRiG_uxyJXnXo24xMDEh6M5XsuCyUpVQ,2275
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=KQXmbk7uDwiG1yOadz65GsSzjAPUjKrpEQYAA94nGRM,2379
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=2W_KpXMmC-LbFLBMMFNarFIMyEBipmIOlQpfnfsyLbE,2538
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=rXWhLxDHSGJHYdCDMb-pckxka-rf4VZqaNSzkagTa6w,4693
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=UNTdzYf60kUtN8BHRwLZ7dKogixywoK9i6gkXkyYlJg,3037
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=iCi2htoSgfk5H59gnw0tMwe9NxodqcaaxSsZ6TkQWYU,2283
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=Aa01oqnHb0ZPlw8Ti_O840LxlT827LNio15BQrc37A0,717
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=lckL2LoxAb6mNfJIVcerht2buzBG573ly3BHyl7wra4,36859
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.240.4.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
249
- strawberry_graphql-0.240.4.dist-info/METADATA,sha256=IqNDPmQaZcnr9BSSjGRay-Vkj85ebNZzgKTK6XqQl9I,7707
250
- strawberry_graphql-0.240.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
251
- strawberry_graphql-0.240.4.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
252
- strawberry_graphql-0.240.4.dist-info/RECORD,,
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,,