strawberry-graphql 0.239.1__py3-none-any.whl → 0.240.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.
@@ -3,10 +3,15 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  from abc import ABC, abstractmethod
5
5
  from contextlib import suppress
6
- from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, Optional, cast
7
-
8
- from graphql import ExecutionResult as GraphQLExecutionResult
9
- from graphql import GraphQLError
6
+ from typing import (
7
+ TYPE_CHECKING,
8
+ Any,
9
+ AsyncGenerator,
10
+ Awaitable,
11
+ Dict,
12
+ Optional,
13
+ cast,
14
+ )
10
15
 
11
16
  from strawberry.subscriptions.protocols.graphql_ws import (
12
17
  GQL_COMPLETE,
@@ -20,12 +25,15 @@ from strawberry.subscriptions.protocols.graphql_ws import (
20
25
  GQL_START,
21
26
  GQL_STOP,
22
27
  )
28
+ from strawberry.types.execution import ExecutionResult, PreExecutionError
23
29
  from strawberry.utils.debug import pretty_print_graphql_operation
24
30
 
25
31
  if TYPE_CHECKING:
26
32
  from strawberry.schema import BaseSchema
33
+ from strawberry.schema.subscribe import SubscriptionResult
27
34
  from strawberry.subscriptions.protocols.graphql_ws.types import (
28
35
  ConnectionInitPayload,
36
+ DataPayload,
29
37
  OperationMessage,
30
38
  OperationMessagePayload,
31
39
  StartPayload,
@@ -123,28 +131,14 @@ class BaseGraphQLWSHandler(ABC):
123
131
  if self.debug:
124
132
  pretty_print_graphql_operation(operation_name, query, variables)
125
133
 
126
- try:
127
- result_source = await self.schema.subscribe(
128
- query=query,
129
- variable_values=variables,
130
- operation_name=operation_name,
131
- context_value=context,
132
- root_value=root_value,
133
- )
134
- except GraphQLError as error:
135
- error_payload = error.formatted
136
- await self.send_message(GQL_ERROR, operation_id, error_payload)
137
- self.schema.process_errors([error])
138
- return
139
-
140
- if isinstance(result_source, GraphQLExecutionResult):
141
- assert result_source.errors
142
- error_payload = result_source.errors[0].formatted
143
- await self.send_message(GQL_ERROR, operation_id, error_payload)
144
- self.schema.process_errors(result_source.errors)
145
- return
134
+ result_source = self.schema.subscribe(
135
+ query=query,
136
+ variable_values=variables,
137
+ operation_name=operation_name,
138
+ context_value=context,
139
+ root_value=root_value,
140
+ )
146
141
 
147
- self.subscriptions[operation_id] = result_source
148
142
  result_handler = self.handle_async_results(result_source, operation_id)
149
143
  self.tasks[operation_id] = asyncio.create_task(result_handler)
150
144
 
@@ -160,39 +154,28 @@ class BaseGraphQLWSHandler(ABC):
160
154
 
161
155
  async def handle_async_results(
162
156
  self,
163
- result_source: AsyncGenerator,
157
+ result_source: Awaitable[SubscriptionResult],
164
158
  operation_id: str,
165
159
  ) -> None:
166
160
  try:
167
- async for result in result_source:
168
- payload = {"data": result.data}
169
- if result.errors:
170
- payload["errors"] = [err.formatted for err in result.errors]
171
- await self.send_message(GQL_DATA, operation_id, payload)
172
- # log errors after send_message to prevent potential
173
- # slowdown of sending result
174
- if result.errors:
175
- self.schema.process_errors(result.errors)
161
+ agen_or_err = await result_source
162
+ if isinstance(agen_or_err, PreExecutionError):
163
+ assert agen_or_err.errors
164
+ error_payload = agen_or_err.errors[0].formatted
165
+ await self.send_message(GQL_ERROR, operation_id, error_payload)
166
+ else:
167
+ self.subscriptions[operation_id] = agen_or_err
168
+ async for result in agen_or_err:
169
+ await self.send_data(result, operation_id)
170
+ await self.send_message(GQL_COMPLETE, operation_id, None)
176
171
  except asyncio.CancelledError:
177
- # CancelledErrors are expected during task cleanup.
178
- pass
179
- except Exception as error:
180
- # GraphQLErrors are handled by graphql-core and included in the
181
- # ExecutionResult
182
- error = GraphQLError(str(error), original_error=error)
183
- await self.send_message(
184
- GQL_DATA,
185
- operation_id,
186
- {"data": None, "errors": [error.formatted]},
187
- )
188
- self.schema.process_errors([error])
189
-
190
- await self.send_message(GQL_COMPLETE, operation_id, None)
172
+ await self.send_message(GQL_COMPLETE, operation_id, None)
191
173
 
192
174
  async def cleanup_operation(self, operation_id: str) -> None:
193
- with suppress(RuntimeError):
194
- await self.subscriptions[operation_id].aclose()
195
- del self.subscriptions[operation_id]
175
+ if operation_id in self.subscriptions:
176
+ with suppress(RuntimeError):
177
+ await self.subscriptions[operation_id].aclose()
178
+ del self.subscriptions[operation_id]
196
179
 
197
180
  self.tasks[operation_id].cancel()
198
181
  with suppress(BaseException):
@@ -210,5 +193,15 @@ class BaseGraphQLWSHandler(ABC):
210
193
  data["payload"] = payload
211
194
  await self.send_json(data)
212
195
 
196
+ async def send_data(
197
+ self, execution_result: ExecutionResult, operation_id: str
198
+ ) -> None:
199
+ payload: DataPayload = {"data": execution_result.data}
200
+ if execution_result.errors:
201
+ payload["errors"] = [err.formatted for err in execution_result.errors]
202
+ if execution_result.extensions:
203
+ payload["extensions"] = execution_result.extensions
204
+ await self.send_message(GQL_DATA, operation_id, payload)
205
+
213
206
 
214
207
  __all__ = ["BaseGraphQLWSHandler"]
@@ -20,6 +20,7 @@ class DataPayload(TypedDict, total=False):
20
20
 
21
21
  # Optional list of formatted graphql.GraphQLError objects
22
22
  errors: Optional[List[GraphQLFormattedError]]
23
+ extensions: Optional[Dict[str, Any]]
23
24
 
24
25
 
25
26
  ErrorPayload = GraphQLFormattedError
@@ -5,6 +5,7 @@ from typing import (
5
5
  TYPE_CHECKING,
6
6
  Any,
7
7
  Dict,
8
+ Iterable,
8
9
  List,
9
10
  Optional,
10
11
  Tuple,
@@ -34,6 +35,7 @@ if TYPE_CHECKING:
34
35
  class ExecutionContext:
35
36
  query: Optional[str]
36
37
  schema: Schema
38
+ allowed_operations: Iterable[OperationType]
37
39
  context: Any = None
38
40
  variables: Optional[Dict[str, Any]] = None
39
41
  parse_options: ParseOptions = dataclasses.field(
@@ -52,6 +54,7 @@ class ExecutionContext:
52
54
  graphql_document: Optional[DocumentNode] = None
53
55
  errors: Optional[List[GraphQLError]] = None
54
56
  result: Optional[GraphQLExecutionResult] = None
57
+ extensions_results: Dict[str, Any] = dataclasses.field(default_factory=dict)
55
58
 
56
59
  def __post_init__(self, provided_operation_name: str | None) -> None:
57
60
  self._provided_operation_name = provided_operation_name
@@ -93,6 +96,18 @@ class ExecutionResult:
93
96
  extensions: Optional[Dict[str, Any]] = None
94
97
 
95
98
 
99
+ @dataclasses.dataclass
100
+ class PreExecutionError(ExecutionResult):
101
+ """Differentiate between a normal execution result and an immediate error.
102
+
103
+ Immediate errors are errors that occur before the execution phase i.e validation errors,
104
+ or any other error that occur before we interact with resolvers.
105
+
106
+ These errors are required by `graphql-ws-transport` protocol in order to close the operation
107
+ right away once the error is encountered.
108
+ """
109
+
110
+
96
111
  class ParseOptions(TypedDict):
97
112
  max_tokens: NotRequired[int]
98
113
 
strawberry/types/union.py CHANGED
@@ -235,10 +235,7 @@ class StrawberryUnion(StrawberryType):
235
235
  if isinstance(type_, StrawberryUnion):
236
236
  return True
237
237
 
238
- if get_origin(type_) is Annotated:
239
- return True
240
-
241
- return False
238
+ return get_origin(type_) is Annotated
242
239
 
243
240
 
244
241
  def union(
@@ -0,0 +1,5 @@
1
+ import graphql
2
+ from packaging.version import Version
3
+
4
+ IS_GQL_33 = Version(graphql.__version__) >= Version("3.3.0a")
5
+ IS_GQL_32 = not IS_GQL_33
@@ -84,7 +84,7 @@ def is_list(annotation: object) -> bool:
84
84
  """Returns True if annotation is a List."""
85
85
  annotation_origin = getattr(annotation, "__origin__", None)
86
86
 
87
- return annotation_origin == list
87
+ return annotation_origin is list
88
88
 
89
89
 
90
90
  def is_union(annotation: object) -> bool:
@@ -313,7 +313,7 @@ def _get_namespace_from_ast(
313
313
  # can properly resolve it later
314
314
  type_name = args[0].strip(" '\"\n")
315
315
  for arg in args[1:]:
316
- evaled_arg = eval(arg, globalns, localns) # noqa: PGH001, S307
316
+ evaled_arg = eval(arg, globalns, localns) # noqa: S307
317
317
  if isinstance(evaled_arg, StrawberryLazyReference):
318
318
  extra[type_name] = evaled_arg.resolve_forward_ref(ForwardRef(type_name))
319
319
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strawberry-graphql
3
- Version: 0.239.1
3
+ Version: 0.240.0
4
4
  Summary: A library for creating GraphQL APIs
5
5
  Home-page: https://strawberry.rocks/
6
6
  License: MIT
@@ -24,7 +24,7 @@ strawberry/channels/handlers/graphql_ws_handler.py,sha256=2W_KpXMmC-LbFLBMMFNarF
24
24
  strawberry/channels/handlers/http_handler.py,sha256=k4-qer3trApTv8VXEvAc2ub6QATKcOxPBaIezNqhjDQ,11142
25
25
  strawberry/channels/handlers/ws_handler.py,sha256=rXWhLxDHSGJHYdCDMb-pckxka-rf4VZqaNSzkagTa6w,4693
26
26
  strawberry/channels/router.py,sha256=DKIbl4zuRBhfvViUVpyu0Rf_WRT41E6uZC-Yic9Ltvo,2024
27
- strawberry/channels/testing.py,sha256=f_PcBngLJXRmLftpr0IEoXiJzChsDPaB_ax7CK3oHmQ,6152
27
+ strawberry/channels/testing.py,sha256=GZqYu_rhrT1gLHmdI219L1fctVDmrv7AMHs0bwhXitc,6166
28
28
  strawberry/cli/__init__.py,sha256=byS5VrEiTJatAH6YS4V1Kd4SOwMRAQO2M1oJdIddivg,585
29
29
  strawberry/cli/app.py,sha256=tTMBV1pdWqMcwjWO2yn-8oLDhMhfJvUzyQtWs75LWJ0,54
30
30
  strawberry/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -50,7 +50,7 @@ strawberry/codegen/types.py,sha256=TBVjaKHBvr9QwELRdZUVlWS01wIEVXXTWs5etjqHVhk,4
50
50
  strawberry/codemods/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  strawberry/codemods/annotated_unions.py,sha256=TStU8ye5J1---P5mNWXBGeQa8m_J7FyPU_MYjzDZ-RU,5910
52
52
  strawberry/codemods/update_imports.py,sha256=YOuL9ABs_acVqhhgg-9HSA3sI0hjjWv5F2iTtmOec1w,4645
53
- strawberry/dataloader.py,sha256=QQ88GFdOMQbFyASksCS_I3Fiwd7U5c08zMUts7EO9rI,7881
53
+ strawberry/dataloader.py,sha256=5agozbY02Y2f_6NDTmajQBpPDGP8HUZty4yfbWguxK4,7850
54
54
  strawberry/directive.py,sha256=55qdcVZoVBmr20WHZi59f-Ece-Sm4pLErOcKAPmGHwQ,3586
55
55
  strawberry/django/__init__.py,sha256=07cxG0P0UzHQZPPzG1RNw3YaGSICjPbJrJdPFelxJVI,799
56
56
  strawberry/django/apps.py,sha256=ZWw3Mzv1Cgy0T9xT8Jr2_dkCTZjT5WQABb34iqnu5pc,135
@@ -98,7 +98,7 @@ strawberry/ext/dataclasses/dataclasses.py,sha256=fshCPQm1o4q1AwzmQzdlBIQ_JUNnwSl
98
98
  strawberry/ext/mypy_plugin.py,sha256=AO4Cw55V8mcMtsKsIyGZkAAmeNprlvzR8NVL2CNAYnc,20098
99
99
  strawberry/extensions/__init__.py,sha256=SZ-YEMnxAzoDZFo-uHXMHOaY_PPkYm1muPpK4ccJ3Xk,1248
100
100
  strawberry/extensions/add_validation_rules.py,sha256=abkOaXG-unAZj2xL2sspeUXpZKBCpj5Kr5h7TreN4gM,1338
101
- strawberry/extensions/base_extension.py,sha256=pQdN06K14dtWl_nxCIE4DBbGaB6mzxvidRdwNcDwZj8,2068
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
103
  strawberry/extensions/directives.py,sha256=UNTdzYf60kUtN8BHRwLZ7dKogixywoK9i6gkXkyYlJg,3037
104
104
  strawberry/extensions/disable_validation.py,sha256=wupc5zATOLyZmay14WI-FKaPZo0jj23hv8_4H3jvbMQ,741
@@ -109,7 +109,7 @@ strawberry/extensions/max_tokens.py,sha256=36WZehpieeYs4qQg2G2D3aRXFcw--rR37utsG
109
109
  strawberry/extensions/parser_cache.py,sha256=IvDbkVpKC_2lDXLZyrvj0VleZghbtkD6l2Sf1mBOT-A,1283
110
110
  strawberry/extensions/pyinstrument.py,sha256=dy2NPagLDW4mU2jTfaHek3H1SBVZCjwYKf0zPMxTYp8,712
111
111
  strawberry/extensions/query_depth_limiter.py,sha256=Jtg-HSmEux97Z09Y5G5nhTbJu56rBiGmMG6lB1_ejz8,9882
112
- strawberry/extensions/runner.py,sha256=tgr1-oc553HvJmEB1OSolkV4ixWqusJ-iqoguzAUFe4,2735
112
+ strawberry/extensions/runner.py,sha256=cVsBzNMBDjD4Pg_0jHNzYHv2cJUIVrNL_SzPr6rd7gk,1885
113
113
  strawberry/extensions/tracing/__init__.py,sha256=wx8_EAroGhNrP4HiGYMgKo8jnCsfde5ib6lO4OvcLV0,1400
114
114
  strawberry/extensions/tracing/apollo.py,sha256=XlI88NzSZBSmBHEJ9iitDU9br2-9CdjdtHE_eiTJCIw,5880
115
115
  strawberry/extensions/tracing/datadog.py,sha256=khxvY4_WTjYaeJUb_dn6mLvmk9TCS4tIodnC3G-9pTo,5541
@@ -143,8 +143,8 @@ strawberry/file_uploads/scalars.py,sha256=NRDeB7j8aotqIkz9r62ISTf4DrxQxEZYUuHsX5
143
143
  strawberry/file_uploads/utils.py,sha256=2zsXg3QsKgGLD7of2dW-vgQn_Naf7I3Men9PhEAFYwM,1160
144
144
  strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
145
  strawberry/flask/views.py,sha256=Ss3zpBEjY5W6bR9SUPDbuF7zXErgn_qcXm0MuhzPS7k,5656
146
- strawberry/http/__init__.py,sha256=lRHuYeDUvz7bpLsvBvTYPOXwD_uMz2LO78QaqGVSvEQ,1546
147
- strawberry/http/async_base_view.py,sha256=zie22GChg-RZJnE-G8FOLYKY2EKi53ALhK7tEo3l3Bs,11141
146
+ strawberry/http/__init__.py,sha256=GSvHUDXl1cHfLnb37PXOAnxfoXhvz0f467P1O8uDatM,1620
147
+ strawberry/http/async_base_view.py,sha256=huSretRZ-1WQLwZtHLMjUsdG9SSlW9AgE5jb1ivGr48,11837
148
148
  strawberry/http/base.py,sha256=ORw-0lk6UcOH80kdr4VElAvX75S3VTMpRddhVfooGDY,2569
149
149
  strawberry/http/exceptions.py,sha256=WdWO3RvZDax_yAdD0zlVex9tQgwNx7tjz8_A8kP4YHo,193
150
150
  strawberry/http/ides.py,sha256=3dqFRY8_9ZqyIYR_EyRdPZ1zhL3lxRYT2MPk84O_Tk8,874
@@ -178,14 +178,15 @@ strawberry/sanic/utils.py,sha256=r-tCX0JzELAdupF7fFy65JWAxj6pABSntNbGNaGZT8o,108
178
178
  strawberry/sanic/views.py,sha256=Y1zSmaFfcP7ZyOoBXjPTGc2PWKSvv8Lo5m_GA1EyEPI,6465
179
179
  strawberry/scalars.py,sha256=c3y8EOmX-KUxSgRqk1TNercMA6_rgBHhQPp0z3C2zBU,2240
180
180
  strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
181
- strawberry/schema/base.py,sha256=y6nhXZ_-Oid79rS5uLLYn_azlZ3PzTOLGcO_7W5lovo,3742
181
+ strawberry/schema/base.py,sha256=yarj62fhfCp0kToJPpWlNcCjyZV2CafbfpZ-yamjNVg,3730
182
182
  strawberry/schema/compat.py,sha256=rRqUm5-XgPXC018_u0Mrd4iad7tTRCNA45Ko4NaT6gk,1836
183
183
  strawberry/schema/config.py,sha256=Aa01oqnHb0ZPlw8Ti_O840LxlT827LNio15BQrc37A0,717
184
184
  strawberry/schema/exceptions.py,sha256=rqVNb_oYrKM0dHPgvAemqCG6Um282LPPu4zwQ5cZqs4,584
185
- strawberry/schema/execute.py,sha256=rLPY2F-VG0ZkAyg935UHdH0cKhDd6YO98MDyXko2_WA,11702
185
+ strawberry/schema/execute.py,sha256=XbArky5xmCWo_r2ootm8WREzzzZ0SsU9FoyfxA6Vc8g,11490
186
186
  strawberry/schema/name_converter.py,sha256=tpqw2XCSFvJI-H844iWhE2Z1sKic7DrjIZxt11eJN5Y,6574
187
- strawberry/schema/schema.py,sha256=53F-4YCGVIiIf_YYLoBo1UC3JIv0HZ73SvTknk2PXyk,15961
187
+ strawberry/schema/schema.py,sha256=rdsZrnAZZDV_eU_9s2K21hgROtP29GRt5MjUrwVBwyE,19034
188
188
  strawberry/schema/schema_converter.py,sha256=lckL2LoxAb6mNfJIVcerht2buzBG573ly3BHyl7wra4,36859
189
+ strawberry/schema/subscribe.py,sha256=wg-U2S-SrHxvtJA9KttnBQnyUOh-qy7UaPjumNk2Czw,6007
189
190
  strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
190
191
  strawberry/schema/types/base_scalars.py,sha256=NTj_tYqWLQLEOPDhBhSE1My4JXoieyg0jO8B6RNK-xA,1913
191
192
  strawberry/schema/types/concrete_type.py,sha256=o6hKYLJO2QUXmV654KMbwnGHapBVMO_QNhUaDlKGCAw,756
@@ -201,11 +202,11 @@ strawberry/static/pathfinder.html,sha256=0DPx9AmJ2C_sJstFXnWOz9k5tVQHeHaK7qdVY4l
201
202
  strawberry/subscriptions/__init__.py,sha256=1VGmiCzFepqRFyCikagkUoHHdoTG3XYlFu9GafoQMws,170
202
203
  strawberry/subscriptions/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
204
  strawberry/subscriptions/protocols/graphql_transport_ws/__init__.py,sha256=wN6dkMu6WiaIZTE19PGoN9xXpIN_RdDE_q7F7ZgjCxk,138
204
- strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=U8pZrdJeFQFjviZHdnBMJY5ofYcEzknMdqAkcylaflE,15149
205
- strawberry/subscriptions/protocols/graphql_transport_ws/types.py,sha256=rJQWeNcsHevAuxYYocz4F6DO3PR-IgWF_KYsx5VWN4s,2420
205
+ strawberry/subscriptions/protocols/graphql_transport_ws/handlers.py,sha256=qTz1yN0B9KRl01MZPOwgCvli5S9OIG2y7BJLGDLJHgA,14219
206
+ strawberry/subscriptions/protocols/graphql_transport_ws/types.py,sha256=udYxzGtwjETYvY5f23org0t-aY4cimTjEGFYUR3idaY,2596
206
207
  strawberry/subscriptions/protocols/graphql_ws/__init__.py,sha256=ijn1A1O0Fzv5p9n-jw3T5H7M3oxbN4gbxRaepN7HyJk,553
207
- strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=zptIxudunKCf-5FEB51n7t7KN0nRzSko6_-ya0gpYD4,7623
208
- strawberry/subscriptions/protocols/graphql_ws/types.py,sha256=gYFCHMoRr7ko5lrE7dRITwoRvDmF6w8fFnw04sh-XEI,1009
208
+ strawberry/subscriptions/protocols/graphql_ws/handlers.py,sha256=UfCvmVve26HzhixP-CeKHEjvQGsAx5_iizt_Mww2uNc,7175
209
+ strawberry/subscriptions/protocols/graphql_ws/types.py,sha256=CKm4Hy95p6H9u_-QyWdxipwzNeeDIWtilP3RRp8vjPw,1050
209
210
  strawberry/test/__init__.py,sha256=U3B5Ng7C_H8GpCpfvgZZcfADMw6cor5hm78gS3nDdMI,115
210
211
  strawberry/test/client.py,sha256=-V_5DakR0NJ_Kd5ww4leIhMnIJ-Pf274HkNqYtGVfl8,6044
211
212
  strawberry/tools/__init__.py,sha256=pdGpZx8wpq03VfUZJyF9JtYxZhGqzzxCiipsalWxJX4,127
@@ -216,7 +217,7 @@ strawberry/types/arguments.py,sha256=vGWwKL_294rrZtg-GquW6h5t0FBAEm8Y14bD5_08FeI
216
217
  strawberry/types/auto.py,sha256=c7XcB7seXd-cWAn5Ut3O0SUPOOCPG-Z2qcUAI9dRQIE,3008
217
218
  strawberry/types/base.py,sha256=W5OvqH0gnhkFaCcthTAOciUGTQhkWTnPdz4DzMfql5Y,15022
218
219
  strawberry/types/enum.py,sha256=E_ck94hgZP6YszWAso9UvCLUKRhd5KclwnIvo5PibZg,5965
219
- strawberry/types/execution.py,sha256=qrWygrssnomKOaBbcDUOnpppogKEeJrdKpimnC0Ex9M,3159
220
+ strawberry/types/execution.py,sha256=jzuDfOTT1IvhIPHlHJ4BlYfnKjMCe95DOK_W4rZSLPI,3763
220
221
  strawberry/types/field.py,sha256=jgliRsA4BLNKXXaj5fC7pBI8_USnTVjOF9OEVMV-hYk,21598
221
222
  strawberry/types/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
223
  strawberry/types/fields/resolver.py,sha256=eDVUsNwteKZOK8fKPwESAz4hOAeDIhalH5BgHmqab_Y,14361
@@ -229,9 +230,9 @@ strawberry/types/object_type.py,sha256=-LvRnigI5iK9SgfH82b7eLzXw6DswM2ad6ZVOBUU_
229
230
  strawberry/types/private.py,sha256=jFQ0PwAvb0nUTyOs2gLdb3_uGBrsomENkikaW9v-gbI,547
230
231
  strawberry/types/scalar.py,sha256=PYp2zACJL-7aGuej7Pq_FOTg9lo4yezIC0x-Fn5ZPj0,6260
231
232
  strawberry/types/type_resolver.py,sha256=vnMoeQR3o-lIoJSU0Iw858UzWVyXe9hyQ9-Ioo567g4,6563
232
- strawberry/types/union.py,sha256=sMCatme1HM1VJRc3i2y0sQqtqxvpLotL-669hu06EMc,10015
233
+ strawberry/types/union.py,sha256=ky3aSlYVEtnqBrmxr-72TmrWtyoA3Ylcws5aqud-ZeE,9972
233
234
  strawberry/types/unset.py,sha256=s2l9DCWesItiC-NtT3InLFrD1XeIOBxXZKahigQ11wQ,1712
234
- strawberry/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
+ strawberry/utils/__init__.py,sha256=H9Vp3UfxmTjPMDMLWx1GDdiMeuYDeEAjepmzclWAmyo,142
235
236
  strawberry/utils/aio.py,sha256=8n4mrAHjx12zp1phqNv1mXx2-1mQRXLNRbpNMS2MDoM,1706
236
237
  strawberry/utils/await_maybe.py,sha256=7KMNa8DSjzQP1XbPyEIbFMokAbKxs_6AlTKWseJOwNw,422
237
238
  strawberry/utils/dataclasses.py,sha256=1wvVq0vgvjrRSamJ3CBJpkLu1KVweTmw5JLXmagdGes,856
@@ -243,9 +244,9 @@ strawberry/utils/inspect.py,sha256=2WOeK3o8pjVkIH-rP_TaaLDa_AvroKC1WXc0gSE0Suc,3
243
244
  strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,746
244
245
  strawberry/utils/operation.py,sha256=SSXxN-vMqdHO6W2OZtip-1z7y4_A-eTVFdhDvhKeLCk,1193
245
246
  strawberry/utils/str_converters.py,sha256=KGd7QH90RevaJjH6SQEkiVVsb8KuhJr_wv5AsI7UzQk,897
246
- strawberry/utils/typing.py,sha256=tUHHX2YTGX417EEQHB6j0B8-p-fg31ZI8csc9SUoq2I,14260
247
- strawberry_graphql-0.239.1.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
248
- strawberry_graphql-0.239.1.dist-info/METADATA,sha256=cTmzQZAJ8gaSmrjhMUVj4xKC0ThHITL6fDzttqyZLKc,7707
249
- strawberry_graphql-0.239.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
250
- strawberry_graphql-0.239.1.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
251
- strawberry_graphql-0.239.1.dist-info/RECORD,,
247
+ strawberry/utils/typing.py,sha256=3xws5kxSQGsp8BnYyUwClvxXNzZakMAuOPoq1rjHRuk,14252
248
+ strawberry_graphql-0.240.0.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
249
+ strawberry_graphql-0.240.0.dist-info/METADATA,sha256=6EkG0ob83XO9XCJlyD3B2vIOvGHA2FmJmyDwnkZ96xk,7707
250
+ strawberry_graphql-0.240.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
251
+ strawberry_graphql-0.240.0.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
252
+ strawberry_graphql-0.240.0.dist-info/RECORD,,