strawberry-graphql 0.275.2__py3-none-any.whl → 0.276.0.dev1750672223__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 +2 -0
- strawberry/annotation.py +7 -0
- strawberry/http/__init__.py +14 -9
- strawberry/http/async_base_view.py +81 -5
- strawberry/printer/printer.py +10 -2
- strawberry/schema/_graphql_core.py +46 -0
- strawberry/schema/config.py +1 -0
- strawberry/schema/schema.py +47 -7
- strawberry/static/graphiql.html +5 -5
- strawberry/streamable.py +36 -0
- {strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/METADATA +1 -1
- {strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/RECORD +15 -13
- {strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/LICENSE +0 -0
- {strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/WHEEL +0 -0
- {strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/entry_points.txt +0 -0
strawberry/__init__.py
CHANGED
@@ -11,6 +11,7 @@ from .permission import BasePermission
|
|
11
11
|
from .scalars import ID
|
12
12
|
from .schema import Schema
|
13
13
|
from .schema_directive import schema_directive
|
14
|
+
from .streamable import Streamable
|
14
15
|
from .types.arguments import argument
|
15
16
|
from .types.auto import auto
|
16
17
|
from .types.cast import cast
|
@@ -37,6 +38,7 @@ __all__ = [
|
|
37
38
|
"Private",
|
38
39
|
"Schema",
|
39
40
|
"Some",
|
41
|
+
"Streamable",
|
40
42
|
"argument",
|
41
43
|
"asdict",
|
42
44
|
"auto",
|
strawberry/annotation.py
CHANGED
@@ -17,6 +17,7 @@ from typing import (
|
|
17
17
|
)
|
18
18
|
from typing_extensions import Self, get_args, get_origin
|
19
19
|
|
20
|
+
from strawberry.streamable import StrawberryStreamable
|
20
21
|
from strawberry.types.base import (
|
21
22
|
StrawberryList,
|
22
23
|
StrawberryMaybe,
|
@@ -143,6 +144,8 @@ class StrawberryAnnotation:
|
|
143
144
|
|
144
145
|
if self._is_lazy_type(evaled_type):
|
145
146
|
return evaled_type
|
147
|
+
if self._is_streamable(evaled_type, args):
|
148
|
+
return self.create_list(list[evaled_type])
|
146
149
|
if self._is_list(evaled_type):
|
147
150
|
return self.create_list(evaled_type)
|
148
151
|
if self._is_maybe(evaled_type):
|
@@ -332,6 +335,10 @@ class StrawberryAnnotation:
|
|
332
335
|
def _is_maybe(cls, annotation: Any) -> bool:
|
333
336
|
return _annotation_is_maybe(annotation)
|
334
337
|
|
338
|
+
@classmethod
|
339
|
+
def _is_streamable(cls, annotation: Any, args: list[Any]) -> bool:
|
340
|
+
return any(isinstance(arg, StrawberryStreamable) for arg in args)
|
341
|
+
|
335
342
|
@classmethod
|
336
343
|
def _is_strawberry_type(cls, evaled_type: Any) -> bool:
|
337
344
|
# Prevent import cycles
|
strawberry/http/__init__.py
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from dataclasses import dataclass
|
4
|
-
from typing import
|
4
|
+
from typing import Any, Optional
|
5
5
|
from typing_extensions import Literal, TypedDict
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
from strawberry.schema._graphql_core import (
|
8
|
+
GraphQLIncrementalExecutionResults,
|
9
|
+
ResultType,
|
10
|
+
)
|
9
11
|
|
10
12
|
|
11
13
|
class GraphQLHTTPResponse(TypedDict, total=False):
|
@@ -14,13 +16,16 @@ class GraphQLHTTPResponse(TypedDict, total=False):
|
|
14
16
|
extensions: Optional[dict[str, object]]
|
15
17
|
|
16
18
|
|
17
|
-
def process_result(result:
|
18
|
-
|
19
|
+
def process_result(result: ResultType) -> GraphQLHTTPResponse:
|
20
|
+
if isinstance(result, GraphQLIncrementalExecutionResults):
|
21
|
+
return result
|
19
22
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
errors, extensions = result.errors, result.extensions
|
24
|
+
data: GraphQLHTTPResponse = {
|
25
|
+
"data": result.data,
|
26
|
+
**({"errors": [err.formatted for err in errors]} if errors else {}),
|
27
|
+
**({"extensions": extensions} if extensions else {}),
|
28
|
+
}
|
24
29
|
|
25
30
|
return data
|
26
31
|
|
@@ -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 (
|
30
33
|
CannotGetOperationTypeError,
|
@@ -263,7 +266,7 @@ class AsyncBaseHTTPView(
|
|
263
266
|
root_value: Optional[RootValue] = UNSET,
|
264
267
|
) -> WebSocketResponse: ...
|
265
268
|
|
266
|
-
async def run(
|
269
|
+
async def run( # noqa: PLR0915
|
267
270
|
self,
|
268
271
|
request: Union[Request, WebSocketRequest],
|
269
272
|
context: Context = UNSET,
|
@@ -354,6 +357,75 @@ class AsyncBaseHTTPView(
|
|
354
357
|
"Content-Type": "multipart/mixed;boundary=graphql;subscriptionSpec=1.0,application/json",
|
355
358
|
},
|
356
359
|
)
|
360
|
+
if isinstance(result, GraphQLIncrementalExecutionResults):
|
361
|
+
|
362
|
+
async def stream() -> AsyncGenerator[str, None]:
|
363
|
+
yield "---"
|
364
|
+
|
365
|
+
response = await self.process_result(request, result.initial_result)
|
366
|
+
|
367
|
+
response["hasNext"] = result.initial_result.has_next
|
368
|
+
response["pending"] = [
|
369
|
+
p.formatted for p in result.initial_result.pending
|
370
|
+
]
|
371
|
+
response["extensions"] = result.initial_result.extensions
|
372
|
+
|
373
|
+
yield self.encode_multipart_data(response, "-")
|
374
|
+
|
375
|
+
all_pending = result.initial_result.pending
|
376
|
+
|
377
|
+
async for value in result.subsequent_results:
|
378
|
+
response = {
|
379
|
+
"hasNext": value.has_next,
|
380
|
+
"extensions": value.extensions,
|
381
|
+
}
|
382
|
+
|
383
|
+
if value.pending:
|
384
|
+
response["pending"] = [p.formatted for p in value.pending]
|
385
|
+
|
386
|
+
if value.completed:
|
387
|
+
response["completed"] = [p.formatted for p in value.completed]
|
388
|
+
|
389
|
+
if value.incremental:
|
390
|
+
incremental = []
|
391
|
+
|
392
|
+
all_pending.extend(value.pending)
|
393
|
+
|
394
|
+
for incremental_value in value.incremental:
|
395
|
+
pending_value = next(
|
396
|
+
(
|
397
|
+
v
|
398
|
+
for v in all_pending
|
399
|
+
if v.id == incremental_value.id
|
400
|
+
),
|
401
|
+
None,
|
402
|
+
)
|
403
|
+
|
404
|
+
assert pending_value
|
405
|
+
|
406
|
+
incremental.append(
|
407
|
+
{
|
408
|
+
**incremental_value.formatted,
|
409
|
+
"path": pending_value.path,
|
410
|
+
"label": pending_value.label,
|
411
|
+
}
|
412
|
+
)
|
413
|
+
|
414
|
+
response["incremental"] = incremental
|
415
|
+
|
416
|
+
yield self.encode_multipart_data(response, "-")
|
417
|
+
|
418
|
+
yield "--\r\n"
|
419
|
+
|
420
|
+
return await self.create_streaming_response(
|
421
|
+
request,
|
422
|
+
stream,
|
423
|
+
sub_response,
|
424
|
+
headers={
|
425
|
+
"Transfer-Encoding": "chunked",
|
426
|
+
"Content-Type": 'multipart/mixed; boundary="-"',
|
427
|
+
},
|
428
|
+
)
|
357
429
|
|
358
430
|
response_data = await self.process_result(request=request, result=result)
|
359
431
|
|
@@ -365,12 +437,16 @@ class AsyncBaseHTTPView(
|
|
365
437
|
)
|
366
438
|
|
367
439
|
def encode_multipart_data(self, data: Any, separator: str) -> str:
|
440
|
+
encoded_data = self.encode_json(data)
|
441
|
+
|
368
442
|
return "".join(
|
369
443
|
[
|
370
|
-
|
371
|
-
"Content-Type: application/json\r\n
|
372
|
-
|
373
|
-
"\n",
|
444
|
+
"\r\n",
|
445
|
+
"Content-Type: application/json; charset=utf-8\r\n",
|
446
|
+
"Content-Length: " + str(len(encoded_data)) + "\r\n",
|
447
|
+
"\r\n",
|
448
|
+
encoded_data,
|
449
|
+
f"\r\n--{separator}",
|
374
450
|
]
|
375
451
|
)
|
376
452
|
|
strawberry/printer/printer.py
CHANGED
@@ -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
|
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
|
):
|
@@ -621,6 +621,14 @@ def print_schema(schema: BaseSchema) -> str:
|
|
621
621
|
if (printed_directive := print_directive(directive, schema=schema)) is not None
|
622
622
|
]
|
623
623
|
|
624
|
+
if schema.config.enable_experimental_incremental_execution:
|
625
|
+
directives.append(
|
626
|
+
"directive @defer(if: Boolean, label: String) on FRAGMENT_SPREAD | INLINE_FRAGMENT"
|
627
|
+
)
|
628
|
+
directives.append(
|
629
|
+
"directive @stream(if: Boolean, label: String, initialCount: Int = 0) on FIELD"
|
630
|
+
)
|
631
|
+
|
624
632
|
def _name_getter(type_: Any) -> str:
|
625
633
|
if hasattr(type_, "name"):
|
626
634
|
return type_.name
|
@@ -0,0 +1,46 @@
|
|
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
|
+
GraphQLIncrementalExecutionResults = type(None)
|
26
|
+
|
27
|
+
incremental_execution_directives = []
|
28
|
+
experimental_execute_incrementally = None
|
29
|
+
|
30
|
+
|
31
|
+
# TODO: give this a better name, maybe also a better place
|
32
|
+
ResultType = Union[
|
33
|
+
GraphQLExecutionResult,
|
34
|
+
GraphQLIncrementalExecutionResults,
|
35
|
+
ExecutionResult,
|
36
|
+
]
|
37
|
+
|
38
|
+
__all__ = [
|
39
|
+
"GraphQLExecutionContext",
|
40
|
+
"GraphQLIncrementalExecutionResults",
|
41
|
+
"ResultType",
|
42
|
+
"execute",
|
43
|
+
"experimental_execute_incrementally",
|
44
|
+
"incremental_execution_directives",
|
45
|
+
"subscribe",
|
46
|
+
]
|
strawberry/schema/config.py
CHANGED
@@ -17,6 +17,7 @@ class StrawberryConfig:
|
|
17
17
|
relay_use_legacy_global_id: bool = False
|
18
18
|
disable_field_suggestions: bool = False
|
19
19
|
info_class: type[Info] = Info
|
20
|
+
enable_experimental_incremental_execution: bool = False
|
20
21
|
_unsafe_disable_same_type_validation: bool = False
|
21
22
|
|
22
23
|
def __post_init__(
|
strawberry/schema/schema.py
CHANGED
@@ -15,7 +15,6 @@ from typing import (
|
|
15
15
|
cast,
|
16
16
|
)
|
17
17
|
|
18
|
-
from graphql import ExecutionContext as GraphQLExecutionContext
|
19
18
|
from graphql import ExecutionResult as GraphQLExecutionResult
|
20
19
|
from graphql import (
|
21
20
|
ExecutionResult as OriginalExecutionResult,
|
@@ -36,7 +35,6 @@ from graphql import (
|
|
36
35
|
parse,
|
37
36
|
validate_schema,
|
38
37
|
)
|
39
|
-
from graphql.execution import execute, subscribe
|
40
38
|
from graphql.execution.middleware import MiddlewareManager
|
41
39
|
from graphql.type.directives import specified_directives
|
42
40
|
from graphql.validation import validate
|
@@ -69,6 +67,15 @@ from strawberry.utils.aio import aclosing
|
|
69
67
|
from strawberry.utils.await_maybe import await_maybe
|
70
68
|
|
71
69
|
from . import compat
|
70
|
+
from ._graphql_core import (
|
71
|
+
GraphQLExecutionContext,
|
72
|
+
GraphQLIncrementalExecutionResults,
|
73
|
+
ResultType,
|
74
|
+
execute,
|
75
|
+
experimental_execute_incrementally,
|
76
|
+
incremental_execution_directives,
|
77
|
+
subscribe,
|
78
|
+
)
|
72
79
|
from .base import BaseSchema
|
73
80
|
from .config import StrawberryConfig
|
74
81
|
from .exceptions import CannotGetOperationTypeError, InvalidOperationTypeError
|
@@ -99,6 +106,7 @@ OriginSubscriptionResult = Union[
|
|
99
106
|
AsyncIterator[OriginalExecutionResult],
|
100
107
|
]
|
101
108
|
|
109
|
+
|
102
110
|
DEFAULT_ALLOWED_OPERATION_TYPES = {
|
103
111
|
OperationType.QUERY,
|
104
112
|
OperationType.MUTATION,
|
@@ -321,11 +329,16 @@ class Schema(BaseSchema):
|
|
321
329
|
graphql_types.append(graphql_type)
|
322
330
|
|
323
331
|
try:
|
332
|
+
directives = specified_directives + tuple(graphql_directives)
|
333
|
+
|
334
|
+
if self.config.enable_experimental_incremental_execution:
|
335
|
+
directives = tuple(directives) + tuple(incremental_execution_directives)
|
336
|
+
|
324
337
|
self._schema = GraphQLSchema(
|
325
338
|
query=query_type,
|
326
339
|
mutation=mutation_type,
|
327
340
|
subscription=subscription_type if subscription else None,
|
328
|
-
directives=
|
341
|
+
directives=directives,
|
329
342
|
types=graphql_types,
|
330
343
|
extensions={
|
331
344
|
GraphQLCoreConverter.DEFINITION_BACKREF: self,
|
@@ -518,12 +531,16 @@ class Schema(BaseSchema):
|
|
518
531
|
async def _handle_execution_result(
|
519
532
|
self,
|
520
533
|
context: ExecutionContext,
|
521
|
-
result:
|
534
|
+
result: ResultType,
|
522
535
|
extensions_runner: SchemaExtensionsRunner,
|
523
536
|
*,
|
524
537
|
# TODO: can we remove this somehow, see comment in execute
|
525
538
|
skip_process_errors: bool = False,
|
526
539
|
) -> ExecutionResult:
|
540
|
+
# TODO: handle this, also, why do we have both GraphQLExecutionResult and ExecutionResult?
|
541
|
+
if isinstance(result, GraphQLIncrementalExecutionResults):
|
542
|
+
return result
|
543
|
+
|
527
544
|
# Set errors on the context so that it's easier
|
528
545
|
# to access in extensions
|
529
546
|
if result.errors:
|
@@ -566,6 +583,17 @@ class Schema(BaseSchema):
|
|
566
583
|
extensions_runner = self.create_extensions_runner(execution_context, extensions)
|
567
584
|
middleware_manager = self._get_middleware_manager(extensions)
|
568
585
|
|
586
|
+
execute_function = execute
|
587
|
+
|
588
|
+
if self.config.enable_experimental_incremental_execution:
|
589
|
+
execute_function = experimental_execute_incrementally
|
590
|
+
|
591
|
+
if execute_function is None:
|
592
|
+
raise RuntimeError(
|
593
|
+
"Incremental execution is enabled but experimental_execute_incrementally is not available, "
|
594
|
+
"please install graphql-core>=3.3.0"
|
595
|
+
)
|
596
|
+
|
569
597
|
custom_context_kwargs = self._get_custom_context_kwargs(operation_extensions)
|
570
598
|
|
571
599
|
try:
|
@@ -586,7 +614,7 @@ class Schema(BaseSchema):
|
|
586
614
|
async with extensions_runner.executing():
|
587
615
|
if not execution_context.result:
|
588
616
|
result = await await_maybe(
|
589
|
-
|
617
|
+
execute_function(
|
590
618
|
self._schema,
|
591
619
|
execution_context.graphql_document,
|
592
620
|
root_value=execution_context.root_value,
|
@@ -603,7 +631,9 @@ class Schema(BaseSchema):
|
|
603
631
|
result = execution_context.result
|
604
632
|
# Also set errors on the execution_context so that it's easier
|
605
633
|
# to access in extensions
|
606
|
-
|
634
|
+
|
635
|
+
# TODO: maybe here use the first result from incremental execution if it exists
|
636
|
+
if isinstance(result, GraphQLExecutionResult) and result.errors:
|
607
637
|
execution_context.errors = result.errors
|
608
638
|
|
609
639
|
# Run the `Schema.process_errors` function here before
|
@@ -659,6 +689,16 @@ class Schema(BaseSchema):
|
|
659
689
|
extensions_runner = self.create_extensions_runner(execution_context, extensions)
|
660
690
|
middleware_manager = self._get_middleware_manager(extensions)
|
661
691
|
|
692
|
+
execute_function = execute
|
693
|
+
|
694
|
+
if self.config.enable_experimental_incremental_execution:
|
695
|
+
execute_function = experimental_execute_incrementally
|
696
|
+
|
697
|
+
if execute_function is None:
|
698
|
+
raise RuntimeError(
|
699
|
+
"Incremental execution is enabled but experimental_execute_incrementally is not available, "
|
700
|
+
"please install graphql-core>=3.3.0"
|
701
|
+
)
|
662
702
|
custom_context_kwargs = self._get_custom_context_kwargs(operation_extensions)
|
663
703
|
|
664
704
|
try:
|
@@ -709,7 +749,7 @@ class Schema(BaseSchema):
|
|
709
749
|
|
710
750
|
with extensions_runner.executing():
|
711
751
|
if not execution_context.result:
|
712
|
-
result =
|
752
|
+
result = execute_function(
|
713
753
|
self._schema,
|
714
754
|
execution_context.graphql_document,
|
715
755
|
root_value=execution_context.root_value,
|
strawberry/static/graphiql.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<!
|
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.
|
65
|
-
integrity="sha384-
|
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.
|
81
|
-
integrity="sha384-
|
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
|
strawberry/streamable.py
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
from collections.abc import AsyncGenerator
|
2
|
+
from typing import Annotated, TypeVar
|
3
|
+
|
4
|
+
|
5
|
+
class StrawberryStreamable: ...
|
6
|
+
|
7
|
+
|
8
|
+
T = TypeVar("T")
|
9
|
+
|
10
|
+
Streamable = Annotated[AsyncGenerator[T, None], StrawberryStreamable()]
|
11
|
+
"""Represents a list that can be streamed using @stream.
|
12
|
+
|
13
|
+
Example:
|
14
|
+
|
15
|
+
```python
|
16
|
+
import strawberry
|
17
|
+
from dataclasses import dataclass
|
18
|
+
|
19
|
+
|
20
|
+
@strawberry.type
|
21
|
+
class Comment:
|
22
|
+
id: strawberry.ID
|
23
|
+
content: str
|
24
|
+
|
25
|
+
|
26
|
+
@strawberry.type
|
27
|
+
class Article:
|
28
|
+
@strawberry.field
|
29
|
+
@staticmethod
|
30
|
+
async def comments() -> strawberry.Streamable[Comment]:
|
31
|
+
for comment in fetch_comments():
|
32
|
+
yield comment
|
33
|
+
```
|
34
|
+
"""
|
35
|
+
|
36
|
+
__all__ = ["Streamable"]
|
{strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/RECORD
RENAMED
@@ -1,10 +1,10 @@
|
|
1
|
-
strawberry/__init__.py,sha256
|
1
|
+
strawberry/__init__.py,sha256=tavG4mNFBNHhGBoFR2T7fhiCQ7P-ITHify10nkKBOJE,1544
|
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=EhsaD0Ms7qhHxGyS0qDbRPKxz3VUaSdsbEZKTniIjaM,7962
|
7
|
-
strawberry/annotation.py,sha256=
|
7
|
+
strawberry/annotation.py,sha256=8TFyLobOmHUgkCFXTMuobNaWNJE6KZ3_2KgU2DGP-o8,14152
|
8
8
|
strawberry/asgi/__init__.py,sha256=psdKl_52LGkxKKbzZlmwNGZ9jz2FLyLSC7fUhys4FqY,8169
|
9
9
|
strawberry/asgi/test/__init__.py,sha256=4xxdUZtIISSOwjrcnmox7AvT4WWjowCm5bUuPdQneMg,71
|
10
10
|
strawberry/asgi/test/client.py,sha256=kp2O5znHWuAB5VVYO8p4XPSTEDDXBSjNz5WHqW0r6GM,1473
|
@@ -134,8 +134,8 @@ strawberry/file_uploads/scalars.py,sha256=NRDeB7j8aotqIkz9r62ISTf4DrxQxEZYUuHsX5
|
|
134
134
|
strawberry/file_uploads/utils.py,sha256=-c6TbqUI-Dkb96hWCrZabh6TL2OabBuQNkCarOqgDm4,1181
|
135
135
|
strawberry/flask/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
136
136
|
strawberry/flask/views.py,sha256=MCvAsNgTZLU8RvTYKWfnLU2w7Wv1ZZpxW9W3TyTZuPY,6355
|
137
|
-
strawberry/http/__init__.py,sha256=
|
138
|
-
strawberry/http/async_base_view.py,sha256=
|
137
|
+
strawberry/http/__init__.py,sha256=7UNbLWnBt0RXAjhDUIxtacRUeXiz93JNzqK3m8MRg1A,1316
|
138
|
+
strawberry/http/async_base_view.py,sha256=gG__wXCQnZUIBP0ErkQm1pzXNZToA69BP0pmblOZcVc,22923
|
139
139
|
strawberry/http/base.py,sha256=MiX0-RqOkhRvlfpmuvgTHp4tygbUmG8fnLc0uCrOllU,2550
|
140
140
|
strawberry/http/exceptions.py,sha256=9E2dreS1crRoJVUEPuHyx23NcDELDHNzkAOa-rGv-8I,348
|
141
141
|
strawberry/http/ides.py,sha256=WjU0nsMDgr3Bd1ebWkUEkO2d1hk0dI16mLqXyCHqklA,613
|
@@ -150,7 +150,7 @@ strawberry/parent.py,sha256=JYFp-HGCgwbH2oB4uLSiIO4cVsoPaxX6lfYmxOKPkSg,1362
|
|
150
150
|
strawberry/permission.py,sha256=dSRJMjSCmTlXfvfC24kCSrAk0txTjYKTJ5ZVU5IW91Y,7537
|
151
151
|
strawberry/printer/__init__.py,sha256=DmepjmgtkdF5RxK_7yC6qUyRWn56U-9qeZMbkztYB9w,62
|
152
152
|
strawberry/printer/ast_from_value.py,sha256=Tkme60qlykbN2m3dNPNMOe65X-wj6EmcDQwgQv7gUkc,4987
|
153
|
-
strawberry/printer/printer.py,sha256=
|
153
|
+
strawberry/printer/printer.py,sha256=5E9w0wDsUv1hvkeXof12277NLMiCVy5MgJ6gSo_NJhQ,19177
|
154
154
|
strawberry/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
155
155
|
strawberry/quart/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
156
156
|
strawberry/quart/views.py,sha256=f41HWnkGPuhs1NkjwHOZ0DEVnlr5nMSMr9GCxNsBxCs,7461
|
@@ -166,12 +166,13 @@ strawberry/sanic/utils.py,sha256=XjUVBFuBWfECBCZbx_YtrjQnFTUyIGTo7aISIeB22Gc,100
|
|
166
166
|
strawberry/sanic/views.py,sha256=F5ZrKt-R3135evKLfhQuPd1isOexI0Lrzevm_6Te4Eg,7069
|
167
167
|
strawberry/scalars.py,sha256=CGkG8CIfurXiYhidmW3qwy6M5BF_Mhih3wAEcWx_iBU,2278
|
168
168
|
strawberry/schema/__init__.py,sha256=u1QCyDVQExUVDA20kyosKPz3TS5HMCN2NrXclhiFAL4,92
|
169
|
+
strawberry/schema/_graphql_core.py,sha256=XHsNZLkCyiH55jANK4XJIjq6VCMhN_MgZBEFWEYj5Jc,1237
|
169
170
|
strawberry/schema/base.py,sha256=wqvEOQ_aVkfebk9SlG9zg1YXl3MlwxGZhxFRoIkAxu0,4053
|
170
171
|
strawberry/schema/compat.py,sha256=xNpOEDfi-MODpplMGaKuKeQIVcr-tcAaKaU3TlBc1Zs,1873
|
171
|
-
strawberry/schema/config.py,sha256=
|
172
|
+
strawberry/schema/config.py,sha256=EQhyuKcQTOga_1Uw3nhu5SlS6lVbgsG1YZ3LOKqeztQ,1084
|
172
173
|
strawberry/schema/exceptions.py,sha256=8gsMxxFDynMvRkUDuVL9Wwxk_zsmo6QoJ2l4NPxd64M,1137
|
173
174
|
strawberry/schema/name_converter.py,sha256=xFOXEgqldFkxXRkIQvsJN1dPkWbEUaIrTYNOMYSEVwQ,6945
|
174
|
-
strawberry/schema/schema.py,sha256
|
175
|
+
strawberry/schema/schema.py,sha256=KD_iqYYLYb10xAXo5yn83gtYyg1NbnV1QB5q6JUUs2k,39450
|
175
176
|
strawberry/schema/schema_converter.py,sha256=nCQXylHCwWDXW3sRRlZrAaLyCna4iIj3GAy2sBp-VEA,39267
|
176
177
|
strawberry/schema/types/__init__.py,sha256=oHO3COWhL3L1KLYCJNY1XFf5xt2GGtHiMC-UaYbFfnA,68
|
177
178
|
strawberry/schema/types/base_scalars.py,sha256=JRUq0WjEkR9dFewstZnqnZKp0uOEipo4UXNF5dzRf4M,1971
|
@@ -183,8 +184,9 @@ strawberry/schema_codegen/__init__.py,sha256=mN4Qmu5Iakht6nHpRpt9hCs8e--oTPlVtDJ
|
|
183
184
|
strawberry/schema_directive.py,sha256=CbjdX54EIeWGkJu4SgiLR8mph5_8wyNsgJk2oLoQK_0,2023
|
184
185
|
strawberry/schema_directives.py,sha256=KGKFWCODjm1Ah9qNV_bBwbic7Mld4qLWnWQkev-PG8A,175
|
185
186
|
strawberry/static/apollo-sandbox.html,sha256=2XzkbE0dqsFHqehE-jul9_J9TFOpwA6Ylrlo0Kdx_9w,973
|
186
|
-
strawberry/static/graphiql.html,sha256=
|
187
|
+
strawberry/static/graphiql.html,sha256=0e3pvTnAet-lNEqA_pgJ8Ak2CdMt34zPKMMMzpAkEVU,4257
|
187
188
|
strawberry/static/pathfinder.html,sha256=0DPx9AmJ2C_sJstFXnWOz9k5tVQHeHaK7qdVY4lAlmk,1547
|
189
|
+
strawberry/streamable.py,sha256=ylfMt5lfX7RRKGi86wWokvIgYQk5jZCvQVc3shK0epk,645
|
188
190
|
strawberry/subscriptions/__init__.py,sha256=1VGmiCzFepqRFyCikagkUoHHdoTG3XYlFu9GafoQMws,170
|
189
191
|
strawberry/subscriptions/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
190
192
|
strawberry/subscriptions/protocols/graphql_transport_ws/__init__.py,sha256=wN6dkMu6WiaIZTE19PGoN9xXpIN_RdDE_q7F7ZgjCxk,138
|
@@ -234,8 +236,8 @@ strawberry/utils/logging.py,sha256=U1cseHGquN09YFhFmRkiphfASKCyK0HUZREImPgVb0c,7
|
|
234
236
|
strawberry/utils/operation.py,sha256=ZgVOw3K2jQuLjNOYUHauF7itJD0QDNoPw9PBi0IYf6k,1234
|
235
237
|
strawberry/utils/str_converters.py,sha256=-eH1Cl16IO_wrBlsGM-km4IY0IKsjhjnSNGRGOwQjVM,897
|
236
238
|
strawberry/utils/typing.py,sha256=SDvX-Du-9HAV3-XXjqi7Q5f5qPDDFd_gASIITiwBQT4,14073
|
237
|
-
strawberry_graphql-0.
|
238
|
-
strawberry_graphql-0.
|
239
|
-
strawberry_graphql-0.
|
240
|
-
strawberry_graphql-0.
|
241
|
-
strawberry_graphql-0.
|
239
|
+
strawberry_graphql-0.276.0.dev1750672223.dist-info/LICENSE,sha256=m-XnIVUKqlG_AWnfi9NReh9JfKhYOB-gJfKE45WM1W8,1072
|
240
|
+
strawberry_graphql-0.276.0.dev1750672223.dist-info/METADATA,sha256=Cind85QEFeU7F2ZOzxU6EWl8h9VxDCevpQ0XyFTcTVQ,7407
|
241
|
+
strawberry_graphql-0.276.0.dev1750672223.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
242
|
+
strawberry_graphql-0.276.0.dev1750672223.dist-info/entry_points.txt,sha256=Nk7-aT3_uEwCgyqtHESV9H6Mc31cK-VAvhnQNTzTb4k,49
|
243
|
+
strawberry_graphql-0.276.0.dev1750672223.dist-info/RECORD,,
|
{strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/LICENSE
RENAMED
File without changes
|
{strawberry_graphql-0.275.2.dist-info → strawberry_graphql-0.276.0.dev1750672223.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|