File tree Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Original file line number Diff line number Diff line change 1+ """The dataloader uses "select in loading" strategy to load related entities.""" 
2+ from  typing  import  Any 
3+ 
14import  aiodataloader 
25import  sqlalchemy 
36from  sqlalchemy .orm  import  Session , strategies 
47from  sqlalchemy .orm .query  import  QueryContext 
58
6- from  .utils  import  is_sqlalchemy_version_less_than 
9+ from  .utils  import  (is_graphene_version_less_than ,
10+                     is_sqlalchemy_version_less_than )
711
812
9- def  get_batch_resolver (relationship_prop ):
13+ def  get_data_loader_impl () ->  Any :  # pragma: no cover 
14+     """Graphene >= 3.1.1 ships a copy of aiodataloader with minor fixes. To preserve backward-compatibility, 
15+     aiodataloader is used in conjunction with older versions of graphene""" 
16+     if  is_graphene_version_less_than ("3.1.1" ):
17+         from  aiodataloader  import  DataLoader 
18+     else :
19+         from  graphene .utils .dataloader  import  DataLoader 
20+ 
21+     return  DataLoader 
22+ 
1023
24+ DataLoader  =  get_data_loader_impl ()
25+ 
26+ 
27+ def  get_batch_resolver (relationship_prop ):
1128    # Cache this across `batch_load_fn` calls 
1229    # This is so SQL string generation is cached under-the-hood via `bakery` 
1330    selectin_loader  =  strategies .SelectInLoader (relationship_prop , (('lazy' , 'selectin' ),))
Original file line number Diff line number Diff line change @@ -151,11 +151,16 @@ def sort_argument_for_model(cls, has_default=True):
151151    return  Argument (List (enum ), default_value = enum .default )
152152
153153
154- def  is_sqlalchemy_version_less_than (version_string ):
154+ def  is_sqlalchemy_version_less_than (version_string ):   # pragma: no cover 
155155    """Check the installed SQLAlchemy version""" 
156156    return  pkg_resources .get_distribution ('SQLAlchemy' ).parsed_version  <  pkg_resources .parse_version (version_string )
157157
158158
159+ def  is_graphene_version_less_than (version_string ):  # pragma: no cover 
160+     """Check the installed graphene version""" 
161+     return  pkg_resources .get_distribution ('graphene' ).parsed_version  <  pkg_resources .parse_version (version_string )
162+ 
163+ 
159164class  singledispatchbymatchfunction :
160165    """ 
161166    Inspired by @singledispatch, this is a variant that works using a matcher function 
@@ -197,6 +202,7 @@ def safe_isinstance_checker(arg):
197202            return  isinstance (arg , cls )
198203        except  TypeError :
199204            pass 
205+ 
200206    return  safe_isinstance_checker 
201207
202208
@@ -210,5 +216,6 @@ def registry_sqlalchemy_model_from_str(model_name: str) -> Optional[Any]:
210216
211217class  DummyImport :
212218    """The dummy module returns 'object' for a query for any member""" 
219+ 
213220    def  __getattr__ (self , name ):
214221        return  object 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments