strawberry-graphql 0.228.0.dev1713643365__py3-none-any.whl → 0.229.1__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.
@@ -44,7 +44,6 @@ class WrongReturnTypeForUnion(Exception):
44
44
  super().__init__(message)
45
45
 
46
46
 
47
- # TODO: this doesn't seem to be tested
48
47
  class UnallowedReturnTypeForUnion(Exception):
49
48
  """The return type is not in the list of Union types"""
50
49
 
@@ -114,7 +114,7 @@ def error_type(
114
114
  ]
115
115
 
116
116
  wrapped = _wrap_dataclass(cls)
117
- extra_fields = cast(List[dataclasses.Field], _get_fields(wrapped))
117
+ extra_fields = cast(List[dataclasses.Field], _get_fields(wrapped, {}))
118
118
  private_fields = get_private_fields(wrapped)
119
119
 
120
120
  all_model_fields.extend(
@@ -177,7 +177,7 @@ def type(
177
177
  )
178
178
 
179
179
  wrapped = _wrap_dataclass(cls)
180
- extra_strawberry_fields = _get_fields(wrapped)
180
+ extra_strawberry_fields = _get_fields(wrapped, {})
181
181
  extra_fields = cast(List[dataclasses.Field], extra_strawberry_fields)
182
182
  private_fields = get_private_fields(wrapped)
183
183
 
@@ -27,7 +27,8 @@ class DatadogTracingExtension(SchemaExtension):
27
27
 
28
28
  @cached_property
29
29
  def _resource_name(self) -> str:
30
- assert self.execution_context.query
30
+ if self.execution_context.query is None:
31
+ return "query_missing"
31
32
 
32
33
  query_hash = self.hash_query(self.execution_context.query)
33
34
 
@@ -78,15 +79,23 @@ class DatadogTracingExtension(SchemaExtension):
78
79
  )
79
80
  self.request_span.set_tag("graphql.operation_name", self._operation_name)
80
81
 
81
- assert self.execution_context.query
82
+ query = self.execution_context.query
83
+
84
+ if query is not None:
85
+ query = query.strip()
86
+ operation_type = "query"
87
+
88
+ if query.startswith("mutation"):
89
+ operation_type = "mutation"
90
+ elif query.startswith("subscription"): # pragma: no cover
91
+ operation_type = "subscription"
92
+ else:
93
+ operation_type = "query_missing"
82
94
 
83
- operation_type = "query"
84
- if self.execution_context.query.strip().startswith("mutation"):
85
- operation_type = "mutation"
86
- elif self.execution_context.query.strip().startswith("subscription"):
87
- operation_type = "subscription"
88
95
  self.request_span.set_tag("graphql.operation_type", operation_type)
96
+
89
97
  yield
98
+
90
99
  self.request_span.finish()
91
100
 
92
101
  def on_validate(self) -> Generator[None, None, None]:
@@ -39,7 +39,7 @@ def schema_directive(
39
39
  ) -> Callable[..., T]:
40
40
  def _wrap(cls: T) -> T:
41
41
  cls = _wrap_dataclass(cls)
42
- fields = _get_fields(cls)
42
+ fields = _get_fields(cls, {})
43
43
 
44
44
  cls.__strawberry_directive__ = StrawberryFederationSchemaDirective(
45
45
  python_name=cls.__name__,
strawberry/object_type.py CHANGED
@@ -67,7 +67,8 @@ def _check_field_annotations(cls: Type[Any]):
67
67
  # If the field has a type override then use that instead of using
68
68
  # the class annotations or resolver annotation
69
69
  if field_.type_annotation is not None:
70
- cls_annotations[field_name] = field_.type_annotation.annotation
70
+ if field_name not in cls_annotations:
71
+ cls_annotations[field_name] = field_.type_annotation.annotation
71
72
  continue
72
73
 
73
74
  # Make sure the cls has an annotation
@@ -85,7 +86,8 @@ def _check_field_annotations(cls: Type[Any]):
85
86
  field_name, resolver=field_.base_resolver
86
87
  )
87
88
 
