
    -h                        S 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  \R:                  " 5       rS r\R@                  " S5      S/S j5       r!\RD                  " SSSS9\R@                  " S5      S/S j5       5       r#S r$SSSSS \RJ                  \RJ                  4S! jr&SSSSSS \RJ                  \RJ                  4S" jr'     S0S# jr(   S1S$ jr)S% r*    S2S& jr+S' r,S( r-S) r.S* r/S+ r0 " S, S-\15      r2S. r3g)3zprivate module containing functions used to convert database
rows into object instances and associated state.

the functions here are called primarily by Query, Mapper,
as well as some of the attribute loading strategies.

    )absolute_import   )
attributes)exc)path_registry)strategy_options)_DEFER_FOR_STATE)_RAISE_FOR_STATE)_SET_DEFERRED_EXPIRED)	_none_set)	state_str   )future)util)result_tuple)ChunkedIteratorResult)FrozenResult)SimpleResultMetaData)LABEL_STYLE_TABLENAME_PLUS_COL)SelectStatec                   ^ ^^^^ [        5       Tl        0 Tl        TR                  nUR                  nTR
                  R                  (       + =(       a8    [        UR                  5      S:H  =(       a    UR                  S   R                  m [        [        TR                  R                   Vs/ s H  nUR                  TT 5      PM     sn6 5      u  mpVTR                  (       a8  TR                  (       d  TR                  (       a  [         R"                  " S5      eS nS nTR
                  R,                  (       as  TR                  R                   V	s/ s HQ  n	TR                  (       a  UO:U	R.                  (       d"  U	R0                  (       d  U	R2                  (       a  [4        OSPMS     n
n	OTR                  R                   V	s/ s Hm  n	TR                  (       a  UOVU	R.                  (       d-  U	R0                  (       a  U" U	R6                  R8                  5      OU	R.                  (       a  [4        OSPMo     n
n	[;        WWU
S9nUU UU4S jnTR<                  R?                  S	S
5      (       a  [        U" S5      5      mU4S jn[A        UUTT T RB                  RD                  S9nURF                  RI                  [K        UTS95      Ul#        TR                  RL                  (       a  S nSU4Ul'        TR                  (       a  UR                  TR                  5        U$ s  snf ! [$         aF    [&        R(                  " 5          T R+                  5         SSS5         GMM  ! , (       d  f        GN]= ff = fs  sn	f s  sn	f )a  Return a :class:`.Result` given an ORM query context.

:param cursor: a :class:`.CursorResult`, generated by a statement
 which came from :class:`.ORMCompileState`

:param context: a :class:`.QueryContext` object

:return: a :class:`.Result` object representing ORM results

.. versionchanged:: 1.4 The instances() function now uses
   :class:`.Result` objects and has an all new interface.

r   r   zCan't use yield_per with eager loaders that require uniquing or row buffering, e.g. joinedload() against collections or subqueryload().  Consider the selectinload() strategy for better flexibility in loading objects.Nc                 .    [         R                  " S5      e)Nz@Can't use the ORM yield_per feature in conjunction with unique()sa_excInvalidRequestError)entrys    kC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/orm/loading.py
_no_uniqueinstances.<locals>._no_unique[   s    ((N
 	
    c                    ^  U 4S jnU$ )Nc                 6   > [         R                  " ST-  5      e)NzkCan't apply uniqueness to row tuple containing value of type %r; this datatype produces non-hashable valuesr   )objdatatypes    r   go,instances.<locals>._not_hashable.<locals>.goa   s$    ,,F r     )r$   r%   s   ` r   _not_hashable instances.<locals>._not_hashable`   s    	 	r    )_unique_filtersc              3     >#     U n0 Tl         U(       a  T	R                  U5      nU(       d  g OT	R                  5       nT(       a  T
S   nU Vs/ s H
  oC" U5      PM     nnO3U VVs/ s H$  n[        T
 Vs/ s H
  o3" U5      PM     sn5      PM&     nnnTR                  R                  5        H  u  pgUR                  TU5        M     Uv   U(       d  g M  s  snf s  snf s  snnf 7f)Nr   )partials	fetchmany_raw_all_rowstuplepost_load_pathsitemsinvoke)size	yield_perfetchprocrowrowspath	post_loadcontextcursorprocesssingle_entitys           r   chunksinstances.<locals>.chunks   s     I!G((3  ,,.qz-23UcS	U3 GLFKsE9499:e   $+#:#:#@#@#B  $/ $C J7  4 :s7   AC)C C)(C#7CC#AC)C##C)prebuffer_rowsFc                    > [        T5      $ N)iter)r3   _prebuffereds    r   r?   r@      s    %%r    )source_supports_scalarsrawdynamic_yield_per)filteredis_single_entityc                 .    [         R                  " S5      e)Nz~The unique() method must be invoked on this Result, as it contains results that include joined eager loads against collectionsr   )r#   s    r   require_unique!instances.<locals>.require_unique   s    ,,& r    )(
_new_runidrunidr0   compile_state_has_mapper_entitiesload_options_only_return_tupleslen	_entitiessupports_single_entitylistziprow_processorr4   loaders_require_bufferingloaders_require_uniquingr   r   	Exceptionr   safe_reraiseclose_legacy_uniquinguse_id_for_hash_non_hashable_value_null_column_typeidcolumntyper   execution_optionsgetr   r;   _is_server_side_attributesuniondictmulti_row_eager_loaders_unique_filter_state)r<   r;   rP   rI   query_entitylabelsextrar   r(   entunique_filtersrow_metadatar?   resultrL   rE   r=   r>   s   ``             @@@r   	instancesru   (   s    LGM G))M11H  444 	>''(A-	>##A&== #' )0(=(=(G(G(G !..w?(G$
 & --//,,= 

 ,, ,,66
 7     ##**((	   7 	 
* ,,66	
 7     ''C,C,C szz/ ""  7 	 	
 (~L <   $$%5u== F4L)	& # - ..88F  ++11h?F
 44	 (,^&<#**+MO$   LLN !   (
	
sK   "L2 1L-AL2 ANA4N
-L2 2NM."N.
M>	8N>Nzsqlalchemy.orm.contextTc           
      X   [         R                  R                  nU(       a  U R                  5         UR                  R                  USS9nU R                  n SU l        [        UR                  5       VVs/ s H#  u  px[        XR                  5      (       d  M!  UPM%     n	nnUR                   V
s/ s H  oR                  PM     nn
[        XR                   V
s/ s H  oR                  PM     sn
5      n/ nUR                  5        Hk  nU	 HK  nX   c  M
  U R                  [         R"                  " X   5      [         R$                  " X   5      U0 0 S9X'   MM     UR'                  U" U5      5        Mm     UR)                  U5      X`l        $ s  snnf s  sn
f s  sn
f ! X`l        f = f)aZ  Merge a :class:`_engine.FrozenResult` back into a :class:`_orm.Session`,
returning a new :class:`_engine.Result` object with :term:`persistent`
objects.

See the section :ref:`do_orm_execute_re_executing` for an example.

.. seealso::

    :ref:`do_orm_execute_re_executing`

    :meth:`_engine.Result.freeze`

    :class:`_engine.FrozenResult`

Flegacyload
_recursive_resolve_conflict_map)r   	preloadedorm_context
_autoflushORMSelectCompileState_create_entities_collection	autoflush	enumeraterU   
isinstance_MapperEntity_label_namer   _extra_entitiesrewrite_rows_merger   instance_stateinstance_dictappendwith_new_rows)session	statementfrozen_resultrz   querycontextctxr   iemapped_entitiesrq   keyskeyed_tuplert   newrows                  r   merge_frozen_resultr      s   " >>--L

,
,
H
H% I C !!I&! "#--0
0!778 0 	 

 ,/==9=C=9"--@-3&&-@
 #002F$9( '"11&)<"00;!#%.0 !/ !FI % MM+f-. 3 **62%7

 : A& &sC   F! 8 FF"F! 3FF! F
2$F! A0F! F! !F)z:func:`_orm.merge_result`zyThe function as well as the method on :class:`_orm.Query` is superseded by the :func:`_orm.merge_frozen_result` function.)alternativebecomes_legacyc                 h   [         R                  R                  nU R                  nU(       a  UR	                  5         [        U[        5      (       a  Un[        UR                  5      nOSnUR                  R                  U SS9nUR                  n SUl        U(       + =(       a    [        UR                  5      S:H  nU(       a  [        UR                  S   UR                  5      (       aM  U V	s/ s H>  n	UR                  [         R"                  " U	5      [         R$                  " U	5      U0 0 S9PM@     n
n	GO(['        U5      n
GO[)        UR                  5       VVs/ s H#  u  p[        XR                  5      (       d  M!  UPM%     nnn/ n
UR                   Vs/ s H  oR*                  PM     nn[-        XR                   Vs/ s H  oR.                  PM     sn5      nU Hz  n['        U5      nU HO  nUU   c  M  UR                  [         R"                  " UU   5      [         R$                  " UU   5      U0 0 S9UU'   MQ     U
R1                  U" U5      5        M|     U(       a  UR3                  U
5      Xtl        $ [        U
5      Xtl        $ s  sn	f s  snnf s  snf s  snf ! Xtl        f = f)zMerge a result into the given :class:`.Query` object's Session.

See :meth:`_orm.Query.merge_result` for top-level documentation on this
function.

NTrw   Fr   r   ry   )r   r}   r~   r   r   r   r   rD   datar   r   r   rT   rU   r   r   r   r   r   rW   r   r   r   r   r   	with_data)queryiteratorrz   r   r   r   r   r   r>   instancert   r   r   r   rq   r   r   r7   r   s                      r   merge_resultr     sy    >>--LmmG (L)) **+

,
,
H
Hd I C !!I1&!))Ec#--.@A.E#--*L,F,FGG %-	 %- NN"11(;"00:!#%.0 #  %-  	 h &cmm44DAa!;!;< 4  
 F/2}}=}OO}D=&mmDms**mDK  c(Aay,$+NN&55fQi@&44VAY?!%')24 %3 %q	 ) k&12    **62 & <%W	 > E* &sW   A J) 4AJ9)J) " JJJ) J4J) 	J$
 J) A:J) 
J) J) )J1c                    U R                   R                  U5      nUb  [        R                  " U5      nUR                  (       a0  UR
                  R                  U5      (       d  [        R                  $ UR                  (       aV  U[        R                  -  (       d  [        R                  $ U[        R                  -  (       d  U$  UR                  XS5        U$ U$ g! [        R                   a    U R                  U/5         gf = f)ziLook up the given key in the given session's identity map,
check the object for expired state if found.

N)identity_maprg   r   r   inheritsmapperisaPASSIVE_CLASS_MISMATCHexpiredSQL_OKPASSIVE_NO_RESULTRELATED_OBJECT_OK_load_expiredorm_excObjectDeletedError_remove_newly_deleted)r   r   keypassiver   states         r   get_from_identityr   b  s    
 ##'',H))(3??5<<#3#3F#;#;444 ==Z...!333z;;;
  ##E3 x -- --ug6s   
C   &D	D	NFc
                 J    Ub  US   n
US   nOS=p[        U UU
UUUUUUUU	S9$ )z.Load the given identity key from the database.Nr   r   )rR   refresh_statewith_for_updateonly_load_propsidentity_tokenno_autoflushbind_argumentsrf   )load_on_pk_identity)r   r   r   rR   r   r   r   r   r   rf   identr   s               r   load_on_identr     sQ     AQ!%%!#''%!%+ r    c           	      x   UnUR                  5       nUR                  (       a   eSSKJnJn  Uc  UR
                  nUR                  [        R                  L a  UR                  nOUR                  nUGb  UR                  S   nUR                  u  nnSU;   a  [        [        UR                  U5       VVs/ s H  u  nnUb  M  UU   R                  PM     snn5      n[         R"                  " UU5      n[%        U5      [%        U5      :X  a  [&        R(                  " S5        [         R*                  " USS05      4Ul        [/        [        UUR                  5       VVs/ s H  u  nnUU   R                  U4PM     snn5      nOSnUb	  SnX\l        O#UR0                  b  SnUR0                  Ul        OSnU(       aE  UR2                  (       a4  US	UR4                  R6                  0-  nUR8                  " UR2                  6 n[;        UUUUUUS
9u  nnUUl        SUl        U(       a  USS0-  n[&        R>                  RA                  U
SU05      n
U RC                  UUU
U	S9RE                  5       RG                  5       n URI                  5       $ s  snnf s  snnf ! [J        RL                   a     gf = f)z6Load the given primary key identity from the database.r   )QueryContextORMCompileStateNplugin_subjectzofully NULL primary key identity cannot load any object.  This condition may raise an error in a future release.
_orm_adaptTF_current_path)version_checkr   r   r   r   _sa_orm_load_options)paramsrf   r   )'_clone_is_lambda_elementr;   r   r   default_load_options_compile_optionsr   default_select_compile_optionsdefault_compile_options_propagate_attrs_get_clausesetrX   primary_keyr   sql_utiladapt_criterion_to_nullrT   r   warn_deep_annotate_where_criteriark   _for_update_argrR   	load_pathparentoptions_set_get_options	_order_by
EMPTY_DICT
merge_withexecuteuniquescalarsoner   NoResultFound)r   r   primary_key_identityrR   r   r   r   r   r   r   rf   r   qr   r   compile_optionsr   r   _get_paramscolvaluenonesid_valr   r   r   new_compile_optionsrt   s                               r   r   r     s     EA#### 7#88 	""55	6 *AA#44'''(89%+%7%7"k '' '***,@''
U 	 )K$(('E #::;NK5zS!566		 ##K,1EF
  ,/(&*<*<,,'FK [)--v6,
 "+				*!1133O]-D-D-K-KLLII}112(8#'#%)% -AAKu--222LA 	/)	 	 	
 
	 zz|W.j    s$   9
J
J
$J
J" "J98J9c                     0 n0 nU(       a  X8S'   U(       a  X(S'   U(       a	  XXS'   SUS'   U(       a  [        U5      US'   U(       a  XhS'   U(       a  X-  nU(       a  X-  n X4$ )N_version_check_populate_existing_refresh_stateT_for_refresh_state_only_load_props_refresh_identity_token)	frozenset)	compile_optload_optpopulate_existingr   r   r   r   r   rR   s	            r   r   r   "  s{     OL)6%&->)*)6%&04,-.7.H*+2@./ &  r    c	           	         U(       a  UR                  U5      n
OUR                  n
0 nUR                  U R                  SU5        U=(       a$    [	        U5      S:H  =(       a    US   R
                  nU
 H7  nU(       a  UR                  U;  a  M  UR                  " U UUU4UUUUS.U	D6  M9     Ub:  XR                  La+  U(       a  UR                  U   nOUnUR                  U5        g g g )Nmemoized_setupsr   )r   column_collectionmemoized_populatorscheck_for_adapt)_iterate_polymorphic_properties_polymorphic_propertiesr   r   rT   is_aliased_classr   setuppolymorphic_oncolumnsr   )rP   r   rn   r9   adapterr   with_polymorphicr   polymorphic_discriminatorkwpoly_propertiesquick_populatorsr   r   pds                  r   _setup_entity_queryr  B  s      @@
 !88HH]%%'8:JK N#d)q.NT"X5N5NO uyy?	
	

 ,/ 0+
	
 
	
	 !" 	"-%-B-BB !:;B*B  $ C 	.r    c                 L    [         R                  " S[        U 5      < S35        g )NzLoading context for aW   has changed within a load/refresh handler, suggesting a row refresh operation took place. If this event handler is expected to be emitting row refresh operations within an existing load or refresh operation, set restore_load_context=True when establishing the listener to ensure the context remains unchanged when the event handler completes.)r   r   r   )r   s    r   _warn_for_runid_changedr  |  s    II !*% 0	3r    c
                 .  ^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-^.^/^0^1^2 TR                   mTR                  n
ST4nUR                  U
R                  US5      nUGc	  TR                  nTb  UR                  U4S jT 5       5      nUR                  TR                  S[        5      n/ n/ / / / / / / S.nTcD  TR                  nU(       a  U Vs/ s H  nUR                  U   PM     nnUR                  U5      m*OSm*UUT*S.nU GH@  nUU;   Ga$  UU   nU[        L a,  US   R                  UR                  UR                  45        ME  U[        L a"  US   R                  UR                  S	45        Mp  U[        L a,  US   R                  UR                  UR                   45        M  SnU(       a$  UR                  U   nUb  UR#                  US	5      nU(       d  UR#                  US	5      nU(       a#  US
   R                  UR                  U45        GM  UR%                  TU UTUUU5        GM/  UR                  U5        GMC     UR'                  U
R                  X5        US   nUR)                  5        VVs0 s H  u  nnU[+        U5      _M     snnm(US    H  nUR%                  TXTX5T(5        M     TR,                  m+TR                  R.                  R0                  (       a  TR                  R.                  U-   OUm$TR2                  R4                  m0TR6                  =(       d    TR8                  m'[;        TR<                  R>                  R@                  5      m#[;        TR<                  R>                  RB                  5      m,[;        TR2                  R>                  RD                  5      m&T&(       a   TR2                  R>                  RD                  m%[        RF                  m![        RH                  m TR2                  RJ                  m/TRL                  m.TRN                  mTRP                  m1T1(       a9  TRR                  nUb(  U(       a  UR                  U   nUR#                  U5      m2OSm2T(       d  U	b  SUR0                  4nUTR                  ;   aJ  TR                  U   RT                  S:X  a-  TRW                  TR                  U   RX                  S   U	5      nOTRW                  SU	5      nU(       a;  UU	La6  Tb   e[[        TUU5      n[\        R_                  TT$UR`                  UUU5        [\        Rc                  TT$T5      m)T(       a!  TR                  m-T-c  TRe                  T5      m-OSm-US   m*TRf                  (       a  [        Rh                  m"O[        R
                  m"UUUU U!U"U#U$U%UUU&U'U(U)U*U+U,U-UU.U/U0U1U24S jnTRj                  (       a*  U	(       d#  T(       d  UUU"U*4S jn[m        UTU TUUUUU5	      nU$ s  snf s  snnf )zYProduce a mapper level row processor callable
which processes rows into mapped instances.gettersNc              3   B   >#    U  H  nTR                   U   v   M     g 7frC   )_props).0kr   s     r   	<genexpr>&_instance_processor.<locals>.<genexpr>  s      '*9Qa /s   r   )newquickdeferredexpiredelayedexistingeager)cached_populatorstodoprimary_key_getterr  r  Fr  r  r  loader))selectinload_polymorphicTentitiesr  c                   > T(       a.  TnUR                  5       nT" U5      nUR                  T :g  nSnSnOTT" U 5      T4nT"R                  U5      nUbL  T" U5      nT" U5      nUR                  T :g  nU(       + nSnT#(       a  T$(       a  U(       d  [        TXU T$5        OfT" US   5      (       a  g SnSnSnTR                  R                  5       nT" U5      nT" U5      nXql        TUl        T!Ul        T"R                  X5        TnTUL a  SnU(       d  U(       Ga~  U(       a  T(       d  U(       d  TUl
        TUl        [        TU UUUTUUT5	        U(       Ga%  UR                  n	U(       a~  T(       aA  UR                  R                  R                  UT5        UR                  U	:w  a  [!        U5        T(       a.  T" TR"                  U5        UR                  U	:w  a  [!        U5        OIT(       aB  UR                  R                  R%                  UTT5        UR                  T :w  a  [!        U5        U(       d  UR&                  (       a3  T(       a  T(       a  UR)                  UT5        OUR+                  UT"5        T(       a  TR-                  US5        U$ UR.                  n
UTR0                  ;  nU(       a  U
(       d
  TS   (       a  [3        TU UUUTU
T5      nU(       af  T(       aN  UR                  n	UR                  R                  R%                  UTU5        UR                  U	:w  a  [!        U5        UR)                  X;5        T(       a#  TR4                  (       a  TR-                  US5        U$ )NTFr   r  )r#   rO   rg   _validate_version_idclass_managernew_instancer   r   
session_id_add_unpresentrR   r   _populate_fullmanagerdispatchrz   r  r   refreshmodified_commit_commit_all	add_stateunloadedr,   _populate_partialinvoke_all_eagers)%r7   r   r   dict_isnewcurrentloadloaded_instanceidentitykeyeffective_populate_existingexisting_runidr1  to_loadr;   identity_classr   r   r   is_not_primary_keyload_evtr   loaded_as_persistentr   r   persistent_evtr   
populatorsr:   r  propagated_loader_optionsrefresh_evtrefresh_identity_keyr   rO   r'  session_identity_mapr   version_id_getters%               r   	_instance&_instance_processor.<locals>._instances  s     !Eyy{H!(+EKK5(EK#O
 "3'K ,//<H#&x0%h/u,"'i"' %6{(c3D &k!n55""&!//<<>%h/&x0'	'5$ $. $33EG&7#E!*.'
 5 )1L%>""++
  "'"..33E7C ;;.83E:%,W__eD ;;.83E: MM**22w {{e+/6.%..$e_=))%1EF##E40J ? ~~H!1!11EH
7(;
 ,	 ")...66ugwO ;;.83E:MM%1W66##E51r    c                 @   > TT" U 5      T4nT" US   5      (       d  U$ g )Nr   r'   )r7   r8  r<  r   r=  r  s     r   ensure_no_pk)_instance_processor.<locals>.ensure_no_pk  s2    "3'K
 &k!n55""r    )7_identity_classrP   rg   r   	_prop_setintersectionr   r   r  _tuple_getterr	   r   r   _deferred_column_loaderr   r
   _raise_column_loader_gettercreate_row_processorr   r1   rW   rB  current_pathr9   r   r   r   always_refreshboolr%  r+  rz   r,  r?  r   r   hash_keyrO   r   r   version_id_colstrategy_should_selectin_load
local_opts_load_subclass_via_inPostLoadcallable_for_pathr   for_context_identity_key_from_stateallow_partial_pks
issupersetpolymorphic_map_decorate_polymorphic_switch)3rn   r   r;   rt   r9   r  r   r   r  _polymorphic_fromrP   
getter_keyr  propsr	  r  r  pk_colscpropr   getteradapted_colr   r   rX  selectin_load_via	callable_rG  rJ  r<  r   r   r   r=  r>  r   r?  r@  r   rA  r:   r  rB  rC  rD  rO   r'  rE  r   rF  s3    ``   ``                      @@@@@@@@@@@@@@@@@@@@@r   _instance_processorro    s   * ++N))M V$Jhh}//TBG   &&& '*9' E  88 19
 
  ((G7>?w!7??1-w?!'!5!5g!>!% "3"4

 D''&t,**%e,334#?#?@ 11 &h/66%7HI,,%e,334#<#<= "F* '.ooc&:&2%+^^K%GF!!'U!;)'299488V:LM
 11#( ""#- D!A D 	)):? 345F5L5L5NO5NzsE#tE{"5NOJ!!\*	
  
 !( A A   --22 	**T1  #??7711JV5J5JF((11667Hv++44<<=K'//22GGHN&77LL..N,,M))JMME++N))M..%!(!@ &~ > $.:#'$$$););C)@)I)I N
 *
 !' < <""3'22:>!!
 !' < <'! !2:K!K #***-gt=NOI&&!((!! $$WiII,00' $*#B#B$   $$%9:&11&33_ _ _ _B &7		 		 1%

	 I @` Ps   X8Xc                    ^^^^ UR                   n[        UR                  R                  5      S:H  mUR                  (       a  UR                  U5      u  mmmOUR                  u  mmmUUUU4S jnU$ )Nr   c                 8  > U R                   nT4UR                  -   T
4-   nTR                  " U6 nU R                  R                  Ul        U=R
                  SUR                  0-  sl        U R                  (       a  UR                  SS9nU R                  R                  U[        U VV	s/ s H-  u  pT(       a  UR                  S   S   OUR                  S   PM/     sn	nS95      R                  5       R                  5       R                  5         g s  sn	nf )Nr   T)r   r   r   )primary_keys)r   _with_optionsr   rP   r   r   r   r   rf   r   r   rk   r   r   r   all)r;   r9   states	load_onlyeffective_entity
orig_queryr   q2r   
load_attrsdisable_opt
enable_optr   zero_idxs             r   do_load&_load_subclass_via_in.<locals>.do_load;  s    ]]
-*":"::k^KYY %33KK
==$$%%%=B .4-3) (0EIIaLOUYYq\A-3	
 &(779SSUs   -4D)r   rT   base_mapperr   r   _subclass_load_via_in_subclass_load_via_in_mapper)	r;   r9   entityr   r~  r{  r|  r   r}  s	        @@@@r   r\  r\  1  sj    ]]F6%%112a7H%+%A%A&%I":{%+%H%H":{# #, Nr    c	                    U(       a  U R                   Ul         US    H  u  pU
" U5      X9'   M     U(       aE  US    H;  u  pUR                  U	S 5        U(       d  M   UR                  R                  U	5        M=     O2US    H)  u  pU(       d  M  UR                  R                  U	5        M+     US    H  u  pU" X#U5        M     US    H  u  pU" X#U5        M     g XRR                  :w  a=  XRl        US    H  u  pX;  d  M  U
" U5      X9'   M     US    H  u  pU" X#U5        M     g US    H  u  pU" X#U5        M     g )Nr  r  r  r  r  )rO   popexpired_attributesaddr   )r;   r7   r   r4  r5  r   r7  r   rA  r   rk  set_callable	populators                r   r)  r)  T  s>    mm%g.KCEJ /%/%9!		#t$<,,005 &:
 &0%9!<,,005 &: )/NCeC( 0(3NCeC( 4	oo	% $ &g.KC#C[
 /
 )4NCeC( 5 )4NCeC( 5r    c                    U(       d.  U R                   U   nUS    H  u  pX;   d  M  U
" X#U5        M     OUnXR                   U'   US    H  u  pX;   d  M  U" U5      X9'   M     US    HB  u  pX;   d  M  UR                  U	S 5        U(       d  M'  UR                  R                  U	5        MD     US    H  u  pX;   d  M  U
" X#U5        M     US    H  u  pX;   d  M  U
" X#U5        M     US    H  u  pX;  d  M  U
" X#U5        M     U$ )Nr  r  r  r  r  r  )r,   r  r  r  )r;   r7   r   r4  r5  r   r1  rA  r;  r   r  rk  r  s                r   r2  r2    s    ""5)(4NC~%, 5 ")%g.KC~#C[
 / ",H!5C~		#t$<,,005	 "6
 )/NC~%, 0 )3NC~%, 4 %W-eC( . Nr    c           
          U R                  XU R                  5      U" U5      :w  aL  [        R                  " S[	        U5      < SU R                  XU R                  5      < SU" U5      < S35      eg )Nz
Instance 'z' has version id 'z3' which does not match database-loaded version id 'z'.)_get_state_attr_by_columnrX  r   StaleDataErrorr   )r   r   r4  r7   rk  s        r   r$  r$    sr    ''f++	 $$ % 00&"7"7 s

 
	
r    c	                    ^ ^^^^^^^^^^ Ub  UmOTR                   mTc  T $ T(       a  TR                  T   mUUUUUU4S jn	[        R                  " U	5      mTR	                  T5      mUUU UUU4S jn
U
$ )Nc           
         >  TR                   U    nUTL a  g UR                  T5      (       d  g[        TUTTTTTS9$ ! [         a    [	        SU -  5      ef = f)NF)re  z*No such polymorphic_identity %r is defined)rc  r   ro  KeyErrorAssertionError)discriminator
sub_mapperr  r;   r   r9   rn   rt   s     r   configure_subclass_mapper?_decorate_polymorphic_switch.<locals>.configure_subclass_mapper  s    	//>J V#^^F++&"(   	 <}L 	s	   > Ac           
      @  > T" U 5      nUbd  TU   nU(       a  U" U 5      $ USL aC  T" U 5      nU(       a3  [         R                  " SU< ST	< STR                  U   < ST< 35      eg T" U 5      $ T" U 5      nU(       a  [         R                  " SU< ST	< S35      eg )NFzRow with identity key zG can't be loaded into an object; the polymorphic discriminator column 'z' refers to z-, which is not a sub-mapper of the requested z	' is NULL)r   r   rc  )
r7   r  rG  r8  rJ  rk  instance_fnr   polymorphic_instancesr  s
       r   polymorphic_instance:_decorate_polymorphic_switch.<locals>.polymorphic_instance  s    s$-m<I ~%e#*3/ 44 (*"22=A"	   "3''&s+K00 *>;  r    )r  r  r   PopulateDictrR  )r  r;   rn   r   rt   r9   r  r  rJ  r  r  rk  r  r  s   `````` ``  @@@r   rd  rd    sx     !,2.. 8 . !--.GH^^N+F$ $L  r    c                   ^    \ rS rSrSrSrS rS rS r\	S 5       r
\	S 5       r\	S	 5       rS
rg)r]  i  z4Track loaders and states for "post load" operations.)loadersru  	load_keysc                 T    0 U l         [        R                  " 5       U l        S U l        g rC   )r  r   OrderedDictru  r  )selfs    r   __init__PostLoad.__init__   s     &&(r    c                      X R                   U'   g rC   )ru  )r  r   	overwrites      r   r0  PostLoad.add_state%  s    
 'Er    c                    U R                   (       d  g [        R                  R                  U5      nU R                  R                  5        H  u  p4pVnU R                   R                  5        VV	s/ s H4  u  pUR                  R                  R                  U5      (       d  M1  X4PM6     n
nn	U
(       d  Mk  U" XXR                  /UQ70 UD6  M     U R                   R                  5         g s  sn	nf rC   )ru  r   PathRegistrycoercer  valuesr1   r*  r   r   r  clear)r  r;   r9   tokenlimit_to_mapperr   argr  r   r  ru  s              r   r2   PostLoad.invoke,  s    {{))0067;||7J7J7L3EF )-(9(9(;(;$E==''++O< #"(;  
 vwfnnIsIbI 8M 	s   00C-$C-c                 p    UR                   R                  UR                  5      nUb  U(       a  X4l        U$ rC   )r0   rg   r9   r  )clsr;   r9   r   pls        r   r_  PostLoad.for_context:  s-    $$((3>o*L	r    c                     UR                   UR                  ;   =(       a%    X1R                  UR                      R                  ;   $ rC   )r9   r0   r  )r  r;   r9   r   s       r   path_existsPostLoad.path_existsA  s<     II000 B..tyy9AAA	
r    c                     UR                   UR                  ;   a  UR                  UR                      nO"[        5       =oR                  UR                   '   XCXVU4UR                  U'   g rC   )r9   r0   r]  r  )	r  r;   r9   r  r  loader_callabler  r  r  s	            r   r^  PostLoad.callable_for_pathH  sX     99///((3B6>j@B((3"_2N

5r    )r  r  ru  N)__name__
__module____qualname____firstlineno____doc__	__slots__r  r0  r2   classmethodr_  r  r^  __static_attributes__r'   r    r   r]  r]    sW    >0I
'   
 
 O Or    r]  c           	      :   UR                   nU(       d"  [        R                  " S[        U5      -  5      e[	        UR
                  5      nSn[	        U[        R                  -  5      =(       d    UR                   R                  nU(       a)  UR                  U R                  R                  5       5      nU R                  (       as  U R                  (       db  U R                  X5      nUbN  SSKJn	  U	" X5      R#                  [$        R&                  " U 5      R)                  S5      5      n
[+        UU
SUUUS9nUSL Ga6  U(       a  UR
                  nOU R,                   Vs/ s H  oR.                  U   R
                  PM     nnUR0                  R                  U5      (       a"  [2        R4                  " S[        U5      -  5      eU R7                  U5      n[8        R:                  " U5      (       a  U R<                  (       a  [8        R>                  " U5      (       a!  [@        RB                  " S	[        U5      5        g[+        U[D        RF                  " U 5      RI                  [J        5      UUUUS
9nU(       a  Uc  [        RL                  " U5      eggs  snf )z4initiate a column-based attribute refresh operation.zQInstance %s is not bound to a Session; attribute refresh operation cannot proceedFNr   )FromStatement*)r   r   r   z_Instance %s cannot be refreshed - it's not  persistent and does not contain a full primary key.zwInstance %s to be refreshed doesn't contain a full primary key - can't be refreshed (and shouldn't be expired, either).)r   r   r   )'r   r   DetachedInstanceErrorr   rV  r   r   NO_AUTOFLUSH
autocommitrN  attrsr   r   concrete_optimized_get_statementr   r  r   r   Loadundeferr   r   _columntopropertyr  r   r   r`  r   issubsetra  rb  r   warn_limitedr   selectset_label_styler   r   )r   r   attribute_namesr   r   has_keyrt   r   r   r  stmtidentity_keyr   pk_attrss                 r   load_scalar_attributesr  S  sP    mmG++9<Ee<LN
 	

 599oGF 	Wz.../K5==3K3K  )66v||7H7H7JKv
 33EK	  - 3;; %%f-55c:D # /#)F  99L >D=O=O=Oc((-11=O   ''44X>>0024=e4DE 
 "::5AL |,,V5M5M!!,//6 % 	 MM&!11. +%	
 6>((// "wGs   ""J)T)NNNNN)NNN)NNNN)4r  
__future__r    r   r   r   r   r   baser	   r
   r   r   r   r   r   r   enginer   engine.resultr   r   r   sqlr   sql.selectabler   r   counterrN   ru   preload_moduler   deprecated_20r   r   r   r   r   r   r  r  ro  r\  r)  r2  r$  rd  objectr]  r  r'   r    r   <module>r     s   '     " " '      ! 1 ( 0 " ; (\\^
dN -.8& /8&v F	 -.M& /M&`L ??ooL ??ooy~ !N "7%t	& "fR F4)tD
$V r5Ov 5Opf0r    