22
33from  __future__ import  annotations 
44
5- import  sys 
6- from  typing  import  TYPE_CHECKING , Dict , NamedTuple 
5+ from  typing  import  NamedTuple 
76
87from  ..pyutils  import  RefMap , RefSet 
9- from  .collect_fields  import  DeferUsage , FieldDetails 
10- 
11- if  TYPE_CHECKING :
12-     from  ..language  import  FieldNode 
8+ from  .collect_fields  import  DeferUsage , FieldGroup , GroupedFieldSet 
139
1410try :
1511    from  typing  import  TypeAlias 
1814
1915__all__  =  [
2016    "DeferUsageSet" ,
21-     "FieldGroup" ,
2217    "FieldPlan" ,
2318    "GroupedFieldSet" ,
2419    "build_field_plan" ,
2823DeferUsageSet : TypeAlias  =  RefSet [DeferUsage ]
2924
3025
31- class  FieldGroup (NamedTuple ):
32-     """A group of fields with defer usages.""" 
33- 
34-     fields : list [FieldDetails ]
35-     defer_usages : DeferUsageSet  |  None  =  None 
36- 
37-     def  to_nodes (self ) ->  list [FieldNode ]:
38-         """Return the field nodes in this group.""" 
39-         return  [field_details .node  for  field_details  in  self .fields ]
40- 
41- 
42- if  sys .version_info  <  (3 , 9 ):
43-     GroupedFieldSet : TypeAlias  =  Dict [str , FieldGroup ]
44- else :  # Python >= 3.9 
45-     GroupedFieldSet : TypeAlias  =  dict [str , FieldGroup ]
46- 
47- 
4826class  FieldPlan (NamedTuple ):
4927    """A plan for executing fields.""" 
5028
@@ -53,7 +31,7 @@ class FieldPlan(NamedTuple):
5331
5432
5533def  build_field_plan (
56-     fields :  dict [ str ,  list [ FieldDetails ]] ,
34+     original_grouped_field_set :  GroupedFieldSet ,
5735    parent_defer_usages : DeferUsageSet  |  None  =  None ,
5836) ->  FieldPlan :
5937    """Build a plan for executing fields.""" 
@@ -64,12 +42,12 @@ def build_field_plan(
6442
6543    new_grouped_field_sets : RefMap [DeferUsageSet , GroupedFieldSet ] =  RefMap ()
6644
67-     map_ : dict [str , tuple [DeferUsageSet , list [ FieldDetails ] ]] =  {}
45+     map_ : dict [str , tuple [DeferUsageSet , FieldGroup ]] =  {}
6846
69-     for  response_key , field_details_list  in  fields .items ():
47+     for  response_key , field_group  in  original_grouped_field_set .items ():
7048        defer_usage_set : RefSet [DeferUsage ] =  RefSet ()
7149        in_original_result  =  False 
72-         for  field_details  in  field_details_list :
50+         for  field_details  in  field_group :
7351            defer_usage  =  field_details .defer_usage 
7452            if  defer_usage  is  None :
7553                in_original_result  =  True 
@@ -85,15 +63,11 @@ def build_field_plan(
8563                    ancestor  in  defer_usage_set  for  ancestor  in  defer_usage .ancestors 
8664                )
8765            }
88-         map_ [response_key ] =  (defer_usage_set , field_details_list )
66+         map_ [response_key ] =  (defer_usage_set , field_group )
8967
90-     for  response_key , [defer_usage_set , field_details_list ] in  map_ .items ():
68+     for  response_key , [defer_usage_set , field_group ] in  map_ .items ():
9169        if  defer_usage_set  ==  parent_defer_usages :
92-             field_group  =  grouped_field_set .get (response_key )
93-             if  field_group  is  None :  # pragma: no cover else 
94-                 field_group  =  FieldGroup ([], defer_usage_set )
95-                 grouped_field_set [response_key ] =  field_group 
96-             field_group .fields .extend (field_details_list )
70+             grouped_field_set [response_key ] =  field_group 
9771            continue 
9872
9973        for  (
@@ -107,10 +81,6 @@ def build_field_plan(
10781            new_grouped_field_set  =  {}
10882            new_grouped_field_sets [defer_usage_set ] =  new_grouped_field_set 
10983
110-         field_group  =  new_grouped_field_set .get (response_key )
111-         if  field_group  is  None :  # pragma: no cover else 
112-             field_group  =  FieldGroup ([], defer_usage_set )
113-             new_grouped_field_set [response_key ] =  field_group 
114-         field_group .fields .extend (field_details_list )
84+         new_grouped_field_set [response_key ] =  field_group 
11585
11686    return  FieldPlan (grouped_field_set , new_grouped_field_sets )
0 commit comments