strawberry-graphql 0.220.0.dev1709543239__py3-none-any.whl → 0.221.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/__init__.py CHANGED
@@ -14,6 +14,7 @@ from .private import Private
14
14
  from .scalars import ID
15
15
  from .schema import Schema
16
16
  from .schema_directive import schema_directive
17
+ from .types.info import Info
17
18
  from .union import union
18
19
  from .unset import UNSET
19
20
 
@@ -21,6 +22,7 @@ __all__ = [
21
22
  "BasePermission",
22
23
  "experimental",
23
24
  "ID",
25
+ "Info",
24
26
  "UNSET",
25
27
  "lazy",
26
28
  "LazyType",
@@ -69,6 +69,7 @@ class GraphQLWebsocketCommunicator(WebsocketCommunicator):
69
69
  path: str,
70
70
  headers: Optional[List[Tuple[bytes, bytes]]] = None,
71
71
  protocol: str = GRAPHQL_TRANSPORT_WS_PROTOCOL,
72
+ connection_params: dict = {},
72
73
  **kwargs: Any,
73
74
  ):
74
75
  """
@@ -81,6 +82,7 @@ class GraphQLWebsocketCommunicator(WebsocketCommunicator):
81
82
  self.protocol = protocol
82
83
  subprotocols = kwargs.get("subprotocols", [])
83
84
  subprotocols.append(protocol)
85
+ self.connection_params = connection_params
84
86
  super().__init__(application, path, headers, subprotocols=subprotocols)
85
87
 
86
88
  async def __aenter__(self) -> Self:
@@ -99,7 +101,9 @@ class GraphQLWebsocketCommunicator(WebsocketCommunicator):
99
101
  res = await self.connect()
100
102
  if self.protocol == GRAPHQL_TRANSPORT_WS_PROTOCOL:
101
103
  assert res == (True, GRAPHQL_TRANSPORT_WS_PROTOCOL)
102
- await self.send_json_to(ConnectionInitMessage().as_dict())
104
+ await self.send_json_to(
105
+ ConnectionInitMessage(payload=self.connection_params).as_dict()
106
+ )
103
107
  response = await self.receive_json_from()
104
108
  assert response == ConnectionAckMessage().as_dict()
105
109
  else:
@@ -65,7 +65,7 @@ class InputMutationExtension(FieldExtension):
65
65
  self,
66
66
  next_: SyncExtensionResolver,
67
67
  source: Any,
68
- info: Info[Any, Any],
68
+ info: Info,
69
69
  **kwargs: Any,
70
70
  ) -> Any:
71
71
  input_args = kwargs.pop("input")
@@ -88,82 +88,77 @@ async def execute(
88
88
  extensions=list(extensions),
89
89
  )
90
90
 
91
- try:
92
- async with extensions_runner.operation():
93
- # Note: In graphql-core the schema would be validated here but in
94
- # Strawberry we are validating it at initialisation time instead
95
- if not execution_context.query:
96
- raise MissingQueryError()
97
-
98
- async with extensions_runner.parsing():
99
- try:
100
- if not execution_context.graphql_document:
101
- execution_context.graphql_document = parse_document(
102
- execution_context.query, **execution_context.parse_options
103
- )
104
-
105
- except GraphQLError as exc:
106
- execution_context.errors = [exc]
107
- process_errors([exc], execution_context)
108
- return ExecutionResult(
109
- data=None,
110
- errors=[exc],
111
- extensions=await extensions_runner.get_extensions_results(),
91
+ async with extensions_runner.operation():
92
+ # Note: In graphql-core the schema would be validated here but in
93
+ # Strawberry we are validating it at initialisation time instead
94
+ if not execution_context.query:
95
+ raise MissingQueryError()
96
+
97
+ async with extensions_runner.parsing():
98
+ try:
99
+ if not execution_context.graphql_document:
100
+ execution_context.graphql_document = parse_document(
101
+ execution_context.query, **execution_context.parse_options
112
102
  )
113
103
 
114
- if execution_context.operation_type not in allowed_operation_types:
115
- raise InvalidOperationTypeError(execution_context.operation_type)
116
-
117
- async with extensions_runner.validation():
118
- _run_validation(execution_context)
119
- if execution_context.errors:
120
- process_errors(execution_context.errors, execution_context)
121
- return ExecutionResult(data=None, errors=execution_context.errors)
122
-
123
- async with extensions_runner.executing():
124
- if not execution_context.result:
125
- result = original_execute(
126
- schema,
127
- execution_context.graphql_document,
128
- root_value=execution_context.root_value,
129
- middleware=extensions_runner.as_middleware_manager(),
130
- variable_values=execution_context.variables,
131
- operation_name=execution_context.operation_name,
132
- context_value=execution_context.context,
133
- execution_context_class=execution_context_class,
134
- )
135
-
136
- if isawaitable(result):
137
- result = await cast(Awaitable["GraphQLExecutionResult"], result)
138
-
139
- result = cast("GraphQLExecutionResult", result)
140
- execution_context.result = result
141
- # Also set errors on the execution_context so that it's easier
142
- # to access in extensions
143
- if result.errors:
144
- execution_context.errors = result.errors
145
-
146
- # Run the `Schema.process_errors` function here before
147
- # extensions have a chance to modify them (see the MaskErrors
148
- # extension). That way we can log the original errors but
149
- # only return a sanitised version to the client.
150
- process_errors(result.errors, execution_context)
151
-
152
- except (MissingQueryError, InvalidOperationTypeError) as e:
153
- raise e
154
- except Exception as exc:
155
- error = (
156
- exc
157
- if isinstance(exc, GraphQLError)
158
- else GraphQLError(str(exc), original_error=exc)
159
- )
160
- execution_context.errors = [error]
161
- process_errors([error], execution_context)
162
- return ExecutionResult(
163
- data=None,
164
- errors=[error],
165
- extensions=await extensions_runner.get_extensions_results(),
166
- )
104
+ except GraphQLError as error:
105
+ execution_context.errors = [error]
106
+ process_errors([error], execution_context)
107
+ return ExecutionResult(
108
+ data=None,
109
+ errors=[error],
110
+ extensions=await extensions_runner.get_extensions_results(),
111
+ )
112
+
113
+ except Exception as error: # pragma: no cover
114
+ error = GraphQLError(str(error), original_error=error)
115
+
116
+ execution_context.errors = [error]
117
+ process_errors([error], execution_context)
118
+
119
+ return ExecutionResult(
120
+ data=None,
121
+ errors=[error],
122
+ extensions=await extensions_runner.get_extensions_results(),
123
+ )
124
+
125
+ if execution_context.operation_type not in allowed_operation_types:
126
+ raise InvalidOperationTypeError(execution_context.operation_type)
127
+
128
+ async with extensions_runner.validation():
129
+ _run_validation(execution_context)
130
+ if execution_context.errors:
131
+ process_errors(execution_context.errors, execution_context)
132
+ return ExecutionResult(data=None, errors=execution_context.errors)
133
+
134
+ async with extensions_runner.executing():
135
+ if not execution_context.result:
136
+ result = original_execute(
137
+ schema,
138
+ execution_context.graphql_document,
139
+ root_value=execution_context.root_value,
140
+ middleware=extensions_runner.as_middleware_manager(),
141
+ variable_values=execution_context.variables,
142
+ operation_name=execution_context.operation_name,
143
+ context_value=execution_context.context,
144
+ execution_context_class=execution_context_class,
145
+ )
146
+
147
+ if isawaitable(result):
148
+ result = await cast(Awaitable["GraphQLExecutionResult"], result)
149
+
150
+ result = cast("GraphQLExecutionResult", result)
151
+ execution_context.result = result
152
+ # Also set errors on the execution_context so that it's easier
153
+ # to access in extensions
154
+ if result.errors:
155
+ execution_context.errors = result.errors
156
+
157
+ # Run the `Schema.process_errors` function here before
158
+ # extensions have a chance to modify them (see the MaskErrors
159
+ # extension). That way we can log the original errors but
160
+ # only return a sanitised version to the client.
161
+ process_errors(result.errors, execution_context)
167
162
 
168
163
  return ExecutionResult(
169
164
  data=execution_context.result.data,
@@ -186,86 +181,80 @@ def execute_sync(
186
181
  extensions=list(extensions),
187
182
  )
188
183
 
189
- try:
190
- with extensions_runner.operation():
191
- # Note: In graphql-core the schema would be validated here but in
192
- # Strawberry we are validating it at initialisation time instead
193
- if not execution_context.query:
194
- raise MissingQueryError()
195
-
196
- with extensions_runner.parsing():
197
- try:
198
- if not execution_context.graphql_document:
199
- execution_context.graphql_document = parse_document(
200
- execution_context.query, **execution_context.parse_options
201
- )
202
-
203
- except GraphQLError as exc:
204
- execution_context.errors = [exc]
205
- process_errors([exc], execution_context)
206
- return ExecutionResult(
207
- data=None,
208
- errors=[exc],
209
- extensions=extensions_runner.get_extensions_results_sync(),
184
+ with extensions_runner.operation():
185
+ # Note: In graphql-core the schema would be validated here but in
186
+ # Strawberry we are validating it at initialisation time instead
187
+ if not execution_context.query:
188
+ raise MissingQueryError()
189
+
190
+ with extensions_runner.parsing():
191
+ try:
192
+ if not execution_context.graphql_document:
193
+ execution_context.graphql_document = parse_document(
194
+ execution_context.query, **execution_context.parse_options
210
195
  )
211
196
 
212
- if execution_context.operation_type not in allowed_operation_types:
213
- raise InvalidOperationTypeError(execution_context.operation_type)
214
-
215
- with extensions_runner.validation():
216
- _run_validation(execution_context)
217
- if execution_context.errors:
218
- process_errors(execution_context.errors, execution_context)
219
- return ExecutionResult(data=None, errors=execution_context.errors)
220
-
221
- with extensions_runner.executing():
222
- if not execution_context.result:
223
- result = original_execute(
224
- schema,
225
- execution_context.graphql_document,
226
- root_value=execution_context.root_value,
227
- middleware=extensions_runner.as_middleware_manager(),
228
- variable_values=execution_context.variables,
229
- operation_name=execution_context.operation_name,
230
- context_value=execution_context.context,
231
- execution_context_class=execution_context_class,
197
+ except GraphQLError as error:
198
+ execution_context.errors = [error]
199
+ process_errors([error], execution_context)
200
+ return ExecutionResult(
201
+ data=None,
202
+ errors=[error],
203
+ extensions=extensions_runner.get_extensions_results_sync(),
204
+ )
205
+
206
+ except Exception as error: # pragma: no cover
207
+ error = GraphQLError(str(error), original_error=error)
208
+
209
+ execution_context.errors = [error]
210
+ process_errors([error], execution_context)
211
+ return ExecutionResult(
212
+ data=None,
213
+ errors=[error],
214
+ extensions=extensions_runner.get_extensions_results_sync(),
215
+ )
216
+
217
+ if execution_context.operation_type not in allowed_operation_types:
218
+ raise InvalidOperationTypeError(execution_context.operation_type)
219
+
220
+ with extensions_runner.validation():
221
+ _run_validation(execution_context)
222
+ if execution_context.errors:
223
+ process_errors(execution_context.errors, execution_context)
224
+ return ExecutionResult(data=None, errors=execution_context.errors)
225
+
226
+ with extensions_runner.executing():
227
+ if not execution_context.result:
228
+ result = original_execute(
229
+ schema,
230
+ execution_context.graphql_document,
231
+ root_value=execution_context.root_value,
232
+ middleware=extensions_runner.as_middleware_manager(),
233
+ variable_values=execution_context.variables,
234
+ operation_name=execution_context.operation_name,
235
+ context_value=execution_context.context,
236
+ execution_context_class=execution_context_class,
237
+ )
238
+
239
+ if isawaitable(result):
240
+ result = cast(Awaitable["GraphQLExecutionResult"], result)
241
+ ensure_future(result).cancel()
242
+ raise RuntimeError(
243
+ "GraphQL execution failed to complete synchronously."
232
244
  )
233
245
 
234
- if isawaitable(result):
235
- result = cast(Awaitable["GraphQLExecutionResult"], result)
236
- ensure_future(result).cancel()
237
- raise RuntimeError(
238
- "GraphQL execution failed to complete synchronously."
239
- )
240
-
241
- result = cast("GraphQLExecutionResult", result)
242
- execution_context.result = result
243
- # Also set errors on the execution_context so that it's easier
244
- # to access in extensions
245
- if result.errors:
246
- execution_context.errors = result.errors
247
-
248
- # Run the `Schema.process_errors` function here before
249
- # extensions have a chance to modify them (see the MaskErrors
250
- # extension). That way we can log the original errors but
251
- # only return a sanitised version to the client.
252
- process_errors(result.errors, execution_context)
253
-
254
- except (MissingQueryError, InvalidOperationTypeError) as e:
255
- raise e
256
- except Exception as exc:
257
- error = (
258
- exc
259
- if isinstance(exc, GraphQLError)
260
- else GraphQLError(str(exc), original_error=exc)
261
- )
262
- execution_context.errors = [error]
263
- process_errors([error], execution_context)
264
- return ExecutionResult(
265
- data=None,
266
- errors=[error],
267
- extensions=extensions_runner.get_extensions_results_sync(),
268
- )
246
+ result = cast("GraphQLExecutionResult", result)
247
+ execution_context.result = result
248
+ # Also set errors on the execution_context so that it's easier
249
+ # to access in extensions
250
+ if result.errors:
251
+ execution_context.errors = result.errors
252
+
253
+ # Run the `Schema.process_errors` function here before
254
+ # extensions have a chance to modify them (see the MaskErrors
255
+ # extension). That way we can log the original errors but
256
+ # only return a sanitised version to the client.
257
+ process_errors(result.errors, execution_context)
269
258
 
270
259
  return ExecutionResult(
271
260
  data=execution_context.result.data,
@@ -155,7 +155,7 @@ class ReservedType(NamedTuple):
155
155
  # Handle annotated arguments such as Private[str] and DirectiveValue[str]
156
156
  return type_has_annotation(other, self.type)
157
157
  else:
158
- # Handle both concrete and generic types (i.e Info, and Info[Any, Any])
158
+ # Handle both concrete and generic types (i.e Info, and Info)
159
159
  return (
160
160
  issubclass(origin, self.type)
161
161
  if isinstance(origin, type)
strawberry/types/info.py CHANGED
@@ -11,9 +11,9 @@ from typing import (
11
11
  List,
12
12
  Optional,
13
13
  Type,
14
- TypeVar,
15
14
  Union,
16
15
  )
16
+ from typing_extensions import TypeVar
17
17
 
18
18
  from .nodes import convert_selections
19
19
 
@@ -29,8 +29,8 @@ if TYPE_CHECKING:
29
29
 
30
30
  from .nodes import Selection
31
31
 
32
- ContextType = TypeVar("ContextType")
33
- RootValueType = TypeVar("RootValueType")
32
+ ContextType = TypeVar("ContextType", default=Any)
33
+ RootValueType = TypeVar("RootValueType", default=Any)
34
34
 
35
35
 
36
36
  @dataclasses.dataclass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strawberry-graphql
3
- Version: 0.220.0.dev1709543239
3
+ Version: 0.221.0
4
4
  Summary: A library for creating GraphQL APIs
5
5
  Home-page: https://strawberry.rocks/
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- strawberry/__init__.py,sha256=rq7MRtYXzCOd792dYdgZqS6Ejv7UiX7U2hqFfQhLkGk,1063
1
+ strawberry/__init__.py,sha256=NP_R8Benm6W-v3Qqj3MSPm_CMickSCJIMaW2sZZ5oGs,1104
2
2
  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
@@ -25,7 +25,7 @@ strawberry/channels/handlers/graphql_ws_handler.py,sha256=PHRkwnXt3tY4E0XBVHh4hp
25
25
  strawberry/channels/handlers/http_handler.py,sha256=9pW978XaeF-aFWM9WMaSHCOWmcWoIJCNkW8X3lKJcws,9560
26
26
  strawberry/channels/handlers/ws_handler.py,sha256=sHL44eay4tNoKzkrRn3WewSYH-3ZSJzxJpmBJ-aTkeM,4650
27
27
  strawberry/channels/router.py,sha256=dyOBbSF8nFiygP0zz6MM14mhkvFQAEbbLBXzcpubSHM,1927
28
- strawberry/channels/testing.py,sha256=he9cdsu5KxoPfpR8z2E6kwr2hwUjVhACTrTIoIbsSkQ,5519
28
+ strawberry/channels/testing.py,sha256=IWj1CuIS3vOo2f2fw0W-0GCz-YSs7QSAAscC6suqtiI,5668
29
29
  strawberry/cli/__init__.py,sha256=OkUYNyurO-TyHcD_RsP1bjtNrxlM5gV6Ri6vs4asvvc,374
30
30
  strawberry/cli/app.py,sha256=tTMBV1pdWqMcwjWO2yn-8oLDhMhfJvUzyQtWs75LWJ0,54
31
31
  strawberry/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -139,7 +139,7 @@ strawberry/federation/types.py,sha256=mM70g1aLgjplOc3SdtuJjy7NAKFLv35Z4BDC4s_j5u
139
139
  strawberry/federation/union.py,sha256=QXeh-nhApqFtXa3To9MX_IwvtwErZBhWYnssUK7JB2E,1005
140
140
  strawberry/field.py,sha256=2LvlnoQyRQHYcZV2Yy1E-2DYKXpOROUa8jyWgxG2QsI,18883
141
141
  strawberry/field_extensions/__init__.py,sha256=0z6RG9jEO7jpAuyEaQhRI5A_30rdcvsBM0qMhLs8y2s,96
142
- strawberry/field_extensions/input_mutation.py,sha256=G1nWnIdPS877MZXnDzGU4VvlRHT56KDpK-YBDOn6rDI,2660
142
+ strawberry/field_extensions/input_mutation.py,sha256=a2zK97Fc5biqBt2ZlUPEPTQgMTRx6sJCSd3hSsjLSxI,2650
143
143
  strawberry/file_uploads/__init__.py,sha256=v2-6FGBqnTnMPSUTFOiXpIutDMl-ga0PFtw5tKlcagk,50
144
144
  strawberry/file_uploads/scalars.py,sha256=jccJh-h7t4naRiDzrszGoYsp95zdF30c7y5Ht0Zrk_s,131
145
145
  strawberry/file_uploads/utils.py,sha256=U8gk1aHjWOBa_Opyvc47h6OpYToGq1QiSnEkI2kphdo,1112
@@ -186,7 +186,7 @@ strawberry/schema/base.py,sha256=lQBJyzG2ZhKc544oLbXEbpYOPOjaXBop3lxp68h_lfI,297
186
186
  strawberry/schema/compat.py,sha256=n0r3UPUcGemMqK8vklgtCkkuCA1p6tWAYbc6Vl4iNOw,1684
187
187
  strawberry/schema/config.py,sha256=N9KsqkSTnm5snizoBZAVneaWQprhaTd8PFyMuR-jfUs,632
188
188
  strawberry/schema/exceptions.py,sha256=_9Ua-lLRCJfbtd8B6MXILNKGI2SwHkcBNkAHYM7ITp8,534
189
- strawberry/schema/execute.py,sha256=6OE7_5v4G3t_wxp1_mfwu8TTiIkTJNBQaeGCVAljUYw,10982
189
+ strawberry/schema/execute.py,sha256=MAfuE2o89qBmnBpgaTmUA9xJ682KvEQw52EOh4XVE00,10415
190
190
  strawberry/schema/name_converter.py,sha256=UdNyd-QtqF2HsDCQK-nsOcLGxDTj4hJwYFNvMtZnpq4,6533
191
191
  strawberry/schema/schema.py,sha256=HvdOmXK2yHCliD-xyAV01rw3PoGW2f8oEzOYo-cA0AM,13726
192
192
  strawberry/schema/schema_converter.py,sha256=r5T0mwM4qY51yq_0bWDKRqeod9hzJJg3OGzV8siXnRU,34730
@@ -220,9 +220,9 @@ strawberry/type.py,sha256=KDztUFxVju4CEPPRzZYcyHtDNRrkFYxK-mI99GcqCgU,6511
220
220
  strawberry/types/__init__.py,sha256=APb1Cjy6bxqFxIfDfempP6eb9NE3LYDwQ3gX7r07lXI,139
221
221
  strawberry/types/execution.py,sha256=qCqDMJgdAFwdc3uPzVTAKsZlu6fgxPLrFwkoX_PFBq8,2775
222
222
  strawberry/types/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
- strawberry/types/fields/resolver.py,sha256=7-fzFfQdf0uWuYyWiSIsGbt2qvpLpGPy6w1T_57cYL8,14140
223
+ strawberry/types/fields/resolver.py,sha256=Lwy2XVKnTbDyibk9pPsWsunlm22akXjy-gKCg22Tp1A,14130
224
224
  strawberry/types/graphql.py,sha256=3SWZEsa0Zy1eVW6vy75BnB7t9_lJVi6TBV3_1j3RNBs,687
225
- strawberry/types/info.py,sha256=AwYUVQgCiTGFU9x97ntF3v6W6qnknOBvuYnERdfIe4w,2776
225
+ strawberry/types/info.py,sha256=kCsXvsTxrHubS936eOOxp2PNLWNqLRCPDckpVDspEk4,2827
226
226
  strawberry/types/nodes.py,sha256=2ZVa1HOFgHZ96QTfz3QEr1fufi6Sz9hAzcZxsN7KtGE,5026
227
227
  strawberry/types/type_resolver.py,sha256=F0z_geS4VEun8EhD571LaTgI8ypjCeLfp910gF0Q3MY,6280
228
228
  strawberry/types/types.py,sha256=t5MOV4xiutPL2Ka02u3Z2V3eqy2R2JPYQxsqCnY2Aqk,7139
@@ -241,8 +241,8 @@ strawberry/utils/logging.py,sha256=flS7hV0JiIOEdXcrIjda4WyIWix86cpHHFNJL8gl1y4,7
241
241
  strawberry/utils/operation.py,sha256=Um-tBCPl3_bVFN2Ph7o1mnrxfxBes4HFCj6T0x4kZxE,1135
242
242
  strawberry/utils/str_converters.py,sha256=avIgPVLg98vZH9mA2lhzVdyyjqzLsK2NdBw9mJQ02Xk,813
243
243
  strawberry/utils/typing.py,sha256=Qxz1LwyVsNGV7LQW1dFsaUbsswj5LHBOdKLMom5eyEA,13491
244
- strawberry_graphql-0.220.0.dev1709543239.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
245
- strawberry_graphql-0.220.0.dev1709543239.dist-info/METADATA,sha256=jkAZjN8RDuaeEREHhENLaroXtadRJqyEHGmu1PGHaHI,7754
246
- strawberry_graphql-0.220.0.dev1709543239.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
247
- strawberry_graphql-0.220.0.dev1709543239.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
248
- strawberry_graphql-0.220.0.dev1709543239.dist-info/RECORD,,
244
+ strawberry_graphql-0.221.0.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
245
+ strawberry_graphql-0.221.0.dist-info/METADATA,sha256=0KsXiYNdNh45hcDBa7AElQz56ODfRQiMeP8FNjXBaF4,7740
246
+ strawberry_graphql-0.221.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
247
+ strawberry_graphql-0.221.0.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
248
+ strawberry_graphql-0.221.0.dist-info/RECORD,,