strawberry-graphql 0.262.7.dev1743345593__py3-none-any.whl → 0.263.0.dev1743450281__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
@@ -23,7 +23,7 @@ from .types.object_type import asdict, input, interface, type # noqa: A004
23
23
  from .types.private import Private
24
24
  from .types.scalar import scalar
25
25
  from .types.union import union
26
- from .types.unset import UNSET, Maybe, exists
26
+ from .types.unset import UNSET
27
27
 
28
28
  __all__ = [
29
29
  "ID",
@@ -31,7 +31,6 @@ __all__ = [
31
31
  "BasePermission",
32
32
  "Info",
33
33
  "LazyType",
34
- "Maybe",
35
34
  "Parent",
36
35
  "Private",
37
36
  "Schema",
@@ -43,7 +42,6 @@ __all__ = [
43
42
  "directive_field",
44
43
  "enum",
45
44
  "enum_value",
46
- "exists",
47
45
  "experimental",
48
46
  "federation",
49
47
  "field",
strawberry/annotation.py CHANGED
@@ -30,7 +30,7 @@ from strawberry.types.enum import enum as strawberry_enum
30
30
  from strawberry.types.lazy_type import LazyType
31
31
  from strawberry.types.private import is_private
32
32
  from strawberry.types.scalar import ScalarDefinition
33
- from strawberry.types.unset import UNSET, _annot_is_maybe
33
+ from strawberry.types.unset import UNSET
34
34
  from strawberry.utils.typing import eval_type, is_generic, is_type_var
35
35
 
36
36
  if TYPE_CHECKING:
@@ -143,11 +143,6 @@ class StrawberryAnnotation:
143
143
  return evaled_type
144
144
  if self._is_list(evaled_type):
145
145
  return self.create_list(evaled_type)
146
- if type_of := self._get_maybe_type(evaled_type):
147
- return StrawberryAnnotation(
148
- annotation=Union[type_of, None],
149
- namespace=self.namespace,
150
- ).resolve()
151
146
 
152
147
  if self._is_graphql_generic(evaled_type):
153
148
  if any(is_type_var(type_) for type_ in get_args(evaled_type)):
@@ -315,10 +310,6 @@ class StrawberryAnnotation:
315
310
  or is_list
316
311
  )
317
312
 
318
- @classmethod
319
- def _get_maybe_type(cls, annotation: Any) -> type | None:
320
- return get_args(annotation)[0] if _annot_is_maybe(annotation) else None
321
-
322
313
  @classmethod
323
314
  def _is_strawberry_type(cls, evaled_type: Any) -> bool:
324
315
  # Prevent import cycles
@@ -293,8 +293,7 @@ class GraphQLHTTPConsumer(
293
293
 
294
294
  async def render_graphql_ide(self, request: ChannelsRequest) -> ChannelsResponse:
295
295
  return ChannelsResponse(
296
- content=self.graphql_ide_html.encode(),
297
- content_type="text/html; charset=utf-8",
296
+ content=self.graphql_ide_html.encode(), content_type="text/html"
298
297
  )
299
298
 
300
299
  def is_websocket_request(
@@ -349,8 +348,7 @@ class SyncGraphQLHTTPConsumer(
349
348
 
350
349
  def render_graphql_ide(self, request: ChannelsRequest) -> ChannelsResponse:
351
350
  return ChannelsResponse(
352
- content=self.graphql_ide_html.encode(),
353
- content_type="text/html; charset=utf-8",
351
+ content=self.graphql_ide_html.encode(), content_type="text/html"
354
352
  )
355
353
 
356
354
  # Sync channels is actually async, but it uses database_sync_to_async to call
@@ -1,11 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
- from typing import TYPE_CHECKING, Any, Optional
4
+ from typing import Any, Optional
5
5
  from typing_extensions import Literal, TypedDict
6
6
 
7
- if TYPE_CHECKING:
8
- from strawberry.types import ExecutionResult
7
+ from strawberry.schema._graphql_core import (
8
+ GraphQLIncrementalExecutionResults,
9
+ ResultType,
10
+ )
9
11
 
10
12
 
11
13
  class GraphQLHTTPResponse(TypedDict, total=False):
@@ -14,7 +16,10 @@ class GraphQLHTTPResponse(TypedDict, total=False):
14
16
  extensions: Optional[dict[str, object]]
15
17
 
16
18
 
17
- def process_result(result: ExecutionResult) -> GraphQLHTTPResponse:
19
+ def process_result(result: ResultType) -> GraphQLHTTPResponse:
20
+ if isinstance(result, GraphQLIncrementalExecutionResults):
21
+ return result
22
+
18
23
  data: GraphQLHTTPResponse = {"data": result.data}
19
24
 
20
25
  if result.errors:
@@ -25,6 +25,9 @@ from strawberry.http import (
25
25
  process_result,
26
26
  )
27
27
  from strawberry.http.ides import GraphQL_IDE
28
+ from strawberry.schema._graphql_core import (
29
+ GraphQLIncrementalExecutionResults,
30
+ )
28
31
  from strawberry.schema.base import BaseSchema
29
32
  from strawberry.schema.exceptions import InvalidOperationTypeError
30
33
  from strawberry.subscriptions import GRAPHQL_TRANSPORT_WS_PROTOCOL, GRAPHQL_WS_PROTOCOL
@@ -258,7 +261,7 @@ class AsyncBaseHTTPView(
258
261
  root_value: Optional[RootValue] = UNSET,
259
262
  ) -> WebSocketResponse: ...
260
263
 
261
- async def run(
264
+ async def run( # noqa: PLR0915
262
265
  self,
263
266
  request: Union[Request, WebSocketRequest],
264
267
  context: Optional[Context] = UNSET,
@@ -349,6 +352,73 @@ class AsyncBaseHTTPView(
349
352
  "Content-Type": "multipart/mixed;boundary=graphql;subscriptionSpec=1.0,application/json",
350
353
  },
351
354
  )
355
+ if isinstance(result, GraphQLIncrementalExecutionResults):
356
+
357
+ async def stream() -> AsyncGenerator[str, None]:
358
+ yield "---"
359
+
360
+ response = await self.process_result(request, result.initial_result)
361
+
362
+ response["hasNext"] = result.initial_result.has_next
363
+ response["pending"] = [
364
+ p.formatted for p in result.initial_result.pending
365
+ ]
366
+ response["extensions"] = result.initial_result.extensions
367
+
368
+ yield self.encode_multipart_data(response, "-")
369
+
370
+ async for value in result.subsequent_results:
371
+ response = {
372
+ "hasNext": value.has_next,
373
+ "extensions": value.extensions,
374
+ }
375
+
376
+ if value.pending:
377
+ response["pending"] = [p.formatted for p in value.pending]
378
+
379
+ if value.completed:
380
+ response["completed"] = [p.formatted for p in value.completed]
381
+
382
+ if value.incremental:
383
+ incremental = []
384
+
385
+ for incremental_value in value.incremental:
386
+ pending_value = next(
387
+ (
388
+ v
389
+ for v in result.initial_result.pending
390
+ if v.id == incremental_value.id
391
+ ),
392
+ None,
393
+ )
394
+
395
+ assert pending_value
396
+
397
+ incremental.append(
398
+ {
399
+ **incremental_value.formatted,
400
+ # for Apollo
401
+ # content type is `multipart/mixed;deferSpec=20220824,application/json`
402
+ "path": pending_value.path,
403
+ "label": pending_value.label,
404
+ }
405
+ )
406
+
407
+ response["incremental"] = incremental
408
+
409
+ yield self.encode_multipart_data(response, "-")
410
+
411
+ yield "--\r\n"
412
+
413
+ return await self.create_streaming_response(
414
+ request,
415
+ stream,
416
+ sub_response,
417
+ headers={
418
+ "Transfer-Encoding": "chunked",
419
+ "Content-Type": 'multipart/mixed; boundary="-"',
420
+ },
421
+ )
352
422
 
353
423
  response_data = await self.process_result(request=request, result=result)
354
424
 
@@ -360,12 +430,16 @@ class AsyncBaseHTTPView(
360
430
  )
361
431
 
362
432
  def encode_multipart_data(self, data: Any, separator: str) -> str:
433
+ encoded_data = self.encode_json(data)
434
+
363
435
  return "".join(
364
436
  [
365
- f"\r\n--{separator}\r\n",
366
- "Content-Type: application/json\r\n\r\n",
367
- self.encode_json(data),
368
- "\n",
437
+ "\r\n",
438
+ "Content-Type: application/json; charset=utf-8\r\n",
439
+ "Content-Length: " + str(len(encoded_data)) + "\r\n",
440
+ "\r\n",
441
+ encoded_data,
442
+ f"\r\n--{separator}",
369
443
  ]
370
444
  )
371
445
 
@@ -561,9 +561,9 @@ def print_schema_definition(
561
561
  def print_directive(
562
562
  directive: GraphQLDirective, *, schema: BaseSchema
563
563
  ) -> Optional[str]:
564
- strawberry_directive = directive.extensions["strawberry-definition"]
564
+ strawberry_directive = directive.extensions.get("strawberry-definition")
565
565
 
566
- if (
566
+ if strawberry_directive is None or (
567
567
  isinstance(strawberry_directive, StrawberrySchemaDirective)
568
568
  and not strawberry_directive.print_definition
569
569
  ):
@@ -0,0 +1,48 @@
1
+ from typing import Union
2
+
3
+ from graphql.execution import ExecutionContext as GraphQLExecutionContext
4
+ from graphql.execution import ExecutionResult as GraphQLExecutionResult
5
+ from graphql.execution import execute, subscribe
6
+
7
+ from strawberry.types import ExecutionResult
8
+
9
+ try:
10
+ from graphql import (
11
+ ExperimentalIncrementalExecutionResults as GraphQLIncrementalExecutionResults,
12
+ )
13
+ from graphql.execution import experimental_execute_incrementally
14
+ from graphql.type.directives import (
15
+ GraphQLDeferDirective,
16
+ GraphQLStreamDirective,
17
+ )
18
+
19
+ incremental_execution_directives = (
20
+ GraphQLDeferDirective,
21
+ GraphQLStreamDirective,
22
+ )
23
+
24
+ except ImportError:
25
+ from types import NoneType
26
+
27
+ GraphQLIncrementalExecutionResults = NoneType
28
+
29
+ incremental_execution_directives = []
30
+ experimental_execute_incrementally = None
31
+
32
+
33
+ # TODO: give this a better name, maybe also a better place
34
+ ResultType = Union[
35
+ GraphQLExecutionResult,
36
+ GraphQLIncrementalExecutionResults,
37
+ ExecutionResult,
38
+ ]
39
+
40
+ __all__ = [
41
+ "GraphQLExecutionContext",
42
+ "GraphQLIncrementalExecutionResults",
43
+ "ResultType",
44
+ "execute",
45
+ "experimental_execute_incrementally",
46
+ "incremental_execution_directives",
47
+ "subscribe",
48
+ ]
@@ -16,6 +16,7 @@ class StrawberryConfig:
16
16
  relay_max_results: int = 100
17
17
  disable_field_suggestions: bool = False
18
18
  info_class: type[Info] = Info
19
+ enable_experimental_incremental_execution: bool = False
19
20
 
20
21
  def __post_init__(
21
22
  self,
@@ -29,8 +29,6 @@ from graphql import (
29
29
  parse,
30
30
  validate_schema,
31
31
  )
32
- from graphql.execution import ExecutionContext as GraphQLExecutionContext
33
- from graphql.execution import execute, subscribe
34
32
  from graphql.execution.middleware import MiddlewareManager
35
33
  from graphql.type.directives import specified_directives
36
34
  from graphql.validation import validate
@@ -63,6 +61,15 @@ from strawberry.utils import IS_GQL_32
63
61
  from strawberry.utils.await_maybe import await_maybe
64
62
 
65
63
  from . import compat
64
+ from ._graphql_core import (
65
+ GraphQLExecutionContext,
66
+ GraphQLIncrementalExecutionResults,
67
+ ResultType,
68
+ execute,
69
+ experimental_execute_incrementally,
70
+ incremental_execution_directives,
71
+ subscribe,
72
+ )
66
73
  from .base import BaseSchema
67
74
  from .config import StrawberryConfig
68
75
  from .exceptions import InvalidOperationTypeError
@@ -91,6 +98,7 @@ OriginSubscriptionResult = Union[
91
98
  AsyncIterator[OriginalExecutionResult],
92
99
  ]
93
100
 
101
+
94
102
  DEFAULT_ALLOWED_OPERATION_TYPES = {
95
103
  OperationType.QUERY,
96
104
  OperationType.MUTATION,
@@ -259,11 +267,16 @@ class Schema(BaseSchema):
259
267
  graphql_types.append(graphql_type)
260
268
 
261
269
  try:
270
+ directives = specified_directives + tuple(graphql_directives)
271
+
272
+ if self.config.enable_experimental_incremental_execution:
273
+ directives = tuple(directives) + tuple(incremental_execution_directives)
274
+
262
275
  self._schema = GraphQLSchema(
263
276
  query=query_type,
264
277
  mutation=mutation_type,
265
278
  subscription=subscription_type if subscription else None,
266
- directives=specified_directives + tuple(graphql_directives),
279
+ directives=directives,
267
280
  types=graphql_types,
268
281
  extensions={
269
282
  GraphQLCoreConverter.DEFINITION_BACKREF: self,
@@ -441,12 +454,16 @@ class Schema(BaseSchema):
441
454
  async def _handle_execution_result(
442
455
  self,
443
456
  context: ExecutionContext,
444
- result: Union[GraphQLExecutionResult, ExecutionResult],
457
+ result: ResultType,
445
458
  extensions_runner: SchemaExtensionsRunner,
446
459
  *,
447
460
  # TODO: can we remove this somehow, see comment in execute
448
461
  skip_process_errors: bool = False,
449
462
  ) -> ExecutionResult:
463
+ # TODO: handle this, also, why do we have both GraphQLExecutionResult and ExecutionResult?
464
+ if isinstance(result, GraphQLIncrementalExecutionResults):
465
+ return result
466
+
450
467
  # Set errors on the context so that it's easier
451
468
  # to access in extensions
452
469
  if result.errors:
@@ -487,6 +504,14 @@ class Schema(BaseSchema):
487
504
  extensions_runner = self.create_extensions_runner(execution_context, extensions)
488
505
  middleware_manager = self._get_middleware_manager(extensions)
489
506
 
507
+ execute_function = (
508
+ experimental_execute_incrementally
509
+ if self.config.enable_experimental_incremental_execution
510
+ else execute
511
+ )
512
+
513
+ # TODO: raise if experimental_execute_incrementally is not available
514
+
490
515
  try:
491
516
  async with extensions_runner.operation():
492
517
  # Note: In graphql-core the schema would be validated here but in
@@ -505,7 +530,7 @@ class Schema(BaseSchema):
505
530
  async with extensions_runner.executing():
506
531
  if not execution_context.result:
507
532
  result = await await_maybe(
508
- execute(
533
+ execute_function(
509
534
  self._schema,
510
535
  execution_context.graphql_document,
511
536
  root_value=execution_context.root_value,
@@ -521,7 +546,9 @@ class Schema(BaseSchema):
521
546
  result = execution_context.result
522
547
  # Also set errors on the execution_context so that it's easier
523
548
  # to access in extensions
524
- if result.errors:
549
+
550
+ # TODO: maybe here use the first result from incremental execution if it exists
551
+ if isinstance(result, GraphQLExecutionResult) and result.errors:
525
552
  execution_context.errors = result.errors
526
553
 
527
554
  # Run the `Schema.process_errors` function here before
@@ -571,6 +598,14 @@ class Schema(BaseSchema):
571
598
  extensions_runner = self.create_extensions_runner(execution_context, extensions)
572
599
  middleware_manager = self._get_middleware_manager(extensions)
573
600
 
601
+ execute_function = (
602
+ experimental_execute_incrementally
603
+ if self.config.enable_experimental_incremental_execution
604
+ else execute
605
+ )
606
+
607
+ # TODO: raise if experimental_execute_incrementally is not available
608
+
574
609
  try:
575
610
  with extensions_runner.operation():
576
611
  # Note: In graphql-core the schema would be validated here but in
@@ -612,7 +647,7 @@ class Schema(BaseSchema):
612
647
 
613
648
  with extensions_runner.executing():
614
649
  if not execution_context.result:
615
- result = execute(
650
+ result = execute_function(
616
651
  self._schema,
617
652
  execution_context.graphql_document,
618
653
  root_value=execution_context.root_value,
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html>
3
3
  <head>
4
4
  <title>Strawberry GraphiQL</title>
@@ -61,8 +61,8 @@
61
61
  <link
62
62
  crossorigin
63
63
  rel="stylesheet"
64
- href="https://unpkg.com/graphiql@3.0.9/graphiql.min.css"
65
- integrity="sha384-yz3/sqpuplkA7msMo0FE4ekg0xdwdvZ8JX9MVZREsxipqjU4h8IRfmAMRcb1QpUy"
64
+ href="https://unpkg.com/graphiql@3.8.3/graphiql.min.css"
65
+ integrity="sha384-Mq3vbRBY71jfjQAt/DcjxUIYY33ksal4cgdRt9U/hNPvHBCaT2JfJ/PTRiPKf0aM"
66
66
  />
67
67
 
68
68
  <link
@@ -77,8 +77,8 @@
77
77
  <div id="graphiql" class="graphiql-container">Loading...</div>
78
78
  <script
79
79
  crossorigin
80
- src="https://unpkg.com/graphiql@3.0.9/graphiql.min.js"
81
- integrity="sha384-Mjte+vxCWz1ZYCzszGHiJqJa5eAxiqI4mc3BErq7eDXnt+UGLXSEW7+i0wmfPiji"
80
+ src="https://unpkg.com/graphiql@3.8.3/graphiql.min.js"
81
+ integrity="sha384-HbRVEFG0JGJZeAHCJ9Xm2+tpknBQ7QZmNlO/DgZtkZ0aJSypT96YYGRNod99l9Ie"
82
82
  ></script>
83
83
  <script
84
84
  crossorigin
@@ -20,7 +20,6 @@ from strawberry.exceptions import (
20
20
  ObjectIsNotClassError,
21
21
  )
22
22
  from strawberry.types.base import get_object_definition
23
- from strawberry.types.unset import UNSET, _annot_is_maybe
24
23
  from strawberry.utils.deprecations import DEPRECATION_MESSAGES, DeprecatedDescriptor
25
24
  from strawberry.utils.str_converters import to_camel_case
26
25
 
@@ -123,15 +122,6 @@ def _wrap_dataclass(cls: builtins.type[T]) -> builtins.type[T]:
123
122
  return dclass
124
123
 
125
124
 
126
- def _inject_default_for_maybe_annotations(
127
- cls: builtins.type[T], annotations: dict[str, Any]
128
- ) -> None:
129
- """Inject `= UNSET` for fields with `Maybe` annotations and no default value."""
130
- for name, annot in annotations.copy().items():
131
- if _annot_is_maybe(annot) and not getattr(cls, name, None):
132
- setattr(cls, name, UNSET)
133
-
134
-
135
125
  def _process_type(
136
126
  cls: T,
137
127
  *,
@@ -296,8 +286,7 @@ def type(
296
286
 
297
287
  if field and isinstance(field, StrawberryField) and field.type_annotation:
298
288
  original_type_annotations[field_name] = field.type_annotation.annotation
299
- if is_input:
300
- _inject_default_for_maybe_annotations(cls, annotations)
289
+
301
290
  wrapped = _wrap_dataclass(cls)
302
291
 
303
292
  return _process_type( # type: ignore
strawberry/types/unset.py CHANGED
@@ -1,7 +1,5 @@
1
- import typing
2
1
  import warnings
3
- from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar, Union
4
- from typing_extensions import TypeAlias, TypeGuard
2
+ from typing import Any, Optional
5
3
 
6
4
  DEPRECATED_NAMES: dict[str, str] = {
7
5
  "is_unset": "`is_unset` is deprecated use `value is UNSET` instead",
@@ -63,26 +61,6 @@ def __getattr__(name: str) -> Any:
63
61
  raise AttributeError(f"module {__name__} has no attribute {name}")
64
62
 
65
63
 
66
- NOTHING = UnsetType()
67
- """A special value that can be used to represent an unset value in a field or argument."""
68
-
69
- T = TypeVar("T")
70
-
71
- if TYPE_CHECKING:
72
- Maybe: TypeAlias = Union[T, UnsetType, None]
73
- else:
74
- # we do this trick so we can inspect that at runtime
75
- class Maybe(Generic[T]): ...
76
-
77
-
78
- def _annot_is_maybe(annotation: Any) -> bool:
79
- return (orig := typing.get_origin(annotation)) and orig is Maybe
80
-
81
-
82
- def exists(value: Union[T, UnsetType, None]) -> TypeGuard[Union[T, None]]:
83
- return value is not UNSET or not isinstance(value, UnsetType)
84
-
85
-
86
64
  __all__ = [
87
65
  "UNSET",
88
66
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: strawberry-graphql
3
- Version: 0.262.7.dev1743345593
3
+ Version: 0.263.0.dev1743450281
4
4
  Summary: A library for creating GraphQL APIs
5
5
  License: MIT
6
6
  Keywords: graphql,api,rest,starlette,async
@@ -1,10 +1,10 @@
1
- strawberry/__init__.py,sha256=oWrH2u03CPC4o3_Q3MVtOv5bMr4n1l5AIoQi0xk3D2Q,1471
1
+ strawberry/__init__.py,sha256=VcqNwegcJS_YhCOrZyveD_wBcd-hh8KKrXcIlTc7knE,1429
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/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
5
5
  strawberry/aiohttp/test/client.py,sha256=8FKZTnvawxYpgEICOri-34O3wHRHLhRpjH_Ktp2EupQ,1801
6
6
  strawberry/aiohttp/views.py,sha256=JXYd_qO_LD4QbRJ7iAnZbEsezwvPOmTujTGNAb75bRU,7885
7
- strawberry/annotation.py,sha256=Bt1pSylGy8eYJYpXhJb_34MmQQLv5cqk08xMgGaYVuM,13428
7
+ strawberry/annotation.py,sha256=FYoUNz857yt3Hewm8bYFmMLpG7dTdKpc4j9nBGsv40k,13038
8
8
  strawberry/asgi/__init__.py,sha256=55tsJmqIPlQgeScDUQuADalLlN5ymdHOeFHWzyII7aY,8167
9
9
  strawberry/asgi/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
10
10
  strawberry/asgi/test/client.py,sha256=kp2O5znHWuAB5VVYO8p4XPSTEDDXBSjNz5WHqW0r6GM,1473
@@ -13,7 +13,7 @@ strawberry/chalice/views.py,sha256=-bYqNxeiWpxpstdlh0ZQxpNUB9ZaBEVvEwn3Z5yTT8k,4
13
13
  strawberry/channels/__init__.py,sha256=AVmEwhzGHcTycMCnZYcZFFqZV8tKw9FJN4YXws-vWFA,433
14
14
  strawberry/channels/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  strawberry/channels/handlers/base.py,sha256=3mSvT2HMlOoWr0Y_8y1wwSmvCmB8osy2pEK1Kc5zJ5M,7841
16
- strawberry/channels/handlers/http_handler.py,sha256=zDwMVIjAiMVwsXOwq4Iy8IqwUAO8FNba3OPk76uWIGM,11647
16
+ strawberry/channels/handlers/http_handler.py,sha256=Gj1_rJMZRlHWXrmx6rqtQcpZxbZkeWBlSzlaurBZepc,11591
17
17
  strawberry/channels/handlers/ws_handler.py,sha256=yw9HqwReLGGLcLcK_e4gDaQMua31_Ds7JGwuSD9REZQ,6169
18
18
  strawberry/channels/router.py,sha256=DKIbl4zuRBhfvViUVpyu0Rf_WRT41E6uZC-Yic9Ltvo,2024
19
19
  strawberry/channels/testing.py,sha256=dc9mvSm9YdNOUgQk5ou5K4iE2h6TP5quKnk4Xdtn-IY,6558
@@ -130,8 +130,8 @@ strawberry/file_uploads/scalars.py,sha256=NRDeB7j8aotqIkz9r62ISTf4DrxQxEZYUuHsX5
130
130
  strawberry/file_uploads/utils.py,sha256=-c6TbqUI-Dkb96hWCrZabh6TL2OabBuQNkCarOqgDm4,1181
131
131
  strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  strawberry/flask/views.py,sha256=HmkqZrO6KSBSM-yNbJkBR34Q5n7oVsTsuCzt2Og5Zws,6351
133
- strawberry/http/__init__.py,sha256=BV_JpUwNongW38UzFstM72hDXNUjSxdJm_M96pDFU1c,1122
134
- strawberry/http/async_base_view.py,sha256=USt2Ife2RZ1WjhwRBD5_5K-qJOz6UIdXiMGhnnd59T4,16350
133
+ strawberry/http/__init__.py,sha256=ElFPdSzecCIEFCyaqvlWVrc_NQCuRaa8CcAj0YlL9Qc,1225
134
+ strawberry/http/async_base_view.py,sha256=Z6d4YDCTx7xs8UCibgDJ7TWr1mUR1xunP_PGhli3nZs,19204
135
135
  strawberry/http/base.py,sha256=Lz-u5SWg2uQp3l5GMKZDPQuJOR42LXHgjV1PZHwiapE,2373
136
136
  strawberry/http/exceptions.py,sha256=9E2dreS1crRoJVUEPuHyx23NcDELDHNzkAOa-rGv-8I,348
137
137
  strawberry/http/ides.py,sha256=WjU0nsMDgr3Bd1ebWkUEkO2d1hk0dI16mLqXyCHqklA,613
@@ -146,7 +146,7 @@ strawberry/parent.py,sha256=wViSVYl5ADuyy2EGaS98by_iT1ep9xTP2od8NB_EIuw,742
146
146
  strawberry/permission.py,sha256=dSRJMjSCmTlXfvfC24kCSrAk0txTjYKTJ5ZVU5IW91Y,7537
147
147
  strawberry/printer/__init__.py,sha256=DmepjmgtkdF5RxK_7yC6qUyRWn56U-9qeZMbkztYB9w,62
148
148
  strawberry/printer/ast_from_value.py,sha256=Tkme60qlykbN2m3dNPNMOe65X-wj6EmcDQwgQv7gUkc,4987
149
- strawberry/printer/printer.py,sha256=bQ1y8QGSfigU4L-oKi6Akr8LQ75KpUt_WLlp81QFnDE,18800
149
+ strawberry/printer/printer.py,sha256=IYAyVjH4KcSiuUSGtKjP3CXoH4fFL24UT_WhDcVbtVc,18836
150
150
  strawberry/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  strawberry/quart/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
152
  strawberry/quart/views.py,sha256=FmzvRA8xjtOz2ZqxwyX10OIDxvnhncPYjywXdFJ037k,4447
@@ -162,12 +162,13 @@ strawberry/sanic/utils.py,sha256=73lkICa7ZMJvXpcNaIhoKsDkdIA7amOCiV6DN_ib7qY,106
162
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/_graphql_core.py,sha256=RwugIs_TgkLf9E_ftuduoPktbJEWNyBfSHVVN42j3po,1267
165
166
  strawberry/schema/base.py,sha256=q5UAw6do4Ele5Cf8dNAouiPjNmZoCBNFqh5Vl05caCI,3864
166
167
  strawberry/schema/compat.py,sha256=9qJ0lhYJeaN43ayFgVz708ZMvedBhofiTSw9kpFqmjU,1830
167
- strawberry/schema/config.py,sha256=6BpCbNNCuekGgiKEPt2mliMqLH_wIjJmSW0tLbnJwk4,924
168
+ strawberry/schema/config.py,sha256=Nl-CWXlKyzcC0ZHoeJmGMXT5jPieC87NU7OqUltbAIk,984
168
169
  strawberry/schema/exceptions.py,sha256=rqVNb_oYrKM0dHPgvAemqCG6Um282LPPu4zwQ5cZqs4,584
169
170
  strawberry/schema/name_converter.py,sha256=1rrpch-wBidlWfZ7hVouvIIhJpdxWfB5tWnO6PqYug8,6544
170
- strawberry/schema/schema.py,sha256=bbJL5dQRiaeo6DHeztTbF2u8VkSNAnVqraV1SSauHk8,34396
171
+ strawberry/schema/schema.py,sha256=rClAsHgys69qtlGFEDcpivPDYRHJTHzkxKVld3uwf0o,35534
171
172
  strawberry/schema/schema_converter.py,sha256=-_QZCcmHWIEjRPqEChtPMPbFtgz6YmLn8V6KXvZJMOk,37192
172
173
  strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
173
174
  strawberry/schema/types/base_scalars.py,sha256=JRUq0WjEkR9dFewstZnqnZKp0uOEipo4UXNF5dzRf4M,1971
@@ -179,7 +180,7 @@ strawberry/schema_codegen/__init__.py,sha256=mN4Qmu5Iakht6nHpRpt9hCs8e--oTPlVtDJ
179
180
  strawberry/schema_directive.py,sha256=CbjdX54EIeWGkJu4SgiLR8mph5_8wyNsgJk2oLoQK_0,2023
180
181
  strawberry/schema_directives.py,sha256=KGKFWCODjm1Ah9qNV_bBwbic7Mld4qLWnWQkev-PG8A,175
181
182
  strawberry/static/apollo-sandbox.html,sha256=2XzkbE0dqsFHqehE-jul9_J9TFOpwA6Ylrlo0Kdx_9w,973
182
- strawberry/static/graphiql.html,sha256=BkiqZlC63f1sHBDs_UpMzcibcNrHKh7K41Sp23yttfo,4257
183
+ strawberry/static/graphiql.html,sha256=0e3pvTnAet-lNEqA_pgJ8Ak2CdMt34zPKMMMzpAkEVU,4257
183
184
  strawberry/static/pathfinder.html,sha256=0DPx9AmJ2C_sJstFXnWOz9k5tVQHeHaK7qdVY4lAlmk,1547
184
185
  strawberry/subscriptions/__init__.py,sha256=1VGmiCzFepqRFyCikagkUoHHdoTG3XYlFu9GafoQMws,170
185
186
  strawberry/subscriptions/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -209,12 +210,12 @@ strawberry/types/info.py,sha256=bPP7XTQQScmskJcmVv36iqLAWpdGmF2nhYjI1pJ-csI,4709
209
210
  strawberry/types/lazy_type.py,sha256=ILLDSbFpsg6u1FBztrI1OumRFCJ2182-7FR9oZeJgks,5077
210
211
  strawberry/types/mutation.py,sha256=cg-_O2WWnZ-GSwOIv0toSdxlGeY2lhBBxZ24AifJuSM,11978
211
212
  strawberry/types/nodes.py,sha256=RwZB43OT9BS3Cqjgq4AazqOfyq_y0GD2ysC86EDBv5U,5134
212
- strawberry/types/object_type.py,sha256=tIKz_jYLzB8kmkgs2R71O4un_DRERrItkLS4oRrjxyo,15574
213
+ strawberry/types/object_type.py,sha256=CW-detiYjGmk4kHJP-vUK9sBkBuDic4nswDub4zUyvc,15075
213
214
  strawberry/types/private.py,sha256=DhJs50XVGtOXlxWZFkRpMxQ5_6oki0-x_WQsV1bGUxk,518
214
215
  strawberry/types/scalar.py,sha256=CM24Ixg4DKxxI1C6hTNGYVitohJibs8BpGtntRZvMXw,6284
215
216
  strawberry/types/type_resolver.py,sha256=4jaRh5MntX7wcBY8ksK-ZE3849K46Mwsswc4ebFCQWI,6545
216
217
  strawberry/types/union.py,sha256=3Wk0O9ocMLgiv4fhC9OcS7em3sZP9UaFypmRbz3Ekgg,9960
217
- strawberry/types/unset.py,sha256=YiGWz2gFdEtRQ7E369p3oebmmbCDuOyx_Vg-OQUFBe4,2344
218
+ strawberry/types/unset.py,sha256=7DVK-WWxVLo41agvavTvIbphE42BmY8UpGolXfasIvw,1682
218
219
  strawberry/utils/__init__.py,sha256=wuuNvKjcMfE0l4lqrlC-cc0_SR4hV19gNBJ3Mcn7l3A,141
219
220
  strawberry/utils/aio.py,sha256=Y78UoqWJE_mKJBVSLW1EUM43zV5MWt7yXqlvoktKkoA,1696
220
221
  strawberry/utils/await_maybe.py,sha256=YdjfuzjDVjph0VH0WkwvU4ezsjl_fELnGrLC1_bvb_U,449
@@ -228,8 +229,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
228
229
  strawberry/utils/operation.py,sha256=SSXxN-vMqdHO6W2OZtip-1z7y4_A-eTVFdhDvhKeLCk,1193
229
230
  strawberry/utils/str_converters.py,sha256=-eH1Cl16IO_wrBlsGM-km4IY0IKsjhjnSNGRGOwQjVM,897
230
231
  strawberry/utils/typing.py,sha256=Ux0Hl46lhuXvOKK-C5hj6nlz3zDn8P4CUGH2nUVD2vU,13373
231
- strawberry_graphql-0.262.7.dev1743345593.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
232
- strawberry_graphql-0.262.7.dev1743345593.dist-info/METADATA,sha256=j6KQ3Yc5_EUY2TWqhygqiu6hCMza2GYKT2p5AaQx77g,7693
233
- strawberry_graphql-0.262.7.dev1743345593.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
234
- strawberry_graphql-0.262.7.dev1743345593.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
235
- strawberry_graphql-0.262.7.dev1743345593.dist-info/RECORD,,
232
+ strawberry_graphql-0.263.0.dev1743450281.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
233
+ strawberry_graphql-0.263.0.dev1743450281.dist-info/METADATA,sha256=S4ZcpVZfiSOp0yeSMOPdrA33Ps60uYacOQ4tMFcn_OM,7693
234
+ strawberry_graphql-0.263.0.dev1743450281.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
235
+ strawberry_graphql-0.263.0.dev1743450281.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
236
+ strawberry_graphql-0.263.0.dev1743450281.dist-info/RECORD,,