strawberry-graphql 0.263.2__py3-none-any.whl → 0.264.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/relay/types.py CHANGED
@@ -663,9 +663,11 @@ class Edge(Generic[NodeType]):
663
663
  cursor: str = field(description="A cursor for use in pagination")
664
664
  node: NodeType = field(description="The item at the end of the edge")
665
665
 
666
+ CURSOR_PREFIX: ClassVar[str] = PREFIX
667
+
666
668
  @classmethod
667
- def resolve_edge(cls, node: NodeType, *, cursor: Any = None) -> Self:
668
- return cls(cursor=to_base64(PREFIX, cursor), node=node)
669
+ def resolve_edge(cls, node: NodeType, *, cursor: Any = None, **kwargs: Any) -> Self:
670
+ return cls(cursor=to_base64(cls.CURSOR_PREFIX, cursor), node=node, **kwargs)
669
671
 
670
672
 
671
673
  @strawberry_type(description="A connection to a list of items.")
@@ -792,15 +794,6 @@ class ListConnection(Connection[NodeType]):
792
794
  .. _Relay Pagination algorithm:
793
795
  https://relay.dev/graphql/connections.htm#sec-Pagination-algorithm
794
796
  """
795
- slice_metadata = SliceMetadata.from_arguments(
796
- info,
797
- before=before,
798
- after=after,
799
- first=first,
800
- last=last,
801
- max_results=max_results,
802
- )
803
-
804
797
  type_def = get_object_definition(cls)
805
798
  assert type_def
806
799
  field_def = type_def.get_field("edges")
@@ -812,6 +805,16 @@ class ListConnection(Connection[NodeType]):
812
805
 
813
806
  edge_class = cast("Edge[NodeType]", field)
814
807
 
808
+ slice_metadata = SliceMetadata.from_arguments(
809
+ info,
810
+ before=before,
811
+ after=after,
812
+ first=first,
813
+ last=last,
814
+ max_results=max_results,
815
+ prefix=edge_class.CURSOR_PREFIX,
816
+ )
817
+
815
818
  if isinstance(nodes, (AsyncIterator, AsyncIterable)) and in_async_context():
816
819
 
817
820
  async def resolver() -> Self:
strawberry/relay/utils.py CHANGED
@@ -132,10 +132,14 @@ class SliceMetadata:
132
132
  first: int | None = None,
133
133
  last: int | None = None,
134
134
  max_results: int | None = None,
135
+ prefix: str | None = None,
135
136
  ) -> Self:
136
137
  """Get the slice metadata to use on ListConnection."""
137
138
  from strawberry.relay.types import PREFIX
138
139
 
140
+ if prefix is None:
141
+ prefix = PREFIX
142
+
139
143
  max_results = (
140
144
  max_results
141
145
  if max_results is not None
@@ -146,13 +150,13 @@ class SliceMetadata:
146
150
 
147
151
  if after:
148
152
  after_type, after_parsed = from_base64(after)
149
- if after_type != PREFIX:
153
+ if after_type != prefix:
150
154
  raise TypeError("Argument 'after' contains a non-existing value.")
151
155
 
152
156
  start = int(after_parsed) + 1
153
157
  if before:
154
158
  before_type, before_parsed = from_base64(before)
155
- if before_type != PREFIX:
159
+ if before_type != prefix:
156
160
  raise TypeError("Argument 'before' contains a non-existing value.")
157
161
  end = int(before_parsed)
158
162
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: strawberry-graphql
3
- Version: 0.263.2
3
+ Version: 0.264.0
4
4
  Summary: A library for creating GraphQL APIs
5
5
  License: MIT
6
6
  Keywords: graphql,api,rest,starlette,async
@@ -153,8 +153,8 @@ strawberry/quart/views.py,sha256=Hjm93A9j9fy--DQVhsPQ_PakqYtajyWeuH7wUnSLYoA,444
153
153
  strawberry/relay/__init__.py,sha256=Vi4btvA_g6Cj9Tk_F9GCSegapIf2WqkOWV8y3P0cTCs,553
154
154
  strawberry/relay/exceptions.py,sha256=Za0iXLBGZtd1HkesGm4xTr3QOeuyiCAe1hiCCQ2HHvE,4036
155
155
  strawberry/relay/fields.py,sha256=wIwBTXsDimG6incMglEn7Gr7CO8H8AA25yhM8MT8I-0,18100
156
- strawberry/relay/types.py,sha256=1i1tJFLlD3ofKRf9YCoGoGh70v1kUrvlXqo6rdmulAs,30353
157
- strawberry/relay/utils.py,sha256=OqeeTy_3TFMjmERnCNleUpW3bFf-yuQDzra8l5PNlyY,5817
156
+ strawberry/relay/types.py,sha256=u3-V7LPe_CniEmREMJyvXH9L9Ecc2CWQC5hRfUvL_Q4,30477
157
+ strawberry/relay/utils.py,sha256=-QxroxkSYtFnMYsJyTyfIi0I1fLtjnt6siW0kLNiyfs,5908
158
158
  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
@@ -228,8 +228,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
228
228
  strawberry/utils/operation.py,sha256=s7ajvLg_q6v2mg47kEMQPjO_J-XluMKTCwo4d47mGvE,1195
229
229
  strawberry/utils/str_converters.py,sha256=-eH1Cl16IO_wrBlsGM-km4IY0IKsjhjnSNGRGOwQjVM,897
230
230
  strawberry/utils/typing.py,sha256=Xmnhwvnw8RIQVIc5D5iI4_9qM4Thpk7tWx8xf-RW_So,13383
231
- strawberry_graphql-0.263.2.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
232
- strawberry_graphql-0.263.2.dist-info/METADATA,sha256=6hreUintx2Yjuv8bzNrCJy583fauDHONGS-4zAAau3c,7679
233
- strawberry_graphql-0.263.2.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
234
- strawberry_graphql-0.263.2.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
235
- strawberry_graphql-0.263.2.dist-info/RECORD,,
231
+ strawberry_graphql-0.264.0.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
232
+ strawberry_graphql-0.264.0.dist-info/METADATA,sha256=Z4gLrc-diDadDxYz17PQW1OIjVnLJ-qwQjIJQSkLYO0,7679
233
+ strawberry_graphql-0.264.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
234
+ strawberry_graphql-0.264.0.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
235
+ strawberry_graphql-0.264.0.dist-info/RECORD,,