
    -h3                       S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK	Jr  SSK	Jr  SSKJr  SSKJ r   SSKJ!r!  SSKJ"r"  SSKJ#r#  SSKJr$  SSKJ%r%  SSKJ&r&  SS KJ'r'  SSKJr  SSK'Jr(  SS!K'J)r)  SS"K*J+r+  SS#K*J,r,        SUS% jr-\R\                  R_                  S$S$S&9 " S' S(\5      5       r0\&Rb                  \R\                  R_                  S)S$S&9 " S* S+\5      5       5       r2\&Rb                  \R\                  R_                  S)S,9 " S- S.\25      5       5       r3\&Rb                  \R\                  R_                  S)S)S/9\R\                  R_                  S)S)S)S09\R\                  R_                  S)S19 " S2 S3\5      5       5       5       5       r4 " S4 S5\55      r6 " S6 S7\5      r7\&Rb                  \Rp                  R_                  S)S19 " S8 S9\5      5       5       r9\&Rb                  \Rp                  R_                  S:S;9\Rp                  R_                  SS;9 " S< S=\75      5       5       5       r:\&Rb                  \Rp                  R_                  S)S;9\Rp                  R_                  S>S;9\Rp                  R_                  S?S;9\Rp                  R_                  S@S;9\Rp                  R_                  SAS;9 " SB SC\7\Rv                  5      5       5       5       5       5       5       r< " SD SE\55      r= " SF SG\75      r>\Rp                  R_                  SHS;9 " SI SJ\>5      5       r?\&Rb                  \Rp                  R_                  SKS;9 " SL SM\>5      5       5       r@\&Rb                  \Rp                  R_                  SNS;9\Rp                  R_                  S$S;9 " SO SP\75      5       5       5       rA\&Rb                  \Rp                  R_                  SQS;9 " SR SS\>\Rv                  5      5       5       rBST rCg)VzTsqlalchemy.orm.interfaces.LoaderStrategy
implementations, and related MapperOptions.    )absolute_importN   )
attributes)exc)
interfaces)loading)path_registry)
properties)query)relationships)
unitofwork)util)_DEFER_FOR_STATE)_RAISE_FOR_STATE)_SET_DEFERRED_EXPIRED)_column_descriptions)ORMCompileState)ORMSelectCompileState)QueryContext)LoaderStrategy)StrategizedProperty)_state_session)InstanceState)	_none_set)aliased   )event)inspect)log)sql)visitors)LABEL_STYLE_TABLENAME_PLUS_COL)SelectFc	                 @  ^^^^ / n
U=(       a    U R                   mU(       a&  U R                  (       a  U
R                  [        5        U R                  U R
                  R                  ;   a<  U R
                  R                  U R                     u  mmU
R                  UU4S j5        U(       a  U
R                  [        R                  5        U(       a:  U R                  mT(       a'  U R                  (       a  U
R                  UU4S j5        UR                   H  nXR                  R                  U R                  5      L d  M,  UR                  R                  U R                  5      (       a  MX  [         R"                  " UR$                  U R                  4U TUUU=(       a/    U R                  =(       d    U R&                  [(        R*                  L UUUUU(       + =(       d    U R,                  (       + U R.                  S.U	D6nU
 H  nU" X5        M     GM     g )Nc                 H   > [         R                  " XR                  T40 TD6$ N)orm_util_validator_eventskey)descpropfnoptss     nC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/orm/strategies.py<lambda>%_register_attribute.<locals>.<lambda>I   s!    x99hh &*     c                 4   > [         R                  " U TT5      $ r&   )r   backref_listeners)r*   r+   backrefuselists     r.   r/   r0   W   s    :#?#?'7$r1   )parent_tokenr5   compare_function	useobjecttrackparenttypecallable	callable_active_history
impl_classsend_modified_eventsdoc)r5   single_parentappendsingle_parent_validatorr)   parent
validatorsr   track_cascade_eventsback_populates_effective_sync_backrefself_and_descendants_propsgetclass_manager_attr_has_implr   register_attribute_implclass_	directionr   	ONETOMANYviewonlyr?   )r+   mapperr8   r7   r:   r;   proxy_propertyr<   r=   kwlisten_hooksmr*   hookr4   r,   r-   r5   s                 @@@@r.   _register_attributerX   2   s    L(DLLGT''34xx4;;)));;))$((3D	
 J;;< %%t33" ((88<<HH
 
//00::55 "!1#% && >~~)=)==)#-%)2]%G$--6GHH#$ %D* %T  %5 )r1   )
instrumentdeferredc                   B   ^  \ rS rSrSrSrU 4S jr SS jrS rSr	U =r
$ )UninstrumentedColumnLoader   zRepresent a non-instrumented MapperProperty.

The polymorphic_on argument of mapper() often results in this,
if the argument is against the with_polymorphic selectable.

)columnsc                 b   > [         [        U ]  X5        U R                  R                  U l        g r&   )superr\   __init__parent_propertyr^   selfrC   strategy_key	__class__s      r.   ra   #UninstrumentedColumnLoader.__init__   s&    ($8N++33r1   c                 x    U R                    H*  nU(       a  UR                   U   nUR                  X5        M,     g r&   )r^   _append_dedupe_col_collection)	rd   compile_statequery_entitypathloadoptadaptercolumn_collectionkwargscs	            r.   setup_query&UninstrumentedColumnLoader.setup_query   s1     AOOA&77M r1   c	                     g r&    	rd   contextrk   rl   rm   rR   resultrn   
populatorss	            r.   create_row_processor/UninstrumentedColumnLoader.create_row_processor   s     	r1   r&   )__name__
__module____qualname____firstlineno____doc__	__slots__ra   rr   rz   __static_attributes____classcell__rf   s   @r.   r\   r\      s)     I4 N r1   r\   Tc                   H   ^  \ rS rSrSrSrU 4S jr S	S jrS rS r	Sr
U =r$ )
ColumnLoader   z8Provide loading behavior for a :class:`.ColumnProperty`.)r^   is_compositec                    > [         [        U ]  X5        U R                  R                  U l        [        U R                  S5      U l        g )Ncomposite_class)r`   r   ra   rb   r^   hasattrr   rc   s      r.   ra   ColumnLoader.__init__   s;    lD*6@++33#D$8$8:KLr1   c	                    U R                    HH  n
U(       a-  U(       a  UR                  U
5      n
U
c    g OUR                   U
   n
UR                  X5        MJ     U R                   S   nU(       a  UR                   U   nXU R                  '   g Nr   )r^   adapt_check_presentri   rb   )rd   rj   rk   rl   rm   rn   ro   memoized_populatorscheck_for_adaptrp   rq   fetchs               r.   rr   ColumnLoader.setup_query   s     A"33A6Ay !  *A77M  QOOE*E49D001r1   c                    SU l         U R                  S   R                  nU R                  R                  =(       dg    U R                  S   R
                  =(       dG    UR                  S L=(       a2    UR                  R                  UR                  S 5      U R                  L n[        U R                  USUR                  US9  g )NTr   F)r8   r7   r<   )is_class_levelr^   typerb   r<   primary_keyversion_id_col_columntopropertyrJ   rX   compare_values)rd   rR   coltyper<   s       r.   init_class_attribute!ColumnLoader.init_class_attribute   s    ",,q/&&   // ||A** %%T1 (,,001F1FM''( 	 	  $33)	
r1   c	                    U R                    HT  n	U(       a  UR                   U	   n	UR                  U	S5      n
U
(       d  M4  US   R                  U R                  U
45          g    US   R                  U R                  S45        g )NFquickexpireT)r^   _getterrA   r)   )rd   rw   rk   rl   rm   rR   rx   rn   ry   colgetters              r.   rz   !ColumnLoader.create_row_processor   su     <<Cooc*^^C/Fv7#**DHHf+=>   x ''4(89r1   )r^   r   r   F)r|   r}   r~   r   r   r   ra   rr   r   rz   r   r   r   s   @r.   r   r      s-     C)IM :8
,: :r1   r   )query_expressionc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )ExpressionColumnLoaderi  c                    >^ [         [        U ]  X5        [        R                  " 5       R                  S 5      m[        U4S jU R                  R                   5       5      U l	        g )Nc              3   N   >#    U  H  oR                  T5      (       + v   M     g 7fr&   )compare).0rq   nulls     r.   	<genexpr>2ExpressionColumnLoader.__init__.<locals>.<genexpr>  s!      ,
)EA		$)Es   "%)
r`   r   ra   r    r   labelanyrb   r^   _have_default_expression)rd   rC   re   r   rf   s      @r.   ra   ExpressionColumnLoader.__init__  sQ    $d4VJ
 xxz%(+ ,
)-)=)=)E)E,
 )
%r1   c                 `   S n	U(       a!  SUR                   ;   a  UR                   S   /n	O'U R                  (       a  U R                  R                  n	U	c  g U	 H*  n
U(       a  UR                  U
   n
UR	                  X5        M,     U	S   nU(       a  UR                  U   nXU R                  '   g )N
expressionr   )
local_optsr   rb   r^   ri   )rd   rj   rk   rl   rm   rn   ro   r   rp   r^   rq   r   s               r.   rr   "ExpressionColumnLoader.setup_query  s     |w'9'99)),78G****22G?AOOA&77M 
 
OOE*E49D001r1   c	                 J   U(       a  SUR                   ;   a  UR                   S   /n	U	 HT  n
U(       a  UR                  U
   n
UR                  U
S5      nU(       d  M4  US   R                  U R                  U45          g    US   R                  U R                  S45        g g g )Nr   Fr   r   T)r   r^   r   rA   r)   )rd   rw   rk   rl   rm   rR   rx   rn   ry   r^   r   r   s               r.   rz   +ExpressionColumnLoader.create_row_processor4  s     |w'9'99)),78G!//#.CU36w'..&/AB  8$++TXXt,<= :7r1   c                     SU l         [        U R                  USU R                  S   R                  R
                  SS9  g )NTFr   )r8   r7   accepts_scalar_loader)r   rX   rb   r^   r   r   rd   rR   s     r.   r   +ExpressionColumnLoader.init_class_attributeN  s;    "  !\\!_11@@"'	
r1   )r   r   )
r|   r}   r~   r   ra   rr   rz   r   r   r   r   s   @r.   r   r     s    	
:<>4	
 	
r1   r   )rZ   rY   )rZ   rY   	raiseload)
do_nothingc                   T   ^  \ rS rSrSrSrU 4S jrS rS r SS jr	S r
S	 rS
rU =r$ )DeferredColumnLoaderiZ  zAProvide loading behavior for a deferred :class:`.ColumnProperty`.)r^   groupr   c                 &  > [         [        U ]  X5        [        U R                  S5      (       a  [        S5      eU R                  R                  SS5      U l        U R                  R                  U l	        U R                  R                  U l
        g )Nr   z8Deferred loading for composite types not implemented yetr   F)r`   r   ra   r   rb   NotImplementedErrorstrategy_optsrJ   r   r^   r   rc   s      r.   ra   DeferredColumnLoader.__init__e  sy    "D26H4''):;;%M  ++//UC++33))//
