strawberry-graphql 0.262.3__py3-none-any.whl → 0.262.5__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.
@@ -91,6 +91,10 @@ ATTR_TO_TYPE_MAP_Pydantic_V2 = {
91
91
  "SecretStr": str,
92
92
  "SecretBytes": bytes,
93
93
  "AnyUrl": str,
94
+ "AnyHttpUrl": str,
95
+ "HttpUrl": str,
96
+ "PostgresDsn": str,
97
+ "RedisDsn": str,
94
98
  }
95
99
 
96
100
  ATTR_TO_TYPE_MAP_Pydantic_Core_V2 = {
@@ -218,13 +222,13 @@ class PydanticV1Compat:
218
222
  ConstrainedStr = pydantic.v1.ConstrainedStr
219
223
  ConstrainedList = pydantic.v1.ConstrainedList
220
224
 
221
- if lenient_issubclass(type_, ConstrainedInt):
225
+ if lenient_issubclass(type_, ConstrainedInt): # type: ignore
222
226
  return int
223
- if lenient_issubclass(type_, ConstrainedFloat):
227
+ if lenient_issubclass(type_, ConstrainedFloat): # type: ignore
224
228
  return float
225
- if lenient_issubclass(type_, ConstrainedStr):
229
+ if lenient_issubclass(type_, ConstrainedStr): # type: ignore
226
230
  return str
227
- if lenient_issubclass(type_, ConstrainedList):
231
+ if lenient_issubclass(type_, ConstrainedList): # type: ignore
228
232
  return list[self.get_basic_type(type_.item_type)] # type: ignore
229
233
 
230
234
  if type_ in self.fields_map:
@@ -263,8 +267,8 @@ class PydanticCompat:
263
267
  if IS_PYDANTIC_V2:
264
268
  from typing_extensions import get_args, get_origin
265
269
 
266
- from pydantic._internal._typing_extra import is_new_type
267
- from pydantic._internal._utils import lenient_issubclass, smart_deepcopy
270
+ from pydantic.v1.typing import is_new_type
271
+ from pydantic.v1.utils import lenient_issubclass, smart_deepcopy
268
272
 
269
273
  def new_type_supertype(type_: Any) -> Any:
270
274
  return type_.__supertype__
strawberry/flask/views.py CHANGED
@@ -49,7 +49,7 @@ class FlaskHTTPRequestAdapter(SyncHTTPRequestAdapter):
49
49
 
50
50
  @property
51
51
  def headers(self) -> Mapping[str, str]:
52
- return self.request.headers
52
+ return self.request.headers # type: ignore
53
53
 
54
54
  @property
55
55
  def post_data(self) -> Mapping[str, Union[str, bytes]]:
@@ -147,7 +147,7 @@ class AsyncFlaskHTTPRequestAdapter(AsyncHTTPRequestAdapter):
147
147
 
148
148
  @property
149
149
  def headers(self) -> Mapping[str, str]:
150
- return self.request.headers
150
+ return self.request.headers # type: ignore
151
151
 
152
152
  async def get_body(self) -> str:
153
153
  return self.request.data.decode()
strawberry/quart/views.py CHANGED
@@ -35,7 +35,7 @@ class QuartHTTPRequestAdapter(AsyncHTTPRequestAdapter):
35
35
 
36
36
  @property
37
37
  def headers(self) -> Mapping[str, str]:
38
- return self.request.headers
38
+ return self.request.headers # type: ignore
39
39
 
40
40
  async def get_body(self) -> str:
41
41
  return (await self.request.data).decode()
strawberry/sanic/views.py CHANGED
@@ -179,7 +179,7 @@ class GraphQLView(
179
179
  except HTTPException as e:
180
180
  return HTTPResponse(e.reason, status=e.status_code)
181
181
 
182
- async def get(self, request: Request) -> HTTPResponse: # type: ignore[override]
182
+ async def get(self, request: Request) -> HTTPResponse:
183
183
  self.request = request
184
184
 
185
185
  try:
strawberry/schema/base.py CHANGED
@@ -12,6 +12,7 @@ if TYPE_CHECKING:
12
12
  from graphql import GraphQLError
13
13
 
14
14
  from strawberry.directive import StrawberryDirective
15
+ from strawberry.schema.schema import SubscriptionResult
15
16
  from strawberry.schema.schema_converter import GraphQLCoreConverter
16
17
  from strawberry.types import (
17
18
  ExecutionContext,
@@ -27,7 +28,6 @@ if TYPE_CHECKING:
27
28
  from strawberry.types.union import StrawberryUnion
28
29
 
29
30
  from .config import StrawberryConfig
30
- from .subscribe import SubscriptionResult
31
31
 
32
32
 
33
33
  class BaseSchema(Protocol):
@@ -82,8 +82,8 @@ if TYPE_CHECKING:
82
82
  from strawberry.types.scalar import ScalarDefinition, ScalarWrapper
83
83
  from strawberry.types.union import StrawberryUnion
84
84
 
85
- SubscriptionResult: TypeAlias = Union[
86
- PreExecutionError, AsyncGenerator[ExecutionResult, None]
85
+ SubscriptionResult: TypeAlias = AsyncGenerator[
86
+ Union[PreExecutionError, ExecutionResult], None
87
87
  ]
88
88
 
89
89
  OriginSubscriptionResult = Union[
@@ -760,7 +760,7 @@ class Schema(BaseSchema):
760
760
  for extension in extensions:
761
761
  extension.execution_context = execution_context
762
762
 
763
- asyncgen = self._subscribe(
763
+ return self._subscribe(
764
764
  execution_context,
765
765
  extensions_runner=self.create_extensions_runner(
766
766
  execution_context, extensions
@@ -768,31 +768,6 @@ class Schema(BaseSchema):
768
768
  middleware_manager=self._get_middleware_manager(extensions),
769
769
  execution_context_class=self.execution_context_class,
770
770
  )
771
- # GraphQL-core might return an initial error result instead of an async iterator.
772
- # This happens when "there was an immediate error" i.e resolver is not an async iterator.
773
- # To overcome this while maintaining the extension contexts we do this trick.
774
- first = await asyncgen.__anext__()
775
- if isinstance(first, PreExecutionError):
776
- await asyncgen.aclose()
777
- return first
778
-
779
- async def _wrapper() -> AsyncGenerator[ExecutionResult, None]:
780
- yield first
781
- async for result in asyncgen:
782
- yield result
783
-
784
- return _wrapper()
785
-
786
- return await subscribe(
787
- self._schema,
788
- execution_context=execution_context,
789
- extensions_runner=self.create_extensions_runner(
790
- execution_context, extensions
791
- ),
792
- process_errors=self._process_errors,
793
- middleware_manager=self._get_middleware_manager(extensions),
794
- execution_context_class=self.execution_context_class,
795
- )
796
771
 
797
772
  def _resolve_node_ids(self) -> None:
798
773
  for concrete_type in self.schema_converter.type_map.values():
@@ -2,7 +2,6 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import logging
5
- from collections.abc import Awaitable
6
5
  from contextlib import suppress
7
6
  from typing import (
8
7
  TYPE_CHECKING,
@@ -38,12 +37,11 @@ from strawberry.utils.debug import pretty_print_graphql_operation
38
37
  from strawberry.utils.operation import get_operation_type
39
38
 
40
39
  if TYPE_CHECKING:
41
- from collections.abc import Awaitable
42
40
  from datetime import timedelta
43
41
 
44
42
  from strawberry.http.async_base_view import AsyncBaseHTTPView, AsyncWebSocketAdapter
45
43
  from strawberry.schema import BaseSchema
46
- from strawberry.schema.subscribe import SubscriptionResult
44
+ from strawberry.schema.schema import SubscriptionResult
47
45
 
48
46
 
49
47
  class BaseGraphQLTransportWSHandler(Generic[Context, RootValue]):
@@ -186,8 +184,6 @@ class BaseGraphQLTransportWSHandler(Generic[Context, RootValue]):
186
184
  elif hasattr(self.context, "connection_params"):
187
185
  self.context.connection_params = payload
188
186
 
189
- self.context = cast(Context, self.context)
190
-
191
187
  try:
192
188
  connection_ack_payload = await self.view.on_ws_connect(self.context)
193
189
  except ConnectionRejectionError:
@@ -256,50 +252,61 @@ class BaseGraphQLTransportWSHandler(Generic[Context, RootValue]):
256
252
 
257
253
  async def run_operation(self, operation: Operation[Context, RootValue]) -> None:
258
254
  """The operation task's top level method. Cleans-up and de-registers the operation once it is done."""
259
- # TODO: Handle errors in this method using self.handle_task_exception()
260
-
261
- result_source: Awaitable[ExecutionResult] | Awaitable[SubscriptionResult]
262
-
263
- # Get an AsyncGenerator yielding the results
264
- if operation.operation_type == OperationType.SUBSCRIPTION:
265
- result_source = self.schema.subscribe(
266
- query=operation.query,
267
- variable_values=operation.variables,
268
- operation_name=operation.operation_name,
269
- context_value=self.context,
270
- root_value=self.root_value,
271
- )
272
- else:
273
- result_source = self.schema.execute(
274
- query=operation.query,
275
- variable_values=operation.variables,
276
- context_value=self.context,
277
- root_value=self.root_value,
278
- operation_name=operation.operation_name,
279
- )
255
+ result_source: ExecutionResult | SubscriptionResult
280
256
 
281
257
  try:
282
- first_res_or_agen = await result_source
283
- # that's an immediate error we should end the operation
284
- # without a COMPLETE message
285
- if isinstance(first_res_or_agen, PreExecutionError):
286
- assert first_res_or_agen.errors
287
- await operation.send_initial_errors(first_res_or_agen.errors)
288
- # that's a mutation / query result
289
- elif isinstance(first_res_or_agen, ExecutionResult):
290
- await operation.send_next(first_res_or_agen)
291
- await operation.send_operation_message(
292
- {"id": operation.id, "type": "complete"}
258
+ # Get an AsyncGenerator yielding the results
259
+ if operation.operation_type == OperationType.SUBSCRIPTION:
260
+ result_source = await self.schema.subscribe(
261
+ query=operation.query,
262
+ variable_values=operation.variables,
263
+ operation_name=operation.operation_name,
264
+ context_value=self.context,
265
+ root_value=self.root_value,
293
266
  )
294
267
  else:
295
- async for result in first_res_or_agen:
268
+ result_source = await self.schema.execute(
269
+ query=operation.query,
270
+ variable_values=operation.variables,
271
+ context_value=self.context,
272
+ root_value=self.root_value,
273
+ operation_name=operation.operation_name,
274
+ )
275
+
276
+ # TODO: maybe change PreExecutionError to an exception that can be caught
277
+
278
+ if isinstance(result_source, ExecutionResult):
279
+ if isinstance(result_source, PreExecutionError):
280
+ assert result_source.errors
281
+ await operation.send_initial_errors(result_source.errors)
282
+ else:
283
+ await operation.send_next(result_source)
284
+ else:
285
+ is_first_result = True
286
+
287
+ async for result in result_source:
288
+ if is_first_result and isinstance(result, PreExecutionError):
289
+ assert result.errors
290
+ await operation.send_initial_errors(result.errors)
291
+ break
292
+
296
293
  await operation.send_next(result)
294
+ is_first_result = False
295
+
296
+ await operation.send_operation_message(
297
+ CompleteMessage(id=operation.id, type="complete")
298
+ )
299
+
300
+ except Exception as error: # pragma: no cover
301
+ await self.handle_task_exception(error)
302
+
303
+ with suppress(Exception):
297
304
  await operation.send_operation_message(
298
305
  {"id": operation.id, "type": "complete"}
299
306
  )
300
307
 
301
- except BaseException: # pragma: no cover
302
308
  self.operations.pop(operation.id, None)
309
+
303
310
  raise
304
311
  finally:
305
312
  # add this task to a list to be reaped later
@@ -15,9 +15,11 @@ from strawberry.exceptions import ConnectionRejectionError
15
15
  from strawberry.http.exceptions import NonTextMessageReceived, WebSocketDisconnected
16
16
  from strawberry.http.typevars import Context, RootValue
17
17
  from strawberry.subscriptions.protocols.graphql_ws.types import (
18
+ CompleteMessage,
18
19
  ConnectionInitMessage,
19
20
  ConnectionTerminateMessage,
20
21
  DataMessage,
22
+ ErrorMessage,
21
23
  OperationMessage,
22
24
  StartMessage,
23
25
  StopMessage,
@@ -103,8 +105,6 @@ class BaseGraphQLWSHandler(Generic[Context, RootValue]):
103
105
  elif hasattr(self.context, "connection_params"):
104
106
  self.context.connection_params = payload
105
107
 
106
- self.context = cast(Context, self.context)
107
-
108
108
  try:
109
109
  connection_ack_payload = await self.view.on_ws_connect(self.context)
110
110
  except ConnectionRejectionError as e:
@@ -164,31 +164,37 @@ class BaseGraphQLWSHandler(Generic[Context, RootValue]):
164
164
  variables: Optional[dict[str, object]],
165
165
  ) -> None:
166
166
  try:
167
- agen_or_err = await self.schema.subscribe(
167
+ result_source = await self.schema.subscribe(
168
168
  query=query,
169
169
  variable_values=variables,
170
170
  operation_name=operation_name,
171
171
  context_value=self.context,
172
172
  root_value=self.root_value,
173
173
  )
174
- if isinstance(agen_or_err, PreExecutionError):
175
- assert agen_or_err.errors
176
- await self.send_message(
177
- {
178
- "type": "error",
179
- "id": operation_id,
180
- "payload": agen_or_err.errors[0].formatted,
181
- }
182
- )
183
- else:
184
- self.subscriptions[operation_id] = agen_or_err
174
+ self.subscriptions[operation_id] = result_source
175
+
176
+ is_first_result = True
177
+
178
+ async for result in result_source:
179
+ if is_first_result and isinstance(result, PreExecutionError):
180
+ assert result.errors
181
+
182
+ await self.send_message(
183
+ ErrorMessage(
184
+ type="error",
185
+ id=operation_id,
186
+ payload=result.errors[0].formatted,
187
+ )
188
+ )
189
+ return
190
+
191
+ await self.send_data_message(result, operation_id)
192
+ is_first_result = False
185
193
 
186
- async for result in agen_or_err:
187
- await self.send_data_message(result, operation_id)
194
+ await self.send_message(CompleteMessage(type="complete", id=operation_id))
188
195
 
189
- await self.send_message({"type": "complete", "id": operation_id})
190
196
  except asyncio.CancelledError:
191
- await self.send_message({"type": "complete", "id": operation_id})
197
+ await self.send_message(CompleteMessage(type="complete", id=operation_id))
192
198
 
193
199
  async def cleanup_operation(self, operation_id: str) -> None:
194
200
  if operation_id in self.subscriptions:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: strawberry-graphql
3
- Version: 0.262.3
3
+ Version: 0.262.5
4
4
  Summary: A library for creating GraphQL APIs
5
5
  License: MIT
6
6
  Keywords: graphql,api,rest,starlette,async
@@ -73,7 +73,7 @@ strawberry/exceptions/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
73
73
  strawberry/exceptions/utils/source_finder.py,sha256=kqSjCGIlnkD0DuCBYElqConp9wAvAyQ8kIHKgnmupjY,20123
74
74
  strawberry/experimental/__init__.py,sha256=2HP5XtxL8ZKsPp4EDRAbMCqiP7p2V4Cca278JUGxnt0,102
75
75
  strawberry/experimental/pydantic/__init__.py,sha256=UpO8wHNXGpoCYp34YStViInO1tsrGsMyhTVubTpJY7Y,255
76
- strawberry/experimental/pydantic/_compat.py,sha256=h3vLo7GqXR1pT2ekbYUSq_j9RKrcMzj0J_lBMky0y34,8393
76
+ strawberry/experimental/pydantic/_compat.py,sha256=GN_EQK_Pa3tlzTH3iVEvjerauFOJDNnpDHk7jrD5Dt0,8523
77
77
  strawberry/experimental/pydantic/conversion.py,sha256=210v83ttSVhBlNM52to-x8s80V9WuOPez94qd5yDOD4,4224
78
78
  strawberry/experimental/pydantic/conversion_types.py,sha256=jf7PR5Q7hgo4J_AuxBK-BVj-8MC6vIg1k1pUfGfGTL8,925
79
79
  strawberry/experimental/pydantic/error_type.py,sha256=NdiaAv2zlaNKfzw0vGgG0lOLTfXAM8gQMk2LsfE7bI4,4555
@@ -129,7 +129,7 @@ strawberry/file_uploads/__init__.py,sha256=v2-6FGBqnTnMPSUTFOiXpIutDMl-ga0PFtw5t
129
129
  strawberry/file_uploads/scalars.py,sha256=NRDeB7j8aotqIkz9r62ISTf4DrxQxEZYUuHsX5K16aU,161
130
130
  strawberry/file_uploads/utils.py,sha256=-c6TbqUI-Dkb96hWCrZabh6TL2OabBuQNkCarOqgDm4,1181
131
131
  strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
- strawberry/flask/views.py,sha256=P7TuUaPRdILbC2fvqNm1kDMAz23rqcW2CCnJoT2pGe8,6319
132
+ strawberry/flask/views.py,sha256=HmkqZrO6KSBSM-yNbJkBR34Q5n7oVsTsuCzt2Og5Zws,6351
133
133
  strawberry/http/__init__.py,sha256=BV_JpUwNongW38UzFstM72hDXNUjSxdJm_M96pDFU1c,1122
134
134
  strawberry/http/async_base_view.py,sha256=USt2Ife2RZ1WjhwRBD5_5K-qJOz6UIdXiMGhnnd59T4,16350
135
135
  strawberry/http/base.py,sha256=Lz-u5SWg2uQp3l5GMKZDPQuJOR42LXHgjV1PZHwiapE,2373
@@ -149,7 +149,7 @@ strawberry/printer/ast_from_value.py,sha256=Tkme60qlykbN2m3dNPNMOe65X-wj6EmcDQwg
149
149
  strawberry/printer/printer.py,sha256=bQ1y8QGSfigU4L-oKi6Akr8LQ75KpUt_WLlp81QFnDE,18800
150
150
  strawberry/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  strawberry/quart/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
- strawberry/quart/views.py,sha256=Xo7n5cu85fUZW-SGKTbZ4e4UuFrQvRb9PkMPjk0uPSM,4431
152
+ strawberry/quart/views.py,sha256=FmzvRA8xjtOz2ZqxwyX10OIDxvnhncPYjywXdFJ037k,4447
153
153
  strawberry/relay/__init__.py,sha256=Vi4btvA_g6Cj9Tk_F9GCSegapIf2WqkOWV8y3P0cTCs,553
154
154
  strawberry/relay/exceptions.py,sha256=KjqzBhOo4qp38GZ7O8aRtAb82sijc1wJKllhGFaRvt4,4029
155
155
  strawberry/relay/fields.py,sha256=3J5py9uXGDowSxlG-NvwjTquw1abUIUtgyZd8egGtD4,18086
@@ -159,15 +159,15 @@ strawberry/resolvers.py,sha256=Vdidc3YFc4-olSQZD_xQ1icyAFbyzqs_8I3eSpMFlA4,260
159
159
  strawberry/sanic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
160
  strawberry/sanic/context.py,sha256=qN7I9K_qIqgdbG_FbDl8XMb9aM1PyjIxSo8IAg2Uq8o,844
161
161
  strawberry/sanic/utils.py,sha256=73lkICa7ZMJvXpcNaIhoKsDkdIA7amOCiV6DN_ib7qY,1068
162
- strawberry/sanic/views.py,sha256=O-1t3rHASim3GDB_0lneBYXgyb1v6g7D8Ortvx61XiE,7093
162
+ strawberry/sanic/views.py,sha256=-X3mKtcqxS6_4OZ7DU5PgoLfd5ebsoQXOsG8ZHE_TV0,7067
163
163
  strawberry/scalars.py,sha256=FcFTbu-yKbBfPCuAfXNa6DbTbEzF3eiQHs5nlt6GJdM,2234
164
164
  strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
165
- strawberry/schema/base.py,sha256=CxVxEDk2U3aaOuABEkGhqNyFDs_xf2FF60yfnGT144g,3850
165
+ strawberry/schema/base.py,sha256=q5UAw6do4Ele5Cf8dNAouiPjNmZoCBNFqh5Vl05caCI,3864
166
166
  strawberry/schema/compat.py,sha256=9qJ0lhYJeaN43ayFgVz708ZMvedBhofiTSw9kpFqmjU,1830
167
167
  strawberry/schema/config.py,sha256=6BpCbNNCuekGgiKEPt2mliMqLH_wIjJmSW0tLbnJwk4,924
168
168
  strawberry/schema/exceptions.py,sha256=rqVNb_oYrKM0dHPgvAemqCG6Um282LPPu4zwQ5cZqs4,584
169
169
  strawberry/schema/name_converter.py,sha256=1rrpch-wBidlWfZ7hVouvIIhJpdxWfB5tWnO6PqYug8,6544
170
- strawberry/schema/schema.py,sha256=6N116Bs9Rbs_2nSQ_fcxPGAWH1AmVtg4xRMSGR4Mm4s,35449
170
+ strawberry/schema/schema.py,sha256=bbJL5dQRiaeo6DHeztTbF2u8VkSNAnVqraV1SSauHk8,34396
171
171
  strawberry/schema/schema_converter.py,sha256=-_QZCcmHWIEjRPqEChtPMPbFtgz6YmLn8V6KXvZJMOk,37192
172
172
  strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
173
173
  strawberry/schema/types/base_scalars.py,sha256=JRUq0WjEkR9dFewstZnqnZKp0uOEipo4UXNF5dzRf4M,1971
@@ -184,10 +184,10 @@ strawberry/static/pathfinder.html,sha256=0DPx9AmJ2C_sJstFXnWOz9k5tVQHeHaK7qdVY4l
184
184
  strawberry/subscriptions/__init__.py,sha256=1VGmiCzFepqRFyCikagkUoHHdoTG3XYlFu9GafoQMws,170
185
185
  strawberry/subscriptions/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  strawberry/subscriptions/protocols/graphql_transport_ws/__init__.py,sha256=wN6dkMu6WiaIZTE19PGoN9xXpIN_RdDE_q7F7ZgjCxk,138
187
- strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=wqE30sf07aaZwM1DYtHdOgcJuRiYiAPwAZ5LpA7Me-g,14931
187
+ strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=roPc1wHGllk5zxBJD5g20TLhOChFID76kQU1ItOqzqw,15077
188
188
  strawberry/subscriptions/protocols/graphql_transport_ws/types.py,sha256=N9r2mXg5jmmjYoZV5rWf3lAzgylCOUrbKGmClXCoOso,2169
189
189
  strawberry/subscriptions/protocols/graphql_ws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
- strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=ZJ790BiXuUc8or3DdRcTukJMHMETkkzUi7jmmUuSoNM,8174
190
+ strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=ULWDF_v0q0wIuLQ9q6UC_C8x63HoDu79kQV_RiKuxhY,8301
191
191
  strawberry/subscriptions/protocols/graphql_ws/types.py,sha256=Uumiz-1O5qQnx-ERBaQtaf7db5yx-V9LMypOn9oGKwM,2003
192
192
  strawberry/test/__init__.py,sha256=lKVbKJDBnrYSPYHIKrg54UpaZcSoL93Z01zOpA1IzZM,115
193
193
  strawberry/test/client.py,sha256=ILAttb6A3jplH5wJNMeyyT1u_Q8KnollfpYLP_BVZR4,6438
@@ -228,8 +228,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
228
228
  strawberry/utils/operation.py,sha256=SSXxN-vMqdHO6W2OZtip-1z7y4_A-eTVFdhDvhKeLCk,1193
229
229
  strawberry/utils/str_converters.py,sha256=-eH1Cl16IO_wrBlsGM-km4IY0IKsjhjnSNGRGOwQjVM,897
230
230
  strawberry/utils/typing.py,sha256=Ux0Hl46lhuXvOKK-C5hj6nlz3zDn8P4CUGH2nUVD2vU,13373
231
- strawberry_graphql-0.262.3.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
232
- strawberry_graphql-0.262.3.dist-info/METADATA,sha256=5yrhznOPjq6QDAl-WJnNS3JkG0YKAlikQQrFXJA4mmk,7679
233
- strawberry_graphql-0.262.3.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
234
- strawberry_graphql-0.262.3.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
235
- strawberry_graphql-0.262.3.dist-info/RECORD,,
231
+ strawberry_graphql-0.262.5.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
232
+ strawberry_graphql-0.262.5.dist-info/METADATA,sha256=rnhqscho0--F5Rwvn_IdgxPTgo5j0cb5PlgpvQDAIWQ,7679
233
+ strawberry_graphql-0.262.5.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
234
+ strawberry_graphql-0.262.5.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
235
+ strawberry_graphql-0.262.5.dist-info/RECORD,,