88
- cls_annotations[field_name] = field_.base_resolver.type_annotation
89
+ if field_name not in cls_annotations:
90
+ cls_annotations[field_name] = field_.base_resolver.type_annotation
89
91
 
90
92
  # TODO: Make sure the cls annotation agrees with the field's type
91
93
  # >>> if cls_annotations[field_name] != field.base_resolver.type:
@@ -133,11 +135,13 @@ def _process_type(
133
135
  description: Optional[str] = None,
134
136
  directives: Optional[Sequence[object]] = (),
135
137
  extend: bool = False,
138
+ original_type_annotations: Optional[Dict[str, Any]] = None,
136
139
  ) -> T:
137
140
  name = name or to_camel_case(cls.__name__)
141
+ original_type_annotations = original_type_annotations or {}
138
142
 
139
143
  interfaces = _get_interfaces(cls)
140
- fields = _get_fields(cls)
144
+ fields = _get_fields(cls, original_type_annotations)
141
145
  is_type_of = getattr(cls, "is_type_of", None)
142
146
  resolve_type = getattr(cls, "resolve_type", None)
143
147
 
@@ -245,7 +249,25 @@ def type(
245
249
  exc = ObjectIsNotClassError.type
246
250
  raise exc(cls)
247
251
 
252
+ # when running `_wrap_dataclass` we lose some of the information about the
253
+ # the passed types, especially the type_annotation inside the StrawberryField
254
+ # this makes it impossible to customise the field type, like this:
255
+ # >>> @strawberry.type
256
+ # >>> class Query:
257
+ # >>> a: int = strawberry.field(graphql_type=str)
258
+ # so we need to extract the information before running `_wrap_dataclass`
259
+ original_type_annotations: Dict[str, Any] = {}
260
+
261
+ annotations = getattr(cls, "__annotations__", {})
262
+
263
+ for field_name in annotations:
264
+ field = getattr(cls, field_name, None)
265
+
266
+ if field and isinstance(field, StrawberryField) and field.type_annotation:
267
+ original_type_annotations[field_name] = field.type_annotation.annotation
268
+
248
269
  wrapped = _wrap_dataclass(cls)
270
+
249
271
  return _process_type(
250
272
  wrapped,
251
273
  name=name,
@@ -254,6 +276,7 @@ def type(
254
276
  description=description,
255
277
  directives=directives,
256
278
  extend=extend,
279
+ original_type_annotations=original_type_annotations,
257
280
  )
258
281
 
259
282
  if cls is None:
strawberry/relay/types.py CHANGED
@@ -38,7 +38,7 @@ from strawberry.utils.aio import aenumerate, aislice, resolve_awaitable
38
38
  from strawberry.utils.inspect import in_async_context
39
39
  from strawberry.utils.typing import eval_type, is_classvar
40
40
 
41
- from .utils import from_base64, to_base64
41
+ from .utils import from_base64, should_resolve_list_connection_edges, to_base64
42
42
 
43
43
  if TYPE_CHECKING:
44
44
  from strawberry.scalars import ID
@@ -933,6 +933,17 @@ class ListConnection(Connection[NodeType]):
933
933
  overfetch,
934
934
  )
935
935
 
936
+ if not should_resolve_list_connection_edges(info):
937
+ return cls(
938
+ edges=[],
939
+ page_info=PageInfo(
940
+ start_cursor=None,
941
+ end_cursor=None,
942
+ has_previous_page=False,
943
+ has_next_page=False,
944
+ ),
945
+ )
946
+
936
947
  edges = [
937
948
  edge_class.resolve_edge(
938
949
  cls.resolve_node(v, info=info, **kwargs),
strawberry/relay/utils.py CHANGED
@@ -2,6 +2,8 @@ import base64
2
2
  from typing import Any, Tuple, Union
3
3
  from typing_extensions import assert_never
4
4
 
5
+ from strawberry.types.info import Info
6
+ from strawberry.types.nodes import InlineFragment, Selection
5
7
  from strawberry.types.types import StrawberryObjectDefinition
6
8
 
7
9
 
@@ -41,7 +43,7 @@ def to_base64(type_: Union[str, type, StrawberryObjectDefinition], node_id: Any)
41
43
  The node id itself
42
44
 
43
45
  Returns:
44
- A tuple of (TypeName, NodeID).
46
+ A GlobalID, which is a string resulting from base64 encoding <TypeName>:<NodeID>.
45
47
 
46
48
  Raises:
47
49
  ValueError:
@@ -61,3 +63,42 @@ def to_base64(type_: Union[str, type, StrawberryObjectDefinition], node_id: Any)
61
63
  raise ValueError(f"{type_} is not a valid GraphQL type or name") from e
62
64
 
63
65
  return base64.b64encode(f"{type_name}:{node_id}".encode()).decode()
66
+
67
+
68
+ def should_resolve_list_connection_edges(info: Info) -> bool:
69
+ """Check if the user requested to resolve the `edges` field of a connection.
70
+
71
+ Args:
72
+ info:
73
+ The strawberry execution info resolve the type name from
74
+
75
+ Returns:
76
+ True if the user requested to resolve the `edges` field of a connection, False otherwise.
77
+
78
+ """
79
+ resolve_for_field_names = {"edges", "pageInfo"}
80
+
81
+ def _check_selection(selection: Selection) -> bool:
82
+ """Recursively inspect the selection to check if the user requested to resolve the `edges` field.
83
+ Args:
84
+ selection (Selection): The selection to check.
85
+
86
+ Returns:
87
+ bool: True if the user requested to resolve the `edges` field of a connection, False otherwise.
88
+ """
89
+ if (
90
+ not isinstance(selection, InlineFragment)
91
+ and selection.name in resolve_for_field_names
92
+ ):
93
+ return True
94
+ if selection.selections:
95
+ return any(
96
+ _check_selection(selection) for selection in selection.selections
97
+ )
98
+ return False
99
+
100
+ for selection_field in info.selected_fields:
101
+ for selection in selection_field.selections:
102
+ if _check_selection(selection):
103
+ return True
104
+ return False
strawberry/scalars.py CHANGED
@@ -16,10 +16,10 @@ JSON = scalar(
16
16
  description=(
17
17
  "The `JSON` scalar type represents JSON values as specified by "
18
18
  "[ECMA-404]"
19
- "(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."
19
+ "(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf)."
20
20
  ),
21
21
  specified_by_url=(
22
- "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf"
22
+ "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
23
23
  ),
24
24
  serialize=lambda v: v,
25
25
  parse_value=lambda v: v,
@@ -31,6 +31,7 @@ from graphql import (
31
31
  GraphQLInputObjectType,
32
32
  GraphQLInterfaceType,
33
33
  GraphQLList,
34
+ GraphQLNamedType,
34
35
  GraphQLNonNull,
35
36
  GraphQLObjectType,
36
37
  GraphQLType,
@@ -464,13 +465,18 @@ class GraphQLCoreConverter:
464
465
  for possible_concrete_type in self.type_map.values():
465
466
  possible_type = possible_concrete_type.definition
466
467
 
467
- if not isinstance(possible_type, StrawberryObjectDefinition):
468
+ if not isinstance(
469
+ possible_type, StrawberryObjectDefinition
470
+ ): # pragma: no cover
468
471
  continue
472
+
469
473
  if possible_type.is_implemented_by(obj):
470
474
  return_type = possible_concrete_type.implementation
471
475
  break
472
476
 
473
477
  if return_type:
478
+ assert isinstance(return_type, GraphQLNamedType)
479
+
474
480
  return return_type.name
475
481
 
476
482
  # Revert to calling is_type_of for cases where a direct subclass
@@ -54,7 +54,7 @@ def schema_directive(
54
54
  ) -> Callable[..., T]:
55
55
  def _wrap(cls: T) -> T:
56
56
  cls = _wrap_dataclass(cls)
57
- fields = _get_fields(cls)
57
+ fields = _get_fields(cls, {})
58
58
 
59
59
  cls.__strawberry_directive__ = StrawberrySchemaDirective(
60
60
  python_name=cls.__name__,
@@ -6,6 +6,7 @@ import warnings
6
6
  from dataclasses import dataclass
7
7
  from datetime import timedelta
8
8
  from typing import TYPE_CHECKING, Any, Dict, Mapping, Optional, Tuple, Union, cast
9
+ from typing_extensions import deprecated
9
10
 
10
11
  from starlite import (
11
12
  BackgroundTasks,
@@ -118,6 +119,10 @@ class GraphQLTransportWSHandler(BaseGraphQLTransportWSHandler):
118
119
  return await self._get_root_value()
119
120
 
120
121
 
122
+ @deprecated(
123
+ "The `starlite` integration is deprecated in favor of `litestar` integration",
124
+ stacklevel=2,
125
+ )
121
126
  class StarliteRequestAdapter(AsyncHTTPRequestAdapter):
122
127
  def __init__(self, request: Request[Any, Any]) -> None:
123
128
  self.request = request
@@ -153,6 +158,10 @@ class BaseContext:
153
158
  self.response: Optional[Response] = None
154
159
 
155
160
 
161
+ @deprecated(
162
+ "The `starlite` integration is deprecated in favor of `litestar` integration",
163
+ stacklevel=2,
164
+ )
156
165
  def make_graphql_controller(
157
166
  schema: BaseSchema,
158
167
  path: str = "",
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
4
  import sys
5
- from typing import Dict, List, Type
5
+ from typing import Any, Dict, List, Type
6
6
 
7
7
  from strawberry.annotation import StrawberryAnnotation
8
8
  from strawberry.exceptions import (
@@ -16,7 +16,9 @@ from strawberry.type import has_object_definition
16
16
  from strawberry.unset import UNSET
17
17
 
18
18
 
19
- def _get_fields(cls: Type) -> List[StrawberryField]:
19
+ def _get_fields(
20
+ cls: Type[Any], original_type_annotations: Dict[str, Type[Any]]
21
+ ) -> List[StrawberryField]:
20
22
  """Get all the strawberry fields off a strawberry.type cls
21
23
 
22
24
  This function returns a list of StrawberryFields (one for each field item), while
@@ -49,6 +51,7 @@ def _get_fields(cls: Type) -> List[StrawberryField]:
49
51
  passing a named function (i.e. not an anonymous lambda) to strawberry.field
50
52
  (typically as a decorator).
51
53
  """
54
+
52
55
  fields: Dict[str, StrawberryField] = {}
53
56
 
54
57
  # before trying to find any fields, let's first add the fields defined in
@@ -152,6 +155,10 @@ def _get_fields(cls: Type) -> List[StrawberryField]:
152
155
  assert_message = "Field must have a name by the time the schema is generated"
153
156
  assert field_name is not None, assert_message
154
157
 
158
+ if field.name in original_type_annotations:
159
+ field.type = original_type_annotations[field.name]
160
+ field.type_annotation = StrawberryAnnotation(annotation=field.type)
161
+
155
162
  # TODO: Raise exception if field_name already in fields
156
163
  fields[field_name] = field
157
164
 
strawberry/types/types.py CHANGED
@@ -214,6 +214,11 @@ class StrawberryObjectDefinition(StrawberryType):
214
214
  if hasattr(real_concrete_type, "_enum_definition"):
215
215
  real_concrete_type = real_concrete_type._enum_definition
216
216
 
217
+ if isinstance(expected_concrete_type, type) and issubclass(
218
+ real_concrete_type, expected_concrete_type
219
+ ):
220
+ return True
221
+
217
222
  if real_concrete_type is not expected_concrete_type:
218
223
  return False
219
224
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strawberry-graphql
3
- Version: 0.228.0.dev1713643365
3
+ Version: 0.229.1
4
4
  Summary: A library for creating GraphQL APIs
5
5
  Home-page: https://strawberry.rocks/
6
6
  License: MIT
@@ -60,7 +60,7 @@ strawberry/django/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPd
60
60
  strawberry/django/test/client.py,sha256=lPEbe_4lNL1pSgtywq4O-b6n7ALCW3U9_uvoWz3EaSM,592
61
61
  strawberry/django/views.py,sha256=zp_4a2i1I7ngK0_9znvvHbo-JWviGWq1aptRhn9RQ2A,9187
62
62
  strawberry/enum.py,sha256=ufChUVwXM5KsphCkuLCzCewL8YT8RI_nzXVokMYwFnA,4255
63
- strawberry/exceptions/__init__.py,sha256=CGI0K1m4tltcNje63S1qCK7KOSQMas_21XkZjKljXCY,6269
63
+ strawberry/exceptions/__init__.py,sha256=BChL2HQYK1ql_oe-WOUOT_BzXsMft5cZ1eRDBWlk4i4,6230
64
64
  strawberry/exceptions/conflicting_arguments.py,sha256=68f6kMSXdjuEjZkoe8o2I9PSIjwTS1kXsSGaQBPk_hI,1587
65
65
  strawberry/exceptions/duplicated_type_name.py,sha256=FYJ2f0sivw8UU2kO2W1Rpbn_KskXjPxOt8WiuFcEcGI,2209
66
66
  strawberry/exceptions/exception.py,sha256=1NrsTAzko1fUrSpXjYpNoCk2XuYJerEKj_CDeqGe_eA,3447
@@ -86,10 +86,10 @@ strawberry/experimental/pydantic/__init__.py,sha256=jlsYH1j_9W4ieRpUKgt5zQPERDL7
86
86
  strawberry/experimental/pydantic/_compat.py,sha256=Qnuxy6d0cq5agd8SBlJWqvCPrH3wzMa3gm5Wtzmh0cM,8147
87
87
  strawberry/experimental/pydantic/conversion.py,sha256=_YMz4cYCwLUazkT2oCQ4B1gusksnXDHdFm1DldIrU7Q,4213
88
88
  strawberry/experimental/pydantic/conversion_types.py,sha256=VuuBULz2v6cz_N1fa51ayJMA5_bQkqZmxaCumDsTGRM,931
89
- strawberry/experimental/pydantic/error_type.py,sha256=s8v0weIVM-9c0e3zqySaaa3pGZan7RvKTGuTtXLGPmE,4366
89
+ strawberry/experimental/pydantic/error_type.py,sha256=iSDNlbsRYZyU5zrg3mzU3ntREUPnU1f2waGmY_kiXLU,4370
90
90
  strawberry/experimental/pydantic/exceptions.py,sha256=Q8Deq3bNkMgc8fwvIYdcfxHSONXVMu-ZB6jcsh1NQYo,1498
91
91
  strawberry/experimental/pydantic/fields.py,sha256=QP5vYb8vKf7vOC69cjUPGOdlO_j4kZRdxalWgeqJ5Hk,2588
92
- strawberry/experimental/pydantic/object_type.py,sha256=gZ_-SJoH4ZG6CIVa2BBInzW9TIXeTw_0-q74a-x1EuI,12372
92
+ strawberry/experimental/pydantic/object_type.py,sha256=icfpKBN4_YrY-243n7XOisI5semFrWuFicmeLAfpU48,12376
93
93
  strawberry/experimental/pydantic/utils.py,sha256=9m_oKyz0K1rTmh1ZrYtbFfyUNsiV11RiEb7bLrZuOXs,3770
94
94
  strawberry/ext/LICENSE,sha256=_oY0TZg0b_sW0--0T44aMTpy2e2zF1Kiyn8E1qDiivo,1249
95
95
  strawberry/ext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -113,7 +113,7 @@ strawberry/extensions/query_depth_limiter.py,sha256=lm9KTQOCTTGzXvMWyafROhQ3MhZX
113
113
  strawberry/extensions/runner.py,sha256=HNi0haRUbd_eGlDG-zByR5KmOylDQPCqMUsLZnzLzWo,2696
114
114
  strawberry/extensions/tracing/__init__.py,sha256=wx8_EAroGhNrP4HiGYMgKo8jnCsfde5ib6lO4OvcLV0,1400
115
115
  strawberry/extensions/tracing/apollo.py,sha256=ZdxxFEQi1lCpCWfCETOfcK_-Ivw-jUSg-rIKOYlm_i4,5811
116
- strawberry/extensions/tracing/datadog.py,sha256=McoCKGUEmLc3oCS2dXd9hdVVVtydRL0odNTOGY0r3Kg,5302
116
+ strawberry/extensions/tracing/datadog.py,sha256=gFXSzavF8ahUpnLj4t2ulJDy4I_Y-1FMhCaX5P6ZL7I,5448
117
117
  strawberry/extensions/tracing/opentelemetry.py,sha256=vuC8IKevMP_Vt0Q-tcHM3UkWasU4S0NhgsAHCNr3j3s,7212
118
118
  strawberry/extensions/tracing/sentry.py,sha256=XxXtJ6sPVbc2ucZo_p1HroTOn2N9Dl_uUfZNAWut_XM,4954
119
119
  strawberry/extensions/tracing/utils.py,sha256=O3-XJ25TqJJ9X1wHi0-0iX4U_3uv2YiB6TJfxGqtnek,618
@@ -133,7 +133,7 @@ strawberry/federation/mutation.py,sha256=0lV5HJwgw4HYR_59pwxWqnPs342HwakTNMc98w5
133
133
  strawberry/federation/object_type.py,sha256=0ZzOavBSh8ZPORd70RmsfMYo2cVg6gfZPwaIziDO58o,9005
134
134
  strawberry/federation/scalar.py,sha256=_dwlQyiDGQQF-Qz-ACSOT-LikxjXgIVz9i0HWlUjTSc,3799
135
135
  strawberry/federation/schema.py,sha256=9g7jp6eUTTP3atW81dLMtaqeY0tQB4YGdR8beKZ-JX8,13715
136
- strawberry/federation/schema_directive.py,sha256=TpqoVeN3-iE-acndIRAVyU4LIXh6FTHz-Pv2kI8zGu0,1719
136
+ strawberry/federation/schema_directive.py,sha256=V_8ytK_cbVoVRhFle0o9DTQkrP1k-xwCBTaideJOYag,1723
137
137
  strawberry/federation/schema_directives.py,sha256=Awb-BqICDptYtDNRF3BUNnbNcrsSTDN8AWAwKxVZ3UQ,6139
138
138
  strawberry/federation/types.py,sha256=mM70g1aLgjplOc3SdtuJjy7NAKFLv35Z4BDC4s_j5us,301
139
139
  strawberry/federation/union.py,sha256=QXeh-nhApqFtXa3To9MX_IwvtwErZBhWYnssUK7JB2E,1005
@@ -160,7 +160,7 @@ strawberry/litestar/controller.py,sha256=BCntaDTmQNoBRHINi8TztuF7G4-FiED-KxEPTZ6
160
160
  strawberry/litestar/handlers/graphql_transport_ws_handler.py,sha256=q_erlgzPsxarohRQXGp1yK0mjKyS8vsWntMYEmrQx4s,2008
161
161
  strawberry/litestar/handlers/graphql_ws_handler.py,sha256=vVpjd5rJOldF8aQWEGjmmNd60WE1p6q6hFmB_DtCzDU,2250
162
162
  strawberry/mutation.py,sha256=NROPvHJU1BBxZB7Wj4Okxw4hDIYM59MCpukAGEmSNYA,255
163
- strawberry/object_type.py,sha256=oClGE0Dd10cOla6WHdUYaUdJk5koZrIikgHb8o8QFA4,11374
163
+ strawberry/object_type.py,sha256=iQL2NqO7I28bS0moWgxPmCDc0w1HewPcXq8Xyh-xAWI,12539
164
164
  strawberry/parent.py,sha256=rmedKjN4zdg4KTnNV8DENrzgNYVL67rXpHjHoBofMS4,825
165
165
  strawberry/permission.py,sha256=dcKx4Zlg4ZhcxEDBOSWzz0CUN4WPkcc_kJUVuvLLs6w,5925
166
166
  strawberry/printer/__init__.py,sha256=DmepjmgtkdF5RxK_7yC6qUyRWn56U-9qeZMbkztYB9w,62
@@ -173,14 +173,14 @@ strawberry/quart/views.py,sha256=SDUaDX7bPKsv8PziMPb0C3nH6vre-Q3bhzSQp4uPjbY,340
173
173
  strawberry/relay/__init__.py,sha256=Vi4btvA_g6Cj9Tk_F9GCSegapIf2WqkOWV8y3P0cTCs,553
174
174
  strawberry/relay/exceptions.py,sha256=b7sU2MhHVWJOfq27lvqdFcqBZ5P_JWk41JWRjtP-AOI,3916
175
175
  strawberry/relay/fields.py,sha256=0A96V4mQzFJwP9g68tM3zKmbPxnfU2Ix6kbMI-x11LQ,15550
176
- strawberry/relay/types.py,sha256=tazLGFC92vVbsoMTFTqOX4QCrgrxSgsDotgkhjFpl7w,30331
177
- strawberry/relay/utils.py,sha256=l-fZHydLEKovwP98UwZz2ZALzMSxIjvn-yi7O8P5rJI,1697
176
+ strawberry/relay/types.py,sha256=pCFD0UXXofmdTS2wBURjg8KwIfdioMt2j4qNYfk6GqQ,30710
177
+ strawberry/relay/utils.py,sha256=STuJ2j-sTPa70O9juJX21nbhK6yhnHdwiAOWBYKOVdo,3160
178
178
  strawberry/resolvers.py,sha256=g7_g3jmXszziGydY1UG6IItf9s6B1lGLUCnwW1kb8U0,224
179
179
  strawberry/sanic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
180
  strawberry/sanic/context.py,sha256=qfoj8QMaAiWbCQFAdm2KPPJGNc7ilXeKAl5z0XJ2nzo,805
181
181
  strawberry/sanic/utils.py,sha256=eDiJPJYpELj4hFsx8CCAHomqe7dDEpStDPm6OfkstJ0,998
182
182
  strawberry/sanic/views.py,sha256=CyhR9RCS4atekEorOH6wAOqfJgmi-h-hAfHA1rq8sA8,5584
183
- strawberry/scalars.py,sha256=CSxTGSvpFyT9H83NxZeiBerl_WPGe43TlSxcrn60960,2076
183
+ strawberry/scalars.py,sha256=usENRKCwl60KstV9sBGYhk2dqW5zw2wGX5eTpOWQiqg,2106
184
184
  strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
185
185
  strawberry/schema/base.py,sha256=lQBJyzG2ZhKc544oLbXEbpYOPOjaXBop3lxp68h_lfI,2976
186
186
  strawberry/schema/compat.py,sha256=n0r3UPUcGemMqK8vklgtCkkuCA1p6tWAYbc6Vl4iNOw,1684
@@ -189,15 +189,15 @@ strawberry/schema/exceptions.py,sha256=T-DsvBtjx9svkegIm1YrVPGPswpVEpMTFc0_7flLE
189
189
  strawberry/schema/execute.py,sha256=6OE7_5v4G3t_wxp1_mfwu8TTiIkTJNBQaeGCVAljUYw,10982
190
190
  strawberry/schema/name_converter.py,sha256=UdNyd-QtqF2HsDCQK-nsOcLGxDTj4hJwYFNvMtZnpq4,6533
191
191
  strawberry/schema/schema.py,sha256=MOC8k6NHolFGrCyqrungv0ciCImLdXTlbmo7y7rLRas,13734
192
- strawberry/schema/schema_converter.py,sha256=cZmcNPqjwpMC9Q9mUZU7wydfu_dmpkcvAfz7GKbK4CY,35714
192
+ strawberry/schema/schema_converter.py,sha256=_pVXXDoswZPhUGqwXK7oB68XZ4Lf6gkHehR-X_-GqCI,35885
193
193
  strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
194
194
  strawberry/schema/types/base_scalars.py,sha256=Z_BmgwLicNexLipGyw6MmZ7OBnkGJU3ySgaY9SwBWrw,1837
195
195
  strawberry/schema/types/concrete_type.py,sha256=HB30G1hMUuuvjAvfSe6ADS35iI_T_wKO-EprVOWTMSs,746
196
196
  strawberry/schema/types/scalar.py,sha256=SVJ8HiKncCvOw2xwABI5xYaHcC7KkGHG-tx2WDtSoCA,2802
197
197
  strawberry/schema_codegen/__init__.py,sha256=PcCVXjS0Y5Buxadm07YAZOVunkQ_DmmwsBrgsH1T4ds,24375
198
- strawberry/schema_directive.py,sha256=GxiOedFB-RJAflpQNUZv00C5Z6gavR-AYdsvoCA_0jc,1963
198
+ strawberry/schema_directive.py,sha256=XGKwcsxRpHXJQ_qXXMi1gEXlZOG22SbDf4Phxf4tbQ0,1967
199
199
  strawberry/starlite/__init__.py,sha256=v209swT8H9MljVL-npvANhEO1zz3__PSfxb_Ix-NoeE,134
200
- strawberry/starlite/controller.py,sha256=QTlvDuCCOwZSbqq5MrGikrI9JXsBHmVuDuP2_lgQk5Y,11918
200
+ strawberry/starlite/controller.py,sha256=moo2HlaJT6w9AijwjHvXi4UibUydaZfA75JMFZVMJPw,12191
201
201
  strawberry/starlite/handlers/graphql_transport_ws_handler.py,sha256=WhfFVWdjRSk4A48MaBLGWqZdi2OnHajxdQlA_Gc4XBE,1981
202
202
  strawberry/starlite/handlers/graphql_ws_handler.py,sha256=v1RxhvahVazKUg-KXosAcZfv5ap1rEp1A3726d5LkiU,2223
203
203
  strawberry/static/apollo-sandbox.html,sha256=2XzkbE0dqsFHqehE-jul9_J9TFOpwA6Ylrlo0Kdx_9w,973
@@ -224,8 +224,8 @@ strawberry/types/fields/resolver.py,sha256=F_E8bmvYM-3hjkTMMtI1a0qs8raMOpYidh27u
224
224
  strawberry/types/graphql.py,sha256=3SWZEsa0Zy1eVW6vy75BnB7t9_lJVi6TBV3_1j3RNBs,687
225
225
  strawberry/types/info.py,sha256=b1ZWW_wUop6XrGNcGHKBQeUYjlX-y8u3s2Wm_XhKPYI,3412
226
226
  strawberry/types/nodes.py,sha256=5tTYmxGpVDshbydicHTTBWEiUe8A7p7mdiaSV8Ry80Y,5027
227
- strawberry/types/type_resolver.py,sha256=F0z_geS4VEun8EhD571LaTgI8ypjCeLfp910gF0Q3MY,6280
228
- strawberry/types/types.py,sha256=X6XwzDoboQkJjCfzi85Lw-pjTRzEYWi-uAUR8yDkstA,7947
227
+ strawberry/types/type_resolver.py,sha256=wuAYCbEjdov0IrnTvkFMNtSwb3lruQsbYI11x35ADeU,6542
228
+ strawberry/types/types.py,sha256=wgdZKrLal6uFeZFw5J9EWzPIify71sir30_VWcWPUxs,8122
229
229
  strawberry/union.py,sha256=bQ3QBOLLugGvN434vHTZRuelgJdblfy8aJMrUpLgG_g,9585
230
230
  strawberry/unset.py,sha256=4zYRN8vUD7lHQLLpulBFqEPfyvzpx8fl7ZDBUyfMqqk,1112
231
231
  strawberry/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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=SQVOw1nuFZk2Pe3iz0o8ebzpoyvBVoGSQZVZj6-8k7I,13483
244
- strawberry_graphql-0.228.0.dev1713643365.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
245
- strawberry_graphql-0.228.0.dev1713643365.dist-info/METADATA,sha256=N18Z9s1fBEG9Vk4YJrTS7mGcNS-zLeWSemzyVvQcs-w,7835
246
- strawberry_graphql-0.228.0.dev1713643365.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
247
- strawberry_graphql-0.228.0.dev1713643365.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
248
- strawberry_graphql-0.228.0.dev1713643365.dist-info/RECORD,,
244
+ strawberry_graphql-0.229.1.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
245
+ strawberry_graphql-0.229.1.dist-info/METADATA,sha256=a8YNAUtdtUE7PXlXt1Szt17YeefHY5xLPzllZdwf8DQ,7821
246
+ strawberry_graphql-0.229.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
247
+ strawberry_graphql-0.229.1.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
248
+ strawberry_graphql-0.229.1.dist-info/RECORD,,