r1   c	           
      P   UR                   (       a  UR                  R                  R                  (       a`  U R                  UR                  R                  R                  ;   a2  U R
                  R                  S5      R                  UUUUUUUU5        g U R                  (       d_  U R                  (       a  U R
                  R                  n	OU R
                  R                  n	US   R                  U R                  U	45        g US   R                  U R                  S45        g )N)rZ   FrY   Tnewr   F)refresh_stater   _compile_options_only_load_propsr)   rb   _get_strategyrz   r   r   _raise_column_loader_deferred_column_loaderrA   )
rd   rw   rk   rl   rm   rR   rx   rn   ry   set_deferred_for_local_states
             r.   rz   )DeferredColumnLoader.create_row_processoro  s    , !!..??GMM::KKK  ..;""	 $$~~((== -
 ((@@ - u$$dhh0L%MNx ''5(9:r1   c           	          SU l         [        U R                  USU R                  S   R                  R
                  U R                  SS9  g )NTFr   )r8   r7   r;   load_on_unexpire)r   rX   rb   r^   r   r   _load_for_stater   s     r.   r   )DeferredColumnLoader.init_class_attribute  sD    "  !\\!_11@@**"	
r1   c	           	         UR                   R                  (       a  U R                  R                  (       d  U(       aM  SUR                  ;   a=  [        U R                  5      R                  U R                  R                  5      (       d]  U(       a?  U R                  (       a.  UR                  R                  SU R                  -  S5      (       d  U(       aC  U R                  U;   a3  U R                  R                  S5      R                  " UUUUUUU40 U	D6  g U R                  (       a  [         XpR                  '   g U R"                  (       d  [$        XpR                  '   g [&        XpR                  '   g )Nundefer_pkszundefer_group_%sFr   )compile_options_render_for_subqueryrb   _renders_in_subqueriesr   setr^   intersectionrC   _should_undefer_in_wildcardr   rJ   r)   r   rr   r   r   r   r   r   )
rd   rj   rk   rl   rm   rn   ro   r   only_load_propsrT   s
             r.   rr    DeferredColumnLoader.setup_query  s'    --BB((?? !W%7%77%22KK;; 
 JJ&&**&3U   DHH$?  ..;k !#    8M 4 458H 4 458H 4 45r1   c                 
   UR                   (       d  [        R                  $ U[        R                  -  (       d  [        R                  $ UR
                  R                  nU R                  (       a{  UR                   Vs/ s Hc  n[        U[        5      (       d  M  [        UR                  [        5      (       d  M;  UR                  U R                  :X  d  MW  UR                   PMe     nnOU R                   /nU Vs/ s H  ofUR                  ;   d  M  UPM     nn[        U5      nUc=  [        R                   " S["        R$                  " U5      < SU R                   < S35      eU R&                  (       a  U R)                  XS5        [*        R,                  " U[.        R0                  " U5      R3                  [4        5      UR                   UUS9 c  [        R6                  " U5      e[        R8                  $ s  snf s  snf )NParent instance zB is not bound to a Session; deferred load operation of attribute '' cannot proceedraise)r   r   )r)   r   
ATTR_EMPTYSQL_OKPASSIVE_NO_RESULTmanagerrR   r   iterate_properties
isinstancer   strategyr   
unmodifiedr   orm_excDetachedInstanceErrorr'   	state_strr   _invoke_raise_loadr   load_on_identr    selectset_label_styler"   ObjectDeletedErrorATTR_WAS_SET)	rd   statepassivelocalparentptoloadkr   sessions	            r.   r   $DeferredColumnLoader._load_for_state  s   yy(((***///mm**:: %777Aa!45  qzz+?@  GGtzz)	 7  F hhZF #<Fq5+;+;&;F< '?// %%e,dhh8  >>##EG< !!

;'772 		 %# 	 ,,U33&&&M =s$   ?G;G;=G;G;=H H c                 8    [         R                  " SU < S35      e)N'z(' is not available due to raiseload=Truesa_excInvalidRequestErrorrd   r   r   lazys       r.   r   'DeferredColumnLoader._invoke_raise_load  s    ((=AC
 	
r1   )r^   r   r   r   r&   )r|   r}   r~   r   r   r   ra   rz   r   rr   r   r   r   r   r   s   @r.   r   r   Z  s:     L/I02;h

* 3Ij0'd
 
r1   r   c                   B    \ rS rSrSrSS jr\R                  4S jrSr	g)LoadDeferredColumnsi  z7serializable loader object used by DeferredColumnLoaderc                     Xl         X l        g r&   r)   r   )rd   r)   r   s      r.   ra   LoadDeferredColumns.__init__  s    "r1   c                     U R                   nUR                  R                  nUR                  U   nU R                  (       a  SnOSnUR                  U5      nUR                  X5      $ )N)rZ   Tr   )r   T)r  r   )r)   r   rR   rI   r   r   r   )rd   r   r   r)   r   r+   re   r   s           r.   __call__LoadDeferredColumns.__call__#  sa    hhmm**!!#&>>L FL%%l3''77r1   r	  Nr   )
r|   r}   r~   r   r   ra   r   PASSIVE_OFFr  r   ru   r1   r.   r  r    s    A# '1&<&< 8r1   r  c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )AbstractRelationshipLoaderi4  z0LoaderStratgies which deal with related objects.)rR   targetr5   entityc                   > [         [        U ]  X5        U R                  R                  U l        U R                  R
                  U l        U R                  R                  U l        U R                  R                  U l        g r&   )r`   r  ra   rb   rR   r  r  r5   rc   s      r.   ra   #AbstractRelationshipLoader.__init__9  s_    ($8N**11**11**11++33r1   )r  rR   r  r5   )	r|   r}   r~   r   r   r   ra   r   r   r   s   @r.   r  r  4  s    :7I4 4r1   r  c                       \ rS rSrSrSrg)DoNothingLoaderiA  zRelationship loader that makes no change to the object's state.

Compared to NoLoader, this loader does not initialize the
collection/attribute to empty/none; the usual default LazyLoader will
take effect.

ru   N)r|   r}   r~   r   r   r   ru   r1   r.   r  r  A  s    r1   r  noload)r  c                   (    \ rS rSrSrSrS rS rSrg)NoLoaderiM  zQProvide loading behavior for a :class:`.RelationshipProperty`
with "lazy=None".

ru   c                 f    SU l         [        U R                  USU R                  R                  S9  g )NT)r8   r:   )r   rX   rb   collection_classr   s     r.   r   NoLoader.init_class_attributeX  s0    "  -->>		
r1   c	                 R   ^  U 4S jn	US   R                  T R                  U	45        g )Nc                    > TR                   (       a"  [        R                  " XTR                  5        g S UTR                  '   g r&   )r5   r   init_state_collectionr)   )r   dict_rowrd   s      r.   invoke_no_load5NoLoader.create_row_processor.<locals>.invoke_no_loadm  s+    ||00txxH"&dhhr1   r   )rA   r)   )
rd   rw   rk   rl   rm   rR   rx   rn   ry   r#  s
   `         r.   rz   NoLoader.create_row_processorb  s&    	' 	5  $((N!;<r1   )r   N)	r|   r}   r~   r   r   r   r   rz   r   ru   r1   r.   r  r  M  s    
 I
=r1   r  r   r   raise_on_sqlbaked_selectc                      ^  \ rS rSrSrSrU 4S jrS rS rS r	S r
SS	 jrS
 r\R                  " S5      S 5       rS rSrU =r$ )
LazyLoaderiv  ztProvide loading behavior for a :class:`.RelationshipProperty`
with "lazy=True", that is loads when first accessed.

)
_lazywhere_rev_lazywhere_lazyload_reverse_option	_order_byuse_getis_aliased_class_bind_to_col_equated_columns_rev_bind_to_col_rev_equated_columns_simple_lazy_clause_raise_always_raise_on_sqlc                 
  > [         [        U ]  X5        U R                  S   S:H  U l        U R                  S   S:H  U l        [        U R                  5      R                  U l        U R                  R                  nUR                  5       u  U l        U l        U l        UR                  SS9u  U l        U l        U l        U R                  R$                  (       aX  [&        R(                  " U R                  R$                  5       Vs/ s H  n[*        R,                  " USS05      PM     snU l        OS U l        U R0                  R3                  SX R                  5        U R                  (       + =(       a_    U R4                  (       + =(       aG    U R                  R6                  S   R9                  U R                  SS	U R:                  R<                  S
9U l        U R>                  (       a  [A        U R                  5       HZ  nXPR:                  R<                  ;   d  M  U R:                  R<                  U    H  nU R                  U   U R                  U'   M!     M\     U R0                  R3                  SU 5        g g s  snf )Nr  r   r&  T)reverse_direction
_orm_adaptz%s lazy loading clause %sr   Fuse_proxiescompare_keysequivalentsz4%s will use Session.get() to optimize instance loads)!r`   r)  ra   r   r5  r6  r   r  r/  rb   _join_conditioncreate_lazy_clauser*  r0  r1  r+  r2  r3  order_byr   to_listsql_util_deep_annotater-  loggerinfor5   _get_clauser   rR   _equivalent_columnsr.  list)rd   rC   re   join_conditionelemr   rq   rf   s          r.   ra   LazyLoader.__init__  s   j$(>!//77B!//7>I ' 4 E E--==
 --/		
O! ---E		
!% (( !LL)=)=)F)FGGD ''|T.BCGDN
 "DN4dOOL %%% LL ''*22 " KK;;	 3  	 <<D112++999![[<<SA373H3H3M--a0 B 3
 KKI4 7s   	#J c           
         SU l         U R                  R                  nU R                  R                  (       a  SnSnOLU R                  R                  [
        R                  Ld  U R                  (       d  U(       a  SnSnOSnSnOS=p4[        U R                  USU R                  U R                  R                  UUS9  g )NTF)r8   r;   r:   r<   _deferred_history)r   rb   _legacy_inactive_history_styler<   rO   r   	MANYTOONEr.  rX   r   r  )rd   rR   rN  r<   rM  s        r.   r   LazyLoader.init_class_attribute  s    "   ?? 	' ..!N %   ***2F2FF<<-!%$)!!&$(!166N  **-->>)/	
r1   c                    ^^ [         R                  " U R                  SS05      nXR                  snm/ mS n[        R
                  " U0 SU05        UU4S jn[        R                  " U0 SU05      nUT4$ )Nr9  Tc                     SU l         g )NF)unique)	bindparams    r.   visit_bindparamFLazyLoader._memoized_attr__simple_lazy_clause.<locals>.visit_bindparam  s
    $Ir1   rT  c                    > U R                   T;   a,  TR                  U R                  TU R                      S 45        g U R                  c)  TR                  U R                  S U R                  45        g g r&   )_identifying_keyrA   r)   callablevalue)rT  bind_to_colparamss    r.   rU  rV    sh    ))[8!#I$>$>? ##+y}}dIOODE ,r1   )rB  rC  r*  r0  r!   traversecloned_traverse)rd   	lazywhere	criterionrU  r[  r\  s       @@r.   "_memoized_attr__simple_lazy_clause-LazyLoader._memoized_attr__simple_lazy_clause  s    ++OOlD1
	 #,->->	;	% 	)R+)GH
	F ,,rK9
	 &  r1   c                    U R                   u  p4Uc-  [        R                  " X4 VVVs/ s H  u  pVouPM	     snnn5      $ U R                  R                  nUR                  5       n	[        R                  " U	5      n
U[        R                  -  (       a  U[        R                  -  n0 nU HQ  u  pVnUbD  U(       a+  U[        R                  -  (       a  UR                  XXb5      nOUR                  XXb5      nX{U'   MS     X;4$ s  snnnf r&   )r4  rB  adapt_criterion_to_nullrb   rC   objr   instance_dictINIT_OKLOAD_AGAINST_COMMITTED#_get_committed_state_attr_by_column_get_state_attr_by_column)rd   r   r   r`  
param_keysr)   identrZ  rR   or!  r\  s               r.   _generate_lazy_clause LazyLoader._generate_lazy_clause  s     $ 8 8	=33D$5CCD  %%,,IIK((+Z'''z)))G!+C w)J)JJ"FFeE #<<eE  3K ",   3 Es   Dc                 @    [         R                  " SU < SU< S35      e)Nr   z ' is not available due to lazy='r   r  s       r.   r   LazyLoader._invoke_raise_load/  s    ((8<dC
 	
r1   c                    UR                   (       dM  U R                  R                  (       d  UR                  (       a  UR                  (       d  [
        R                  $ UR                   (       + nS nU R                  =(       a    U(       + =(       d    UR                  (       + nU[
        R                  -  (       d  U(       a  U[
        R                  -  (       d  U(       a  [
        R                  $ U R                  (       aI  U[
        R                  -  (       d1  U(       a  U[
        R                  -  (       a  U R                  XS5        [!        U5      nU(       de  U[
        R                  -  (       a  [
        R                  $ ["        R$                  " S[&        R(                  " U5      < SU R                   < S35      eU(       Ga-  U R+                  XU5      n[
        R                  U;   a  [
        R                  $ [
        R,                  U;   a  [
        R,                  $ [.        R0                  " U5      (       a  g U R                   UR2                  ;   a(  U[
        R4                  -  (       d  [
        R6                  $ UR9                  U R:                  UUUS9n	U	b  U	[
        R<                  L a  g U	$ U[
        R                  -  (       a  U[
        R                  -  (       d  [
        R                  $ U R?                  UUUUUU5      $ )Nr   r   z> is not bound to a Session; lazy load operation of attribute 'r   )r   lazy_loaded_from) r)   rb   load_on_pending_load_pending
session_idr   r   r.  _extra_criteriar   NON_PERSISTENT_OKr   r5  NO_RAISERELATED_OBJECT_OKr   r   r   r   r'   r   _get_ident_for_use_get	NEVER_SETr   
issupersetdictDEFERRED_HISTORY_LOADr   _identity_lookupr  PASSIVE_CLASS_MISMATCH_emit_lazyload)
rd   r   r   rm   extra_criteriapendingprimary_key_identityr.  r   instances
             r.   r   LazyLoader._load_for_state4  sJ   yy((88++##(((ii-#,,OK$Nw7N7N3N*+++G*6667/// j111 Z999 ##EG< ',,,!333// %%e,dhh8  #'#>#>$  ++/CC!333%%)==!+++##$899 EJJ&*"B"BB!... //$!&	 0 H #z@@@#Oj///!=!==!333"" 
 	
r1   c           
      &   UR                   R                  nU[        R                  -  (       a  UR                  nOUR
                  nUR                  nU R                  R                   Vs/ s H  nU" X&U R                  U   US9PM     sn$ s  snf )Nr   )	r   rR   r   rh  ri  rj  r~  r   r1  )rd   r   r   r   instance_mapperget_attrr!  pks           r.   r{  !LazyLoader._get_ident_for_use_get  s    --..Z666&JJH&@@H

 kk--
- U4#8#8#<gN-
 	
 
s   ,Bzsqlalchemy.orm.strategy_optionsc                   ^ ^ [         R                  R                  mT R                  R	                  5       n[
        R                  " U/UR                  [        [        R                  S9n[        R                  n	U	SUS.-  n	T R                  R                  b0  UR                  T R                   T R                  R                  5      nUR"                  (       + n
U
(       d  U[$        R&                  -  (       a  [         R(                  " SS05      Ul        T R,                  nUR.                  (       d  U(       a  UR0                  (       at  UR2                  T R                     n[5        UR.                  5      nU(       a8  UR0                  (       a'  SnU[6        R8                  " T R                  U5      4-  nXl        O#UR                   R<                  T R                     nU=R>                  SU0-  sl        U(       aP  T R@                  (       a*  U[$        RB                  -  (       d  T RE                  X$S5        [F        RH                  " XX9S9$ T RJ                  (       a  T RJ                  Ul&        U U4S jnU=RN                  UT R                  44-  sl'        T RQ                  X$5      u  nnS	U	0nT R"                  URR                  ;   a(  U[$        RT                  -  (       d  [$        RV                  $ U
(       a:  [         RX                  " [6        RZ                  UR]                  5       5      (       a  g O9[         RX                  " [6        R^                  UR]                  5       5      (       a  g T R@                  (       a*  U[$        RB                  -  (       d  T RE                  X$S5        U4Ul0        URc                  UUUS
9nURe                  5       Rg                  5       Ri                  5       nT Rj                  (       a  U$ [m        U5      nU(       a.  US:  a#  [         Rn                  " ST R                  -  5        US   $ g )N)_raw_columns_propagate_attrs_label_styler   F)_invoke_all_eagers_lazy_loaded_from	autoflush_current_pathr&  )load_optionsc                   > TR                   R                   H  nUR                  [        R                  L d  M"  UR
                  (       d  M5  [        UR                  [        5      (       a  MV  TR                  R                  U R                  R                  UR                     5      R                  U5      R                  U 5        M     g r&   )rb   _reverse_propertyrO   r   rO  _use_getr   r   r)  Loadfor_existing_pathr   r  rC   lazyloadprocess_compile_state)compile_contextrevrd   strategy_optionss     r.   _lazyload_reverse4LazyLoader._emit_lazyload.<locals>._lazyload_reverse  s    ++== MMZ%9%99&s||Z@@$));;'77EEJJ hsm$9$9/$J >r1   _sa_orm_load_options)execution_optionsr   zKMultiple rows returned with uselist=False for lazily-loaded attribute '%s' r   )8r   	preloadedorm_strategy_optionsr  __clause_element__r#   _create_raw_selectr  r"   r   default_compile_optionsr   default_load_optionsrb   	secondaryselect_fromrR   r)   r   NO_AUTOFLUSHimmutabledict_execution_optionsr.  r  rw  	load_pathtupler'   LoaderCriteriaOption_with_options_path_registryr   r6  ry  r   r   load_on_pk_identityr-  _order_by_clauses_with_context_optionsrn  r~  r  r   has_intersectionr   values
_never_set_where_criteriaexecuterS  scalarsallr5   lenwarn)rd   r   r   r  r   rm   r  clauseelementstmtr  r  r.  effective_pathr-   r  lazy_clauser\  r  rx   lr  s   `                   @r.   r  LazyLoader._emit_lazyload  sl     >>>>668(('*;;7,DD	
 $88"'!&
 	

 ))5##T11;;D ii- g
 7 77&*&8&8+u9M&ND#,,'g.E.E"__T-A-ABN++,D72211$++~N  "& #\\889M9MNN/>!BB!!'J4G4G*G''G..3  >>%)^^D"	K 	"" 4 45'
 	
" #88HV #L

 HH

"j>>>***$$X%7%7II J ""8#6#6HHg
0C0C&C##ENC +~&,= ! 
 ((*..0<<MFAq5IIJ../ ay r1   c	                   ^ U R                   mU R                  (       a  U(       a  UR                  (       aq  [        R                  " UR
                  [        TU UUR                  (       a  UR                  U5      OS 5      T5      n	US   R                  U R                   U	45        g UR                  (       d  UR                  (       a'  U4S jn
US   R                  U R                   U
45        g g )Nr   c                 *   > U R                  UT5        g r&   )_reset)r   r!  r"  r)   s      r.   reset_for_lazy_callable@LazyLoader.create_row_processor.<locals>.reset_for_lazy_callableT  s     UC(r1   )r)   r   rw  r   "_instance_level_callable_processorrK   LoadLazyAttribute_generate_extra_criteriarA   populate_existingalways_refresh)rd   rw   rk   rl   rm   rR   rx   rn   ry   set_lazy_callabler  r)   s              @r.   rz   LazyLoader.create_row_processor,  s     hh""w73J3J @@$$!.. 44W= ! u$$dhh0A%BC&&&*?*?	) u$$dhh0G%HI +@r1   )r0  r1  r*  r-  r5  r6  r2  r3  r+  r/  r   r.  Nru   )r|   r}   r~   r   r   r   ra   r   ra  rn  r   r   r{  r   preload_moduler  rz   r   r   r   s   @r.   r)  r)  v  sg    
I 8t 
D!B!@

c
J
 
:;A <AF3J 3Jr1   r)  c                   D    \ rS rSrSrS rS r\R                  4S jr	Sr
g)r  ib  az  semi-serializable loader object used by LazyLoader

Historically, this object would be carried along with instances that
needed to run lazyloaders, so it had to be serializable to support
cached instances.

this is no longer a general requirement, and the case where this object
is used is exactly the case where we can't really serialize easily,
which is when extra criteria in the loader option is present.

We can't reliably serialize that as it refers to mapped entities and
AliasedClass objects that are local to the current process, which would
need to be matched up on deserialize e.g. the sqlalchemy.ext.serializer
approach.

c                 J    Xl         UR                  U l        X0l        X@l        g r&   r)   re   rm   r  )rd   r)   initiating_strategyrm   r  s        r.   ra   LoadLazyAttribute.__init__t  s     /<<,r1   c                     U R                   b  [        R                  " S5        U R                  U R                  U R
                  SS.$ )NzvCan't reliably serialize a lazyload() option that contains additional criteria; please use eager loading for this caseru   r  )r  r   r  r)   re   rm   )rd   s    r.   __getstate__LoadLazyAttribute.__getstate__z  sE    *II  88 --|| 	
 	
r1   c                     U R                   nUR                  R                  nUR                  U   nUR                  U R
                     nUR                  UUU R                  U R                  S9$ )N)rm   r  )	r)   r   rR   rI   _strategiesre   r   rm   r  )rd   r   r   r)   r  r+   r   s          r.   r  LoadLazyAttribute.__call__  sn    hh--..%%c*##D$5$56''LL..	 ( 
 	
r1   )r  r)   rm   re   N)r|   r}   r~   r   r   ra   r  r   r  r  r   ru   r1   r.   r  r  b  s!    "-
 '1&<&< 
r1   r  c                   (    \ rS rSrSrSS jrS rSrg)
PostLoaderi  z;A relationship loader that emits a second SELECT statement.Nc                    UR                   R                  =(       d    [        R                  R                  U-   n[
        R                  R                  XU R                  5      (       a  gX R                     nX@R                     nUR                  UR                  S5      (       d>  U(       a  UR                  S-  U:  a  g gUR                  U R                  5      (       a  gg)NTloaderr   F)rj   current_pathr'   PathRegistryrootr   PostLoadpath_existsrb   containsr   lengthcontains_mapperrR   )rd   rw   rl   
join_depthr  path_w_propeffective_path_w_props          r.   _check_recursive_postload$PostLoader._check_recursive_postload  s    !!..L(2G2G2L2L ''T%9%9
 
 //0 ./C/C D##G$6$6AA(//!3j@ A
  '66t{{CCr1   c	           
      d    U R                   R                  S5      R                  UUUUUUUU5      $ )N))r  	immediate)rb   r   rz   rv   s	            r.   #_immediateload_create_row_processor.PostLoader._immediateload_create_row_processor  sC     ##11$


	
	
r1   ru   r&   )r|   r}   r~   r   r   r  r  r   ru   r1   r.   r  r    s    E,
r1   r  r  c                   $    \ rS rSrSrS rS rSrg)ImmediateLoaderi  ru   c                 X    U R                   R                  S5      R                  U5        g N)r  r   rb   r   r   r   s     r.   r   $ImmediateLoader.init_class_attribute  $    **!	


v
&r1   c	                   ^ ^
 U
U 4S jn	T R                  X5      (       a"  [        R                  [        R                  -  m
O![        R                  [        R                  -  m
US   R                  T R                  U	45        g )Nc                 \   > U R                  TR                  5      R                  XT5        g r&   )get_implr)   rJ   )r   r!  r"  flagsrd   s      r.   load_immediate<ImmediateLoader.create_row_processor.<locals>.load_immediate  s     NN488$((u=r1   delayed)r  r   PASSIVE_NO_FETCH_RELATEDry  r  rA   r)   )rd   rw   rk   rl   rm   rR   rx   rn   ry   r  r   s   `         @r.   rz   $ImmediateLoader.create_row_processor  se    	> ))'88
 77*:M:MME**Z-@-@@E9$$dhh%?@r1   N)r|   r}   r~   r   r   r   rz   r   ru   r1   r.   r  r    s    I'
Ar1   r  subqueryc                      ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 r " S S\5      rS rS rS rS rSrU =r$ )SubqueryLoaderi  )r  c                 b   > [         [        U ]  X5        U R                  R                  U l        g r&   )r`   r  ra   rb   r  rc   s      r.   ra   SubqueryLoader.__init__  s%    nd,VB..99r1   c                 X    U R                   R                  S5      R                  U5        g r  r  r   s     r.   r   #SubqueryLoader.init_class_attribute  r  r1   c                    UnUR                   n[        R                  " US   5      nU R                  R	                  U5      (       a*  U R
                  US   L a  U R                  U R
                  pOXbS   pU(       aj  UR                  U   R                  R                  U   n	[        U5      [        U	5      -
  n
U
(       a%  U	[        R                  R                  X** S  5      -  n	OUn	UR                  nU Vs/ s H=  n[        U	R                   S   R                  UR                   U   R"                  5      PM?     nnX}X4$ s  snf )Nr   r   )rl   r'   _class_to_mapperrC   isarb   	_entitiesentity_zeror  r  r	   r  coercelocal_columnsgetattrr  r   r)   )rd   orig_query_entity_index	subq_pathcurrent_compile_stateis_rootgiven_subq_pathsubq_mapperleftmost_mapperleftmost_propnew_subq_path
additionalleftmost_colsrq   leftmost_attrs                 r.   _get_leftmostSubqueryLoader._get_leftmost  sF    $NN	//	!= KKOOK(($$	!4-1[[$:N:N]-8A,] 2;;'k..8M Y#m*<<J!;!;!B!Bkl+"  ,M%33 #

 #	 ""1%,,11!488 # 	 
 }KK
s   :AEc           	         UR                  5       R                  S 5      n[        R                  R	                  [        R                  5      nUR
                  R                  UR
                  5        UnUR                  (       dG  SUl        UR                  R                  " U/[        X!S9 V	s1 s H  n	U	S   c  M  U	S   iM     sn	Q76   UR                  U V
s/ s H;  n
[        R                  R                  [        R                   R"                  U
5      PM=     sn
UR%                  5       5      nXl        UR(                  nUSL a  SUl        ONUcK  [-        S U 5       5       H5  n[-        U5      R/                  UR0                  5      (       a  M.  SUl          O   UR2                  (       d  SUl        UR*                  SL aK  UR4                  (       a:  [6        R8                  " XR4                  5      nU(       a  UR;                  X-   5        UR=                  [>        5      RA                  5       n[B        RD                  " X?SS9nU$ s  sn	f s  sn
f )NF)rj   r  Tc              3   8   #    U  H  oR                   v   M     g 7fr&   )table)r   rq   s     r.   r   ?SubqueryLoader._generate_from_original_query.<locals>.<genexpr>r  s     6+Q+s   ru   use_mapper_path)#_clone	correlater   Query__new____dict__update	_from_obj_enable_assertionsr  non_generativer   _adapt_col_listr    	coercionsexpectrolesColumnsClauseRole_get_current_adapterr  distinct_target_key	_distinctr   r}  r   _has_row_limiting_clauser  rB   expand_column_list_from_order_by_set_entitiesr   r"   r  r'   AliasedClass)rd   orig_compile_state
orig_queryr  r   leftmost_relationshiporig_entityqq2entrm  target_colsr8  tto_addembed_q
left_aliass                    r.   _generate_from_original_query,SubqueryLoader._generate_from_original_query*  s
    ))$/ [[  -
1::& {{#(A MM((	  4"   8}	 "CM 	0 )88 '&A $$SYY%@%@!D& 335
 %3GG$&AK ( 6+66;'221==AA"&AK 7 ))"$A;;$1#6#6 >>00F  45 ##$BCLLN**d

 A.s   /
I
=	I
AIc                    / n[        UR                  5       5      n[        U5       H[  u  nu  pgUS:  a/  XES-
     S   R                  nUR	                  U5      (       a  UOUn	OUn	UR                  XR                  45        M]     [        U5      S:  a  Un
ON[        US   S   5      nUR                  (       a  UR                  n
O[        R                  " UR                  SS9n
U R                  R                  nU Vs/ s H/  n[        XR                   R"                  U   R                  5      PM1     nnX>U
4$ s  snf )Nr   r   r   Tr'  )rH  pairs	enumeraterR   r  rA   r)   r  r   r/  r  r'   r=  rb   r  r  rC   r   )rd   rI  r  to_joinrN  irR   r+   prev_mapper	to_appendparent_aliasrE  
local_colsrq   
local_attrs                  r.   _prep_for_joinsSubqueryLoader._prep_for_joins  s.   Y__&'!*5!1A~1u $El1o44+6??6+B+BK	"	NNIxx01 "2& w<! &L72;q>*D$$#{{  (44KK  ))77
  
 L++"?"?"B"F"FG 	 
 L00	
s    6D<c                    [        U5      nUS:X  a#  [        X2S   S   5      R                  U5      /nGOuUS:X  aB  [        X2S   S   5      R                  U5      [        XBS   S   5      R                  U5      /nGO-US:  Ga&  USS  Vs/ s HM  n[        US   5      R                  (       d  [
        R                  " US   5      OUS   R                  US   4PMO     nn/ n	U(       am  UR                  S5      n[        US   US   5      n
U(       a  U
R                  US   S   5      n
OU
R                  U5      n
U	R                  U
5        U(       a  Mm  [        X2S   S   5      R                  U	S   R                  5      /U	-   [        XBS   S   5      R                  U5      /-   nU H  n
UR                  U
5      nM     U$ s  snf )Nr   r   r   rM  )r  r  of_typer   r/  r'   r=  r  poprA   rC   join)rd   rB  rP  rI  rT  effective_entityltjitemmiddleinnerattrs              r.   _apply_joinsSubqueryLoader._apply_joins  s    'l!8
AJqM2::;KLG AX
AJqM2::<Hbk!n5==$G 1W $AbM *D	 #47+<< ))$q'2aG	 *   Ezz!}tAwQ0<<q	!5D<<5DT" & QZ]3;;E!HOOLM L"+a.9AA(  DtA  Es   AGc                     UR                   nU(       aE  UR                  (       a4  U[        R                  " U R                  UR                  U5      5      4-  nUR                  U5      nUR                  " U6 nU$ r&   )r  rw  r'   r  r  r  _with_current_pathoptions)	rd   rw   rB  r  rewritten_pathr?  r]  rm   new_optionss	            r.   _setup_optionsSubqueryLoader._setup_options  sq    $ !..w..--KK44W= K   0II{#r1   c                    ^  T R                   R                  (       a"  U 4S jnUR                  UT R                   5      nU$ )Nc                    > U =R                   [        [        R                  " TR                  R
                  5      5      -  sl         g r&   eager_order_byr  r   rA  rb   r@  r  rd   s    r.   _setup_outermost_orderbyISubqueryLoader._setup_outermost_orderby.<locals>._setup_outermost_orderby  s3    ..%LL!5!5!>!>?3 .r1   )rb   r@  _add_context_option)rd   rB  rq  s   `  r.   rq  'SubqueryLoader._setup_outermost_orderby  s;    ((
 %%($*>*>A r1   c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
SubqueryLoader._SubqCollectionsi$  zGiven a :class:`_query.Query` used to emit the "subquery load",
provide a load interface that executes the query at the
first moment a value is needed.

r   r  r  r\  subq_datac                     UR                   U l         UR                  U l        UR                  U l        UR                  =(       d    0 U l        X l        S U l        g r&   rw  )rd   rw   rx  s      r.   ra   (SubqueryLoader._SubqCollections.__init__4  sG     #??DL%,%>%>D" ' 4 4D!...BDKIDJr1   c                 r    U R                   c  U R                  5         U R                   R                  X5      $ r&   )ry  _loadrJ   )rd   r)   defaults      r.   rJ   #SubqueryLoader._SubqCollections.get>  s(    zz!

::>>#//r1   c                    [         R                  " [        5      U l        U R                  nUR
                  b   eUR                  U R
                  5      nU R                  R                  (       a  UR                  5       n[        UR                  U R                  5      5      n[        R                  " US 5       H*  u  p4U R                  U   R                  S U 5       5        M,     g )Nc                     U SS  $ )Nr   ru   xs    r.   r/   7SubqueryLoader._SubqCollections._load.<locals>.<lambda>Q  s
    !AB%r1   c              3   *   #    U  H	  oS    v   M     g7f)r   Nru   r   vvs     r.   r   8SubqueryLoader._SubqCollections._load.<locals>.<genexpr>R  s     $7QrUQ   )collectionsdefaultdictrH  ry  rx  r   with_sessionr  _populate_existingr  r\  	itertoolsgroupbyextend)rd   rB  rowsr   vs        r.   r}  %SubqueryLoader._SubqCollections._loadC  s    $006DJ		A99$$$t||,A  33'') -.D!))$@

1$$$7Q$77 Ar1   c                 @    U R                   c  U R                  5         g g r&   )ry  r}  )rd   r   r!  r"  s       r.   r  &SubqueryLoader._SubqCollections.loaderT  s    zz!

 "r1   )ry  r  r  r\  r   rx  N)r|   r}   r~   r   r   r   ra   rJ   r}  r  r   ru   r1   r.   _SubqCollectionsrv  $  s"    	
			0
	8"	r1   r  c           	         UR                   nUR                  R                  (       a  UR                  R                  (       a  g UR                  R                  U5      nSUl        X0R                     nUR                  UR                  SS 5      n	U	b  U	n
OU R                  n
UR                  R                  R                  S[        R                  R                  [        R                  R                  45      u  pU[        R                  R                  L nX-   nX-   nUR!                  UR                  S5      (       d{  U R"                  (       aI  UR$                  (       a  UR$                  R&                  OSUR&                  -   S-  U R"                  :  a  g O!UR)                  U R*                  5      (       a  g UR                  R                  R                  S[,        4UR                  5      n[.        R0                  " US5      nUR2                  (       aB  UR4                  R6                  c  [8        R:                  " S	U < S
U< S35        UR<                  nUR?                  USS9nU RA                  UUUU5      u  nnnnU RC                  UUUUUU5      n[        RD                  " U
5      nUR                  RG                  S[,        4USX405      Ul        URI                  S5      nU RK                  UU5      u  nnnURL                  " U6 nU RO                  UUUUU
5      nU RQ                  UUUUUU
U5      nU RS                  U5      nU$ )NTpath_with_polymorphic)subquery_pathsNr  r   r   r?  ormzsubqueryloader for "z!" must invoke lambda callable at z in order to produce a new query, decreasing the efficiency of caching for this statement.  Consider using selectinload() for more effective full-lambda cachingF)legacy)*rj   r   _enable_eagerloads_for_refresh_stater  indexloaders_require_bufferingrb   rJ   r   r  r   r  r'   r  r  r  r  r  r  r  rR   r  r   _get_plugin_class_for_plugin_is_lambda_elementr  r  r   r  	_resolved_create_entities_collectionr!  rJ  r+  union_set_enable_single_critrW  add_columnsrc  rj  rq  )rd   rw   rk   rl   r  rm   rn   rj   r  with_poly_entityr]  r  rh  r  r?  compile_state_clsr>  r  r   r@  rI  rB  rP  rV  rT  s                            r.   _setup_query_from_rowproc(SubqueryLoader._setup_query_from_rowprocX  sO     ----@@,,??"/"9"9"?"?"M,0)(()  88$$&=t
 '/#{{$+MM$D$D$H$H$""'')>)>)C)CD%
!	 x44999$	'. }}]55x@@ )55 &2299kk"  ( ( **4;;77 ]]5599>*GMM

 ,HH
 ((##55=		 Z) $--J
 /JJu K 
 #	
	
! 77!

 KK() 3399~.
(9*E 
 %%e,,0,@,@	-
)\ MM:&w
L2B
 
 ))!,r1   c	           
      X   UR                   (       a  U R                  UUUUUUUU5      $ U R                  XU R                  5      (       a  g [	        UR
                  [        5      (       d  g U R                  R                  U R                     R                  R                  (       d  [        R                  " SU -  5      e[        U5      S:X  a2  [        R                   " UR"                  U R                  5      (       d  g O*[        R                   " US   U R                  5      (       d  g U R%                  UUUUS   UU5      n	U	c  g U	R&                  b   eX0R(                     nU R(                  R*                  n
UR-                  UR.                  S5      nUc.  U R1                  X5      nUR3                  UR.                  SU5        U(       a  U
 Vs/ s H  oR4                  U   PM     n
nU R6                  (       a  U R9                  XXU5        g U R;                  XXU5        g s  snf )NJ'%s' does not support object population - eager loading cannot be applied.r   rM  r  )r   r  r  r  r   rj   r   rC   rK   r)   implsupports_populationr  r  r  r'   _entity_isar  r  r   rb   r  rJ   r   r  r   r^   r5   _create_collection_loader_create_scalar_loader)rd   rw   rk   rl   rm   rR   rx   rn   ry   rx  rU  r  rq   s                r.   rz   #SubqueryLoader.create_row_processor  s      ;;	 	 ++G4??KKG113HII {{((277KK,,@BFG  t9>''(@(@$++NN O%%d2h<<--H
 <||###(()))77

 hhw11=A//>KHHW''D6@Aj//!,jJA<<*** &&* Bs   H'c                 D  ^ ^^^ UR                  U5      mUU U4S jmUU 4S jnUS   R                  T R                  T45        US   R                  T R                  U45        UR                  (       a+  US   R                  T R                  TR                  45        g g )Nc                    > TR                   " T" U5      S5      nU R                  TR                  5      R                  XU5        g r  )rJ   r  r)   set_committed_value)r   r!  r"  
collectionr  rd   tuple_getters       r.   load_collection_from_subqKSubqueryLoader._create_collection_loader.<locals>.load_collection_from_subqM  s8    $c):B?JNN488$88jr1   c                 :   > TR                   U;  a
  T" XU5        g g r&   r)   )r   r!  r"  r  rd   s      r.   &load_collection_from_subq_existing_rowXSubqueryLoader._create_collection_loader.<locals>.load_collection_from_subq_existing_rowS  s    xxu$)%< %r1   r   existingeager_tuple_getterrA   r)   invoke_all_eagersr  )	rd   rw   rx   r  rU  ry   r  r  r  s	   `  `   @@r.   r  (SubqueryLoader._create_collection_loaderH  s     ++J7		= 	5  $((,E!FG:%%XX=>	
 $$w&&+2D2D'EF %r1   c                 D  ^ ^^^ UR                  U5      mUU U4S jmUU 4S jnUS   R                  T R                  T45        US   R                  T R                  U45        UR                  (       a+  US   R                  T R                  TR                  45        g g )Nc                    > TR                   " T" U5      S5      n[        U5      S:  a  [        R                  " ST-  5        US   nU R	                  TR
                  5      R                  XU5        g )Nr&   r   LMultiple rows returned with uselist=False for eagerly-loaded attribute '%s' r   )rJ   r  r   r  r  r)   r  )r   r!  r"  r  scalarr  rd   r  s        r.   load_scalar_from_subqCSubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subqd  sg    $c):GDJ:"		GIMN
  ]FNN488$88vNr1   c                 :   > TR                   U;  a
  T" XU5        g g r&   r  )r   r!  r"  r  rd   s      r.   "load_scalar_from_subq_existing_rowPSubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subq_existing_rowo  s    xxu$%eC8 %r1   r   r  r  r  )	rd   rw   rx   r  rU  ry   r  r  r  s	   `  `   @@r.   r  $SubqueryLoader._create_scalar_loader_  s     ++J7		O	9 	5  $((,A!BC:%%XX9:	
 $$w&&+2D2D'EF %r1   )r|   r}   r~   r   r   ra   r   r!  rJ  rW  rc  rj  rq  objectr  r  rz   r  r  r   r   r   s   @r.   r  r    sf      I:'
/LbbH-1^3j"H26 2hWrUnG.G Gr1   r  joinedc                      ^  \ rS rSrSrSrU 4S jrS r   SS jrS r	S r
S	 rS
 rS r SS jrS rS rS rS rSrU =r$ )JoinedLoaderi{  z[Provide loading behavior for a :class:`.RelationshipProperty`
using joined eager loading.

)r  _aliased_class_poolc                 p   > [         [        U ]  X5        U R                  R                  U l        / U l        g r&   )r`   r  ra   rb   r  r  rc   s      r.   ra   JoinedLoader.__init__  s-    lD*6@..99#% r1   c                 X    U R                   R                  S5      R                  U5        g r  r  r   s     r.   r   !JoinedLoader.init_class_attribute  r  r1   c	                    UR                   R                  (       d  gU R                  (       a  SUl        X0R                     nSn
U(       a  U R                  XAUR                  5      OSnUSLa  U R                  UUUUU5      u  nnnOUR                  UR                  S5      (       dQ  U R                  (       a  UR                  S-  U R                  :  a  gO!UR                  U R                  5      (       a  gU R                  UUUUUUUU5      u  nnnnSUl        UR                  UR                  SS5      nUb  [!        U5      R"                  n
OSn
X0R$                     n[&        R(                  " UU R                  UUUUU
U R                  US9	  Ub0  S[+        UR,                  5      ;   a  [.        R0                  " S5      egg)	z@Add a left outer join to the statement that's being constructed.NTFr  r   r  )with_polymorphicparentmapperchained_from_outerjoinzDetected unaliased columns when generating joined load.  Make sure to use aliased=True or flat=True when using joined loading with with_polymorphic().)r   r  r5   multi_row_eager_loadersrb   _init_user_defined_eager_procr   $_setup_query_on_user_defined_adapterr  r  r  r  rR   _generate_row_adaptereager_adding_joinsrJ   r   with_polymorphic_mappersr  r   _setup_entity_queryr   secondary_columnsr  r  )rd   rj   rk   rl   rm   rn   ro   r  r  rp   r  user_defined_adapterclausesadd_to_collectionr  s                  r.   rr   JoinedLoader.setup_query  s    ,,??\\48M1(()  ..(@(@  	  u, 99$	!  ==!9!98DD??{{Q8 9))$++66 **!&	!& 04M,88$$&=t
 '&  &&   $KK ##KK-#9
	
 'DC++5
 -
 ,,E -
'r1   c                    SUR                   ;  a  gUR                  R                  nUR                  UR                  SS5      nUSLa  U$ UR                   S   nUSS  u  pxUbY  [        U[        5      (       a  UR                  R                  U5      n[        R                  " XhR                  R                  S9nOUR                  UR                  S5      (       aF  UR                  UR                  S5      n	[        R                  " U	UR                  R                  S9nO&UR                   R                  UR                  S 5      nUR#                  USU5        U$ )Neager_from_aliasF user_defined_eager_row_processor)r=  r  )r   rl   rC   rJ   r   r   strr  aliasrB  ColumnAdapterrR   rG  r  r'   
ORMAdapter_polymorphic_adaptersr   )
rd   rm   rj   target_attributesrl   rn   r  root_mapperr+   r  s
             r.   r  *JoinedLoader._init_user_defined_eager_proc  sS   
 W%7%77||"" (($$&H%
 %N ""#56 I%%%))%0,,;;#B#BG }}((*A  $(88!,,.E$  #--$ $ ? ?
 (==AAKK 	.	
 r1   c                 
   UR                  U5      nU(       a6  U(       a/  UR                  U5      nUR                  UR                  SU5        O&U(       a  UnUR                  UR                  SU5        UR                  nXTU4$ )Nr  )_get_entity_clauseswrapr   r   primary_columns)rd   rw   r  rl   rn   r  r  s          r.   r  1JoinedLoader._setup_query_on_user_defined_adapter8  s     ,,W5+#7#<#<W#E HH""2$
 #* HH""2$ $33#.???r1   c                 D   [        U R                  5      R                  (       a   [        U R                  5      R                  nOS nSU 4nX1R                  ;  a  S=UR                  U'   nO!UR                  U   S-   =UR                  U'   nU[        U R                  5      :  am  [        R                  " U R                  Ub  UR                  SS9OS SSS9n[        U5      R                  R                    U R                  R                  U5        U R                  U   $ )Njoinedloader_acr   r   T)flat)r  r  r(  )r   r  r/  
selectabler   r  r  r'   r=  rR   _anonymous_fromclauserq   rA   )rd   rw   alt_selectabler)   idxto_adapts         r.   _gen_pooled_aliased_class&JoinedLoader._gen_pooled_aliased_classR  s   
 4;;00$T[[1<<N!N $'(((,--Gs#c,3,>,>s,Ca,GGGs#c#d..//,,!- %:::E $H H((**$$++H5'',,r1   c	                    UR                  UR                  SS 5      n	U	(       a  U	n
OU R                  U5      n
[        U
5      R	                  SU 4[
        R                  U
U R                  R                  SSSS9nUR                  c   eUb0  UR                  R                  SU R                  R                  5      OU R                  R                  nU(       d  SnUR                  R                  U R                  UUUUUUUU(       a  UR                   OS4	5        UR"                  nUR%                  UR                  SU5        XX4$ )	Nr  joinedloader_ormadapterTF)r=  adapt_requiredallow_label_resolveanonymize_labels	innerjoinru   eager_row_processor)rJ   r   r   r   _memor'   r  rR   rG  aliased_classr   rb   r  create_eager_joinsrA   _create_eager_joinrw  r  r   )rd   rj   r  rl   rm   rn   ro   r  r  r  r  r  r  r  s                 r.   r  "JoinedLoader._generate_row_adaptert  sU     88$$&=t
 'H55mDH(#))&-77 %! * 
 $$000 " "";0D0D0N0NO%%// 	  &*"((//''&+2''
	
 *;;))+@'J!2JJr1   c
           
        ^  Uc  UR                   n
OUn
UR                  =(       a    UR                  nS nX!R                  ;  a  U(       d  UR                  (       ao  [
        R                  " UR                  UR                  5      n[        U5      S:  a  [        R                  " S5      eU(       a  UR                  US      nUS   UpUc  UUR                  pUR                  R                  UW5      nU(       a  [        USS 5      (       a|  [        UR                  5      R                  U
R!                  T R"                  5      (       a  U
OT R"                  5      n[        UR$                  T R&                  T R(                  5      nOV[        [*        R,                  " T R"                  UR                  SS9T R&                  T R(                  5      nOT R(                  nUR                  c   eU(       + =(       d0    U(       + =(       d"    US:H  =(       d    UR.                  R0                  nU	nUR2                  R5                  ST R                   4S	5      nU(       a  U[7        U 4S
 jU 5       5      -  nU(       a  [*        R8                  " UUR                  UU(       + =(       d@    UR.                  R0                  =(       d#    U=(       a    [;        U[<        R>                  5      T R"                  T R                   US9nOT RA                  UUUUU5      nUUR                  U'   UR                  Ul!        U(       d  [
        RD                  " T R(                  RF                  5       Ha  nU
RH                  RJ                  RM                  U5      (       d  M/  U(       a  URN                  U   nURQ                  UURR                  5        Mc     T R(                  RT                  (       a`  U=RV                  [7        URX                  R[                  [\        R^                  " T R(                  RT                  5      5      5      -  sl+        g g )Nr   zCan't identify which query entity in which to joined eager load from.   Please use an exact match when specifying the join path.r   r
  Tr'  unnestedadditional_entity_criteriaru   c              3      >#    U  H3  nUR                   (       d  M  UR                  TR                  5      v   M5     g 7fr&   )propagate_to_loaders_resolve_where_criteriarR   )r   aerd   s     r.   r   2JoinedLoader._create_eager_join.<locals>.<genexpr>	  s5      )4B** 8**4;;774s   >">isouter
_left_memo_right_memorw  )0rR   r  _should_nest_selectableeager_joinsfrom_clausesrB  #find_left_clause_that_matches_givenr  r  r  r  
setdefaultr  r   r
  _entity_for_mapperr  rC   r  r)   rb   r'   r=  r  represents_outer_joinglobal_attributesrJ   r  _ORMJoinr   r    Join_splice_nested_inner_joinstop_on_find_columnsprimaryjoinpersist_selectablerq   contains_columnr^   ri   r  r@  ro  _target_adaptercopy_and_processr   rA  )rd   rj   rk   rl   rn   r  r  r  r  r  r   should_nest_selectablequery_entity_keyindexesclausedefault_towraptowrapefmonclauseattach_on_outsideextra_join_criteriar  	eagerjoinr   s   `                       r.   r  JoinedLoader._create_eager_join  s    &--K&K 11 655 	
    9 99*** BB**L,C,CG 7|a 000  &33GAJ?
 4;1:v.#'' -
 **55n
 w66
 g334GG"t{{33   #3::txx9M9MN"))W%7%7 HH(( ++H$$000 '& >}>J&> ''==	 	 -%2%D%D%H%H)4;;7&
" &5 )4) $   ))%%% M++AAM*Kz&#((/K;; KK 3
I 66fgx1DI 7@!!"23 )33	  --$$00 1133CCCHH%ooc2!??]:: ((((E**;;LL!5!5!>!>?- ( )r1   c           
      ,   USL a"  [        U[        R                  5      (       d   eO[        U[        R                  R
                  5      (       a   U R                  UUR                  UUUU5      $ [        U[        R                  5      (       dK  US   R                  U5      (       a1  [        R                  " UUR                  USUUS   R                  US9$ g U R                  UUR                  UUUUR                  5      nUc=  SnU R                  UUR                  UUUUR                  5      nUc  USLd   S5       eg OSnU(       au  UR                  (       d#  UR                  (       d  UR!                  U5      n	O[        R                  " UR                  UUR"                  UR                  UR                  S9n	O@[        R                  " UUR                  UR"                  UR                  UR                  S9n	UR$                  U	l        U	$ )	NFr  rM  r  z9assertion failed attempting to produce joined eager loadsT)r  r  )r  r  )r   r'   r"  r    r  FromGroupingr$  elementr  r
  rR   rightr  leftr  r  _splice_into_centerr3  r*  )
rd   rl   join_objr  r3  r  splicingtarget_joinright_splicer6  s
             r.   r$  &JoinedLoader._splice_nested_inner_joinQ	  s    u h(9(9::::#.."="=>>11    Hh&7&788Bx||H%%(())!' $R$2  44NN  
  L88##K " E)ONO) #  L ##K,?,?$88E	$--MM%%$,,'22	 !))!! (($00I %0$?$?	!r1   c                    UR                   nU(       a  U R                  XVUR                  5      OSnUSLaT  UnUR                  (       a#  U(       a  UR	                  UR                  5      nO>UR                  (       a  UR                  nO UR                  UR                  S5      nUc  gU R                  R                  X(5      (       a  U$ g)NFr  )rj   r  r   compound_eager_adapterr  rJ   rR   _result_has_identity_key)	rd   rw   rx   rn   rl   rm   rj   r  	decorators	            r.   _create_eager_adapter"JoinedLoader._create_eager_adapter	  s    --  ..(:(:  	  u,,I 33	%NN!88	 55)@@	((*?I  ;;//BB r1   c	           
      t   U R                   R                  U R                     R                  R                  (       d  [
        R                  " SU -  5      eU R                  (       a  SUl        X0R                     n	U R                  XXyU5      n
U
SLat  U R                  n[        R                  " UU R                  UUXR                     U
5      nU R                  (       d  U R                  XX5        g U R!                  XX5        g U R                  R#                  S5      R%                  UUUUUUUU5        g )Nr  TFr  )rC   rK   r)   r  r  r  r  r5   loaders_require_uniquingrb   rG  r   _instance_processorrR   r  r  r  r   rz   )rd   rw   rk   rl   rm   rR   rx   rn   ry   our_patheager_adapterr)   	_instances                r.   rz   !JoinedLoader.create_row_processor	  s&    {{((277KK,,@BFG 
 <</3G,,,-22W
 %((C33%I <<**7O..)   ..%""	r1   c                   ^^^ UUU4S jnUUU4S jnU4S jnUS   R                  U R                  U45        US   R                  U R                  U45        TR                  (       a!  US   R                  U R                  U45        g g )Nc                    > [         R                  " XT5      n[        R                  " US5      nUTR                   U T4'   T" U5      nUb  UR	                  U5        g g Nappend_without_eventr   r   r   UniqueAppenderrA   )	r   r!  r"  r  result_listinstrN  rw   r)   s	         r.   #load_collection_from_joined_new_rowSJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_new_row

  se     $99%LJ--2K 0;Gs|,S>D""4(  r1   c                   > U T4TR                   ;   a  TR                   U T4   nO?[         R                  " XT5      n[        R                  " US5      nUTR                   U T4'   T" U5      nUb  UR	                  U5        g g rR  rT  )	r   r!  r"  rV  r  rW  rN  rw   r)   s	         r.   (load_collection_from_joined_existing_rowXJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_existing_row
  s    s|w111%00%> (==#
 #11 6 4?""E3<0S>D""4(  r1   c                    > T" U5        g r&   ru   r   r!  r"  rN  s      r.    load_collection_from_joined_execPJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_exec*
  
    cNr1   r   r  r  rA   r)   r  )rd   rw   r)   rN  ry   rX  r[  r_  s    ```    r.   r  &JoinedLoader._create_collection_loader	
  s    	)	)&	 	5  XX:;	
 	:%%XX?@	
 $$w&&;< %r1   c                   ^ ^^ UU4S jnUUU 4S jnU4S jnUS   R                  T R                  U45        US   R                  T R                  U45        UR                  (       a!  US   R                  T R                  U45        g g )Nc                    > T" U5      UT'   g r&   ru   )r   r!  r"  rN  r)   s      r.   load_scalar_from_joined_new_rowKJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_new_row9
  s     #3E#Jr1   c                 n   > T" U5      nTU;   a"  X1T   La  [         R                  " ST-  5        g g X1T'   g )Nr  )r   r  )r   r!  r"  r  rN  r)   rd   s       r.   $load_scalar_from_joined_existing_rowPJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_existing_row>
  sI     !~H e|:-IIK . &c
r1   c                    > T" U5        g r&   ru   r^  s      r.   load_scalar_from_joined_execHJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_execQ
  ra  r1   r   r  r  rb  )rd   rw   r)   rN  ry   rf  ri  rl  s   ` ``    r.   r  "JoinedLoader._create_scalar_loader8
  s    	(
	&&	 	5  $((,K!LM:%%XX;<	
 $$w&&78 %r1   )r  r  )NNFr   )r|   r}   r~   r   r   r   ra   r   rr   r  r  r   r  r  r$  rG  rz   r  r  r   r   r   s   @r.   r  r  {  su    
 4I&
' $qf3j@4 -D;Kz^B KPXt"H8t-^# #r1   r  selectinc                      ^  \ rS rSrSr\R                  " S/ SQ5      rSrU 4S jr	S r
S rS	 rS
 rS rS rS rS rSrU =r$ )SelectInLoaderi^
  )r  	omit_join_parent_alias_query_info_fallback_query_info	queryinfo)load_only_childload_with_joinin_exprpk_colszero_idxchild_lookup_colsi  c                   > [         [        U ]  X5        U R                  R                  U l        U R                  R
                  [        R                  L nU R                  R                  b  U R                  R                  U l        OU R                  R                  S5      nU(       a  UR                  U l        OLU R                  R                  S   R                  UR                  SSU R                  R                  S9U l        U R                  (       aH  U(       a+  U R!                  5       U l        U R%                  5       U l        g U R)                  5       U l        g U R%                  5       U l        g )Nr  r   TFr:  )r`   rq  ra   rb   r  rO   r   rO  rr  r   r.  rC   rF  r   r+  rG  _init_for_omit_join_m2ort  _init_for_joinru  _init_for_omit_join)rd   rC   re   is_m2o
lazyloaderrf   s        r.   ra   SelectInLoader.__init__w
  s$   nd,VB..99%%//:3G3GG))5!11;;DN--;;%J !+!3!3!%!8!8!;!C!C-- $!& $ ? ?	 "D " >>#'#?#?#A ,0,?,?,A)#'#;#;#= #224Dr1   c                   ^ ^ [        T R                  R                  R                  5      mTR	                  UU 4S j[        T5       5       5        T R                  R                   Vs/ s H  oT;   d  M
  TU   PM     sn=p#[        U5      S:  a  [        R                  " U6 nSnOUS   nSnT R                  SSXBUS 5      $ s  snf )Nc              3      >#    U  H:  nTR                   R                  R                  US 5        H  nUTU   4v   M     M<     g7f)ru   N)rC   rG  rJ   )r   r   equivpk_to_fkrd   s      r.   r   5SelectInLoader._init_for_omit_join.<locals>.<genexpr>
  sE      
#88<<QC HQK C !#s   AAr   Fr   T)r~  rb   r>  local_remote_pairsr.  rH  rC   r   r  r    tuple_
query_info)rd   r   rz  fk_colsry  r{  r  s   `     @r.   r  "SelectInLoader._init_for_omit_join
  s      00CC
 	 
(^
 	
 &*[[%<%<
%<cxMHSM%<
 	
 w<!jj'*GHajGHueWxNN
s   )	C6	Cc                 *   U R                   R                  n[        U5      S:  a  [        R                  " U6 nSnOUS   nSnU R
                  R                  S5      nU Vs/ s H  oTR                  U   PM     nnU R                  SSX!X65      $ s  snf )Nr   Fr   Tr  )	rR   r   r  r    r  rb   r   r1  r  )rd   rz  ry  r{  r  r  lookup_colss          r.   r~  &SelectInLoader._init_for_omit_join_m2o
  s    ++))w<!jj'*GHajGH))778MN
AHI22226I%8
 	
 Js   "Bc                 h   [        U R                  R                  5      U l        [	        U R                  5      nU R                  R
                   Vs/ s H  o!R                  U5      PM     nn[        U5      S:  a  [        R                  " U6 nSnOUS   nSnU R                  SSXCUS 5      $ s  snf )Nr   Fr   T)r   rC   rN   rs  r   r   _adapt_elementr  r    r  r  )rd   pa_inspr   rz  ry  r{  s         r.   r  SelectInLoader._init_for_join
  s    $T[[%7%78$,,-37;;3J3J
3JC""3'3J 	 
 w<!jj'*GHajGHudGhMM
s   B/c                 X    U R                   R                  S5      R                  U5        g r  r  r   s     r.   r   #SelectInLoader.init_class_attribute
  r  r1   c	           
         UR                   (       a  U R                  UUUUUUUU5      $ U R                  XU R                  5      (       a  g U R                  R
                  U R                     R                  R                  (       d  [        R                  " SU -  5      e[        U5      S:X  a2  [        R                  " UR                  U R                  5      (       d  g O*[        R                  " US   U R                  5      (       d  g UR                  R                   =(       d    [        R"                  R$                  U-   n	X0R&                     n
U
R)                  UR*                  SS 5      nUb  [-        U5      nOU R.                  n[0        R2                  R5                  UU	U R                  U R&                  U R6                  UU5        g )Nr  r   rM  r  )r   r  r  r  rC   rK   r)   r  r  r  r  r  r'   r  r  rj   r  r  r  rb   rJ   r   r   r  r   r  callable_for_path_load_for_path)rd   rw   rk   rl   rm   rR   rx   rn   ry   selectin_pathr  r  r]  s                r.   rz   #SelectInLoader.create_row_processor
  s      ;;	 	 ++G4??KK{{((277KK,,@BFG  t9>''(@(@$++NN O%%d2h<< !!..L(2G2G2L2L //0 '?? 7
 '&'78#{{**KK  	
r1   c                 	  ^ ^^^ U(       a  T R                   U;  a  g T R                  nUR                  (       a  [        R                  " [
        5      n/ n	T R                  mU H  u  mn
TR                  m[        UUU4S jUR                   5       5      n[        R                  U;   a  T R                  n  O6S U;  a  X   R                  TTU
45        Ms  U	R                  TTU
45        M     UR                  (       d0  U VV
s/ s H!  u  pUR                   S   XR                  U
4PM#     nnn
UR                  nUR                  nUR                   (       dB  UR"                  (       a1  U Vs/ s H  oR%                  U5      PM     nnUR%                  U5      n[&        R(                  " S/UQ76 nUR+                  5       nUR+                  5       n[,        R.                  " UU/[0        [2        R4                  SUS.S9nUR                   (       d  UR7                  U5      nOaUR7                  T R8                  5      R;                  [=        T R8                  T R>                  R                   5      RA                  U5      5      nURC                  URE                  [F        RH                  " S5      5      5      nURJ                  RL                  nUT R>                     nUURN                  L a  URP                  nOSURP                  nURN                  RP                  n[S        UU5       VVs/ s H  u  nnURU                  UU5      PM     nnnU(       a;  URV                  (       a*  U[&        RX                  " UUR[                  U5      5      4-  nUR\                  " U6 nUR_                  SU05      nUR`                  (       a  URc                  S	S
9nT R>                  Rd                  (       a  UR                   (       dX  T R>                  Rd                  nUR"                  (       a!  U Vs/ s H  nUR%                  U5      PM     nnURd                  " U6 nO"U 4S jnURg                  UT R>                  5      nUR                  (       a  T Ri                  WW	UUU5        g T Rk                  WUUU5        g s  sn
nf s  snf s  snnf s  snf )Nc              3   d   >#    U  H%  nTR                  TTU[        R                  S 9v   M'     g7f)r  N)rj  r   PASSIVE_NO_FETCH)r   lkrR   r   
state_dicts     r.   r   0SelectInLoader._load_for_path.<locals>.<genexpr>"  s>      & ; 44" * ; ;	 5  ;s   -0r   r  r  )compile_state_pluginplugin_subject)r  r  r   r  primary_keysr  T)r  c                    > U =R                   [        [        R                  " TR                  R
                  5      5      -  sl         g r&   rn  rp  s    r.   rq  ?SelectInLoader._load_for_path.<locals>._setup_outermost_orderby  s3    #22eT%9%9%B%BC7 2r1   )6r)   rt  rw  r  r  rH  rC   r~  r  r|  r   r   ru  rA   rz  ry  rx  r/  r  r'   Bundler  r#   r  r"   r   r  r  rs  r\  r  rb   rZ  filterin_r    rT  rj   select_statementr   r  zip'_adapt_cached_option_to_uncached_optionrw  r  r  rg  _update_compile_optionsr  r  r@  rs  _load_via_child_load_via_parent) rd   rw   rl   states	load_onlyr]  rm   r  
our_statesnone_states	overwriterelated_identr   rz  ry  r   
bundle_ent
bundle_sql
entity_sqlrB  r?  r  ri  cached_optionsuncached_optionsorig_optuncached_optro  rJ  rq  rR   r  s    `           `                 @@r.   r  SelectInLoader._load_for_path  s`    2%%
%%$006JK[[F$* y"ZZ
 % & )::& ! //=@!%!:!:J },-44
I6  &&z9'EF7 %+< )) )/(.$E 1ujj)<(.  
 $$$$((  00DKDKS33C8G   +99'B__T4G4
224
%88:
%%$j17,DD(-"2	
 (( ./A
 d00166**D,@,@,D,DEMM$A HHW[[~!>?@ **;;
2 d223&$22K'55N&}}:: /2"$4/	/*Hl @@\/	   w..--$44W= K II{#%%&GH$$##d#;A((,,!%!5!5!>!>#44 %3&$2D )77=$2 # & JJ/
 )),d.B.B %%  KQ !!*j!WEe d6&s   (R2.R8*R='Sc           	          U R                   n[        U5      nU(       Ga  USU R                   nXpR                  S  nUR                  R	                  USU V	s/ s H  n	UR
                  (       a  U	S   OU	PM     sn	0S9R                  5        V
Vs0 s H  u  pX_M	     nn
nU Hr  n	UR                  U	S 5      nX    HU  u  pnU(       d  U R                  U;   a  M  UR                  U R                  5      R                  UUU(       d  UOU/5        MW     Mt     U(       a  GM  U HJ  u  pnU(       d  U R                  U;   a  M  UR                  U R                  5      R                  XS 5        ML     g s  sn	f s  snn
f )Nr   r  r\  )r5   sorted
_chunksizer   r  r{  rS  rJ   r)   r  r  )rd   r  r  r  rB  rw   r5   our_keyschunkr)   r   r  datarelated_objr   r!  r  s                    r.   r  SelectInLoader._load_via_child  sy   ,, *%Q1E 12H $OO33&',)', '1&9&9CFsB',) 4  &(DA     #hhsD1/9+E)$U): NN488,@@+2	 0? ! hB (3#E)U!2 NN488$88tL (33)s   "E5E:c           
         U R                   nU(       a  SOS nU(       Ga  USU R                   nXR                  S  nU VV	V
Vs/ s H  u  ppUR                  (       a  US   OUPM      nn
n	nn[        R                  " [
        5      n[        R                  " UR                  R                  USU0S9R                  5       S 5       H  u  pX   R                  S U 5       5        M!     U H  u  ppU(       d  U R                  U
;   a  M  UR                  X5      nU(       d_  U(       aX  [        U5      S:  a  [        R                   " SU -  5        U	R#                  U R                  5      R%                  XUS   5        M  U	R#                  U R                  5      R%                  XU5        M     U(       a  GM  g g s  snn
n	nf )	Nru   r   r  r  c                     U S   $ r   ru   r  s    r.   r/   1SelectInLoader._load_via_parent.<locals>.<lambda>  s    !A$r1   c              3   *   #    U  H	  oS    v   M     g7f)r   Nru   r  s     r.   r   2SelectInLoader._load_via_parent.<locals>.<genexpr>  s     1q!uqr  r   r  )r5   r  r{  r  r  rH  r  r  r   r  rS  r  r)   rJ   r  r   r  r  r  )rd   r  r  rB  rw   r5   _empty_resultr  r)   r   r  r  r  r  r   r  r  s                    r.   r  SelectInLoader._load_via_parent  s   ,,%4q4??3E#OO$56J :?9>5C
 %--A369>  
 **40D!))''~|< ( &(	 1q11 6;1J TXX%;!XXc9
::*		.045
 NN488,@@:a= NN488,@@:) 6;% js   %F>
)ru  rs  rt  r  rr  )r|   r}   r~   r   r   r  
namedtupler  r  ra   r  r~  r  r   rz   r  r  r  r   r   r   s   @r.   rq  rq  ^
  sf    I ''	

J J5<O,
 N'
B
HFB,M\, ,r1   rq  c           	         ^^ U4S jmU4S jnU4S jn[         R                  " U SUSSSS9  [         R                  " U SUSSSS9  g )Nc           	      "  > Ub  UR                   TR                   :X  ap  UR                  [        R                  " U5      5      nU(       aD  X!La@  [        R
                  " S[        R                  " U5      < SU R                  < ST< S3SS9eU$ )Nz	Instance z+ is already associated with an instance of z	 via its z0 attribute, and is only allowed a single parent.bbf1)code)	r)   	hasparentr   instance_stater  r  r'   instance_strrN   )r   rZ  oldvalue	initiatorr  r+   s        r.   	_do_check*single_parent_validator.<locals>._do_check1  sx    $((!:!++J,E,Ee,LMIX200  ,,U3U\\4I    r1   c                    > T" XS U5      $ r&   ru   )r   rZ  r  r  s      r.   rA   'single_parent_validator.<locals>.append>  s    tY77r1   c                    > T" XX#5      $ r&   ru   )r   rZ  r  r  r  s       r.   set_%single_parent_validator.<locals>.set_A  s    x;;r1   rA   T)rawretvalr<   r   )r   listen)r*   r+   rA   r  r  s    `  @r.   rB   rB   0  sE    8< 
LLhDd 
LLudT$Or1   )NNNNFN)Dr   
__future__r   r  r   r   r   r   r   r   r	   r
   r   r   r   r   r'   baser   r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r    rB  r!   sql.selectabler"   r#   rX   ColumnPropertystrategy_forr\   class_loggerr   r   r   r  r  r  RelationshipPropertyr  r  MemoizedSlotsr)  r  r  r  r  r  rq  rB   ru   r1   r.   <module>r     s  2 &             " " ' ) $ * ! & + #           "  ; # P!f ''55'I( ( J(V ''4%'HR:> R: I R:j '''>M
\ M
 ? M
` ''$'G''dd (  ''4'8y
> y
 9 H y
x8& 80
4 
4 ##00D0An  B  ##00h0?##00d0;#=) #= < @ #=L ##00d0;##00h0?##00g0>##00n0E##00n0EcJ+T-?-? cJ F F ? @ < cJL1
 1
h/
+ /
d ##00k0BAj A CAD ##00j0AK
GZ K
G B K
G\ ##00h0?##00e0<]- ] = @ ]@ ##00j0AMZ!3!3 M B M`Pr1   