66import re
77from abc import ABC , abstractmethod
88from 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
1010
1111from graphql import (
1212 ArgumentNode ,
6161 is_wrapping_type ,
6262 print_ast ,
6363)
64- from graphql .pyutils import FrozenList , inspect
64+ from graphql .pyutils import inspect
6565
6666from .utils import to_camel_case
6767
@@ -90,17 +90,17 @@ def ast_from_serialized_value_untyped(serialized: Any) -> Optional[ValueNode]:
9090 (key , ast_from_serialized_value_untyped (value ))
9191 for key , value in serialized .items ()
9292 )
93- field_nodes = (
93+ field_nodes = tuple (
9494 ObjectFieldNode (name = NameNode (value = field_name ), value = field_value )
9595 for field_name , field_value in field_items
9696 if field_value
9797 )
98- return ObjectValueNode (fields = FrozenList ( field_nodes ) )
98+ return ObjectValueNode (fields = field_nodes )
9999
100100 if isinstance (serialized , Iterable ) and not isinstance (serialized , str ):
101101 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 )
104104
105105 if isinstance (serialized , bool ):
106106 return BooleanValueNode (value = serialized )
@@ -158,8 +158,8 @@ def ast_from_value(value: Any, type_: GraphQLInputType) -> Optional[ValueNode]:
158158 item_type = type_ .of_type
159159 if isinstance (value , Iterable ) and not isinstance (value , str ):
160160 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 )
163163 return ast_from_value (value , item_type )
164164
165165 # 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]:
173173 for field_name , field in type_ .fields .items ()
174174 if field_name in value
175175 )
176- field_nodes = (
176+ field_nodes = tuple (
177177 ObjectFieldNode (name = NameNode (value = field_name ), value = field_value )
178178 for field_name , field_value in field_items
179179 if field_value
180180 )
181- return ObjectValueNode (fields = FrozenList ( field_nodes ) )
181+ return ObjectValueNode (fields = field_nodes )
182182
183183 if is_leaf_type (type_ ):
184184 # Since value is an internally represented value, it must be serialized to an
@@ -314,7 +314,7 @@ def __init__(
314314 self , * fields : "DSLSelectable" , ** fields_with_alias : "DSLSelectableWithAlias" ,
315315 ):
316316 """:meta private:"""
317- self .selection_set = SelectionSetNode (selections = FrozenList ([] ))
317+ self .selection_set = SelectionSetNode (selections = ( ))
318318
319319 if fields or fields_with_alias :
320320 self .select (* fields , ** fields_with_alias )
@@ -355,14 +355,12 @@ def select(
355355 raise GraphQLError (f"Invalid field for { self !r} : { field !r} " )
356356
357357 # 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 )
361361
362362 # 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
366364
367365 log .debug (f"Added fields: { added_fields } in { self !r} " )
368366
@@ -470,9 +468,7 @@ def executable_ast(self) -> OperationDefinitionNode:
470468 return OperationDefinitionNode (
471469 operation = OperationType (self .operation_type ),
472470 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 (),
476472 ** ({"name" : NameNode (value = self .name )} if self .name else {}),
477473 )
478474
@@ -548,19 +544,19 @@ def __getattr__(self, name: str) -> "DSLVariable":
548544 self .variables [name ] = DSLVariable (name )
549545 return self .variables [name ]
550546
551- def get_ast_definitions (self ) -> List [VariableDefinitionNode ]:
547+ def get_ast_definitions (self ) -> Tuple [VariableDefinitionNode , ... ]:
552548 """
553549 :meta private:
554550
555551 Return a list of VariableDefinitionNodes for each variable with a type
556552 """
557- return [
553+ return tuple (
558554 VariableDefinitionNode (
559555 type = var .type , variable = var .ast_variable , default_value = None ,
560556 )
561557 for var in self .variables .values ()
562558 if var .type is not None # only variables used
563- ]
559+ )
564560
565561
566562class DSLType :
@@ -770,7 +766,7 @@ def __init__(
770766 """
771767 self .parent_type = parent_type
772768 self .field = field
773- self .ast_field = FieldNode (name = NameNode (value = name ), arguments = FrozenList ())
769+ self .ast_field = FieldNode (name = NameNode (value = name ), arguments = ())
774770
775771 log .debug (f"Creating { self !r} " )
776772
@@ -803,15 +799,12 @@ def args(self, **kwargs) -> "DSLField":
803799
804800 assert self .ast_field .arguments is not None
805801
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 ()
815808 )
816809
817810 log .debug (f"Added arguments { kwargs } in field { self !r} )" )
@@ -856,7 +849,7 @@ class DSLMetaField(DSLField):
856849 """
857850
858851 meta_type = GraphQLObjectType (
859- "meta-field " ,
852+ "meta_field " ,
860853 fields = {
861854 "__typename" : GraphQLField (GraphQLString ),
862855 "__schema" : GraphQLField (
@@ -1022,9 +1015,7 @@ def executable_ast(self) -> FragmentDefinitionNode:
10221015 return FragmentDefinitionNode (
10231016 type_condition = NamedTypeNode (name = NameNode (value = self ._type .name )),
10241017 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 (),
10281019 name = NameNode (value = self .name ),
10291020 )
10301021
0 commit comments