6
6
import re
7
7
from abc import ABC , abstractmethod
8
8
from math import isfinite
9
- from typing import Any , Dict , Iterable , List , Mapping , Optional , Tuple , Union , cast
9
+ from typing import Any , Dict , Iterable , Mapping , Optional , Tuple , Union , cast
10
10
11
11
from graphql import (
12
12
ArgumentNode ,
61
61
is_wrapping_type ,
62
62
print_ast ,
63
63
)
64
- from graphql .pyutils import FrozenList , inspect
64
+ from graphql .pyutils import inspect
65
65
66
66
from .utils import to_camel_case
67
67
@@ -90,17 +90,17 @@ def ast_from_serialized_value_untyped(serialized: Any) -> Optional[ValueNode]:
90
90
(key , ast_from_serialized_value_untyped (value ))
91
91
for key , value in serialized .items ()
92
92
)
93
- field_nodes = (
93
+ field_nodes = tuple (
94
94
ObjectFieldNode (name = NameNode (value = field_name ), value = field_value )
95
95
for field_name , field_value in field_items
96
96
if field_value
97
97
)
98
- return ObjectValueNode (fields = FrozenList ( field_nodes ) )
98
+ return ObjectValueNode (fields = field_nodes )
99
99
100
100
if isinstance (serialized , Iterable ) and not isinstance (serialized , str ):
101
101
maybe_nodes = (ast_from_serialized_value_untyped (item ) for item in serialized )
102
- nodes = filter ( None , maybe_nodes )
103
- return ListValueNode (values = FrozenList ( nodes ) )
102
+ nodes = tuple ( node for node in maybe_nodes if node )
103
+ return ListValueNode (values = nodes )
104
104
105
105
if isinstance (serialized , bool ):
106
106
return BooleanValueNode (value = serialized )
@@ -158,8 +158,8 @@ def ast_from_value(value: Any, type_: GraphQLInputType) -> Optional[ValueNode]:
158
158
item_type = type_ .of_type
159
159
if isinstance (value , Iterable ) and not isinstance (value , str ):
160
160
maybe_value_nodes = (ast_from_value (item , item_type ) for item in value )
161
- value_nodes = filter ( None , maybe_value_nodes )
162
- return ListValueNode (values = FrozenList ( value_nodes ) )
161
+ value_nodes = tuple ( node for node in maybe_value_nodes if node )
162
+ return ListValueNode (values = value_nodes )
163
163
return ast_from_value (value , item_type )
164
164
165
165
# Populate the fields of the input object by creating ASTs from each value in the
@@ -173,12 +173,12 @@ def ast_from_value(value: Any, type_: GraphQLInputType) -> Optional[ValueNode]:
173
173
for field_name , field in type_ .fields .items ()
174
174
if field_name in value
175
175
)
176
- field_nodes = (
176
+ field_nodes = tuple (
177
177
ObjectFieldNode (name = NameNode (value = field_name ), value = field_value )
178
178
for field_name , field_value in field_items
179
179
if field_value
180
180
)
181
- return ObjectValueNode (fields = FrozenList ( field_nodes ) )
181
+ return ObjectValueNode (fields = field_nodes )
182
182
183
183
if is_leaf_type (type_ ):
184
184
# Since value is an internally represented value, it must be serialized to an
@@ -314,7 +314,7 @@ def __init__(
314
314
self , * fields : "DSLSelectable" , ** fields_with_alias : "DSLSelectableWithAlias" ,
315
315
):
316
316
""":meta private:"""
317
- self .selection_set = SelectionSetNode (selections = FrozenList ([] ))
317
+ self .selection_set = SelectionSetNode (selections = ( ))
318
318
319
319
if fields or fields_with_alias :
320
320
self .select (* fields , ** fields_with_alias )
@@ -355,14 +355,12 @@ def select(
355
355
raise GraphQLError (f"Invalid field for { self !r} : { field !r} " )
356
356
357
357
# Get a list of AST Nodes for each added field
358
- added_selections : List [
359
- Union [FieldNode , InlineFragmentNode , FragmentSpreadNode ]
360
- ] = [ field .ast_field for field in added_fields ]
358
+ added_selections : Tuple [
359
+ Union [FieldNode , InlineFragmentNode , FragmentSpreadNode ], ...
360
+ ] = tuple ( field .ast_field for field in added_fields )
361
361
362
362
# Update the current selection list with new selections
363
- self .selection_set .selections = FrozenList (
364
- self .selection_set .selections + added_selections
365
- )
363
+ self .selection_set .selections = self .selection_set .selections + added_selections
366
364
367
365
log .debug (f"Added fields: { added_fields } in { self !r} " )
368
366
@@ -470,9 +468,7 @@ def executable_ast(self) -> OperationDefinitionNode:
470
468
return OperationDefinitionNode (
471
469
operation = OperationType (self .operation_type ),
472
470
selection_set = self .selection_set ,
473
- variable_definitions = FrozenList (
474
- self .variable_definitions .get_ast_definitions ()
475
- ),
471
+ variable_definitions = self .variable_definitions .get_ast_definitions (),
476
472
** ({"name" : NameNode (value = self .name )} if self .name else {}),
477
473
)
478
474
@@ -548,19 +544,19 @@ def __getattr__(self, name: str) -> "DSLVariable":
548
544
self .variables [name ] = DSLVariable (name )
549
545
return self .variables [name ]
550
546
551
- def get_ast_definitions (self ) -> List [VariableDefinitionNode ]:
547
+ def get_ast_definitions (self ) -> Tuple [VariableDefinitionNode , ... ]:
552
548
"""
553
549
:meta private:
554
550
555
551
Return a list of VariableDefinitionNodes for each variable with a type
556
552
"""
557
- return [
553
+ return tuple (
558
554
VariableDefinitionNode (
559
555
type = var .type , variable = var .ast_variable , default_value = None ,
560
556
)
561
557
for var in self .variables .values ()
562
558
if var .type is not None # only variables used
563
- ]
559
+ )
564
560
565
561
566
562
class DSLType :
@@ -770,7 +766,7 @@ def __init__(
770
766
"""
771
767
self .parent_type = parent_type
772
768
self .field = field
773
- self .ast_field = FieldNode (name = NameNode (value = name ), arguments = FrozenList ())
769
+ self .ast_field = FieldNode (name = NameNode (value = name ), arguments = ())
774
770
775
771
log .debug (f"Creating { self !r} " )
776
772
@@ -803,15 +799,12 @@ def args(self, **kwargs) -> "DSLField":
803
799
804
800
assert self .ast_field .arguments is not None
805
801
806
- self .ast_field .arguments = FrozenList (
807
- self .ast_field .arguments
808
- + [
809
- ArgumentNode (
810
- name = NameNode (value = name ),
811
- value = ast_from_value (value , self ._get_argument (name ).type ),
812
- )
813
- for name , value in kwargs .items ()
814
- ]
802
+ self .ast_field .arguments = self .ast_field .arguments + tuple (
803
+ ArgumentNode (
804
+ name = NameNode (value = name ),
805
+ value = ast_from_value (value , self ._get_argument (name ).type ),
806
+ )
807
+ for name , value in kwargs .items ()
815
808
)
816
809
817
810
log .debug (f"Added arguments { kwargs } in field { self !r} )" )
@@ -856,7 +849,7 @@ class DSLMetaField(DSLField):
856
849
"""
857
850
858
851
meta_type = GraphQLObjectType (
859
- "meta-field " ,
852
+ "meta_field " ,
860
853
fields = {
861
854
"__typename" : GraphQLField (GraphQLString ),
862
855
"__schema" : GraphQLField (
@@ -1022,9 +1015,7 @@ def executable_ast(self) -> FragmentDefinitionNode:
1022
1015
return FragmentDefinitionNode (
1023
1016
type_condition = NamedTypeNode (name = NameNode (value = self ._type .name )),
1024
1017
selection_set = self .selection_set ,
1025
- variable_definitions = FrozenList (
1026
- self .variable_definitions .get_ast_definitions ()
1027
- ),
1018
+ variable_definitions = self .variable_definitions .get_ast_definitions (),
1028
1019
name = NameNode (value = self .name ),
1029
1020
)
1030
1021
0 commit comments