
    -hA                     b    S SK r SSKJr  SSKJr  SSKJr   " S S\5      r " S S	\5      rS
 r	g)    N   )util   )excc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS 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g)IdentityMap   c                 f    0 U l         [        5       U l        [        R                  " U 5      U l        g N)_dictset	_modifiedweakrefref_wrselfs    lC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/orm/identity.py__init__IdentityMap.__init__   s"    
;;t$    c                     [         U l        g r   )_killed_add_unpresentr   s    r   _killIdentityMap._kill   s
    %r   c                 6    U R                   R                  5       $ r   )r   keysr   s    r   r   IdentityMap.keys   s    zz  r   c                     [        5       er   NotImplementedErrorr   states     r   replaceIdentityMap.replace       !##r   c                     [        5       er   r!   r#   s     r   addIdentityMap.add   r'   r   c                 &    U R                  U5        g)zMoptional inlined form of add() which can assume item isn't present
in the mapN)r)   r   r$   keys      r   r   IdentityMap._add_unpresent!   s     	r   c                     [        S5      eNz%IdentityMap uses add() to insert datar!   )r   dict_s     r   updateIdentityMap.update&       !"IJJr   c                     [        S5      eNz(IdentityMap uses remove() to remove datar!   r   s    r   clearIdentityMap.clear)       !"LMMr   c                     U R                   Ul        UR                  (       a  U R                  R	                  U5        g g r   )r   _instance_dictmodifiedr   r)   r#   s     r   _manage_incoming_state"IdentityMap._manage_incoming_state,   s,    #xx>>NNu% r   c                 b    U? UR                  (       a  U R                  R                  U5        g g r   )r;   r<   r   discardr#   s     r   _manage_removed_state!IdentityMap._manage_removed_state2   s&     >>NN""5) r   c                     U R                   $ r   )r   r   s    r   _dirty_statesIdentityMap._dirty_states7   s    ~~r   c                 ,    [        U R                  5      $ )zKreturn True if any InstanceStates present have been marked
as 'modified'.

)boolr   r   s    r   check_modifiedIdentityMap.check_modified:   s    
 DNN##r   c                 
    X;   $ r    r   r-   s     r   has_keyIdentityMap.has_keyA   s
    {r   c                     [        S5      er6   r!   r   s    r   popitemIdentityMap.popitemD   r9   r   c                     [        S5      er6   r!   )r   r-   argss      r   popIdentityMap.popG   r9   r   Nc                     [        S5      er0   r!   )r   r-   defaults      r   
setdefaultIdentityMap.setdefaultJ   r4   r   c                 ,    [        U R                  5      $ r   )lenr   r   s    r   __len__IdentityMap.__len__M   s    4::r   c                     [        5       er   r!   r   s    r   copyIdentityMap.copyP   r'   r   c                     [        S5      er0   r!   )r   r-   values      r   __setitem__IdentityMap.__setitem__S   r4   r   c                     [        S5      er6   r!   rL   s     r   __delitem__IdentityMap.__delitem__V   r9   r   )r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r%   r)   r   r2   r7   r=   rA   rD   rH   rM   rP   rT   rX   r\   r_   rc   rf   __static_attributes__rK   r   r   r   r      sm    %
&!$$
KN&*
$NNK$KNr   r   c                       \ rS rSrS rS rS rS rS rS r	SS	 jr
S
 rS rS r\R                  (       a  S rS rS rS rS rS rSrg)WeakInstanceDictZ   c                 `    U R                   U   nUR                  5       nUc  [        U5      eU$ r   r   objKeyErrorr   r-   r$   os       r   __getitem__WeakInstanceDict.__getitem__[   s.    

3IIK93-r   c                      XR                   ;   a   U R                   U   nUR                  5       nOg US L$ ! [         a     gf = fNFrq   rt   s       r   __contains__WeakInstanceDict.__contains__b   sQ    		!jj 

3IIK  D=   		s   /7 
AAc                     UR                   U R                  ;   a   U R                  UR                      UL $ g! [         a     gf = fry   )r-   r   rs   r#   s     r   contains_stateWeakInstanceDict.contains_staten   sH    99

"zz%)),55   s   8 
AAc                    UR                   U R                  ;   a1   U R                  UR                      nX!La  U R                  U5        Og S nXR                  UR                   '   U R	                  U5        W$ ! [         a     N7f = fr   )r-   r   rA   rs   r=   )r   r$   existings      r   r%   WeakInstanceDict.replacew   s~    99

"	 ::eii0
 (..x8H %

599##E*  s   A9 9
BBc                 d   UR                   nX R                  ;   af   U R                  U   nX1LaQ  UR                  5       nUb=  [        R                  " S[
        R                  " U5      < SUR                   < S35      eOgXR                  U'   U R                  U5        g! [         a     N,f = f)NzCan't attach instance z; another instance with key z$ is already present in this session.FT)	r-   r   rr   sa_excInvalidRequestErrororm_util	state_strrs   r=   )r   r$   r-   existing_stateru   s        r   r)   WeakInstanceDict.add   s    ii**!!%C
 ".&**,A}$88  (11%8%))E  % !

3##E*#  s   B" "
B/.B/c                 B    XR                   U'   U R                  Ul        g r   )r   r   r;   r,   s      r   r   WeakInstanceDict._add_unpresent   s    

3#xxr   Nc                     XR                   ;  a  U$  U R                   U   nUR                  5       nUc  U$ U$ ! [         a    Us $ f = fr   rq   )r   r-   rW   r$   ru   s        r   getWeakInstanceDict.get   sU    jj N		JJsOE
 		AyH  	N	s   9 AAc                     U R                  5       n/ nU H5  nUR                  5       nUc  M  UR                  UR                  U45        M7     U$ r   )
all_statesrr   appendr-   r   valuesresultr$   rb   s        r   itemsWeakInstanceDict.items   sJ    "EIIKE uyy%01  r   c                     U R                  5       n/ nU H)  nUR                  5       nUc  M  UR                  U5        M+     U$ r   )r   rr   r   r   s        r   r   WeakInstanceDict.values   sA    "EIIKE e$ 
 r   c                 4    [        U R                  5       5      $ r   )iterr   r   s    r   __iter__WeakInstanceDict.__iter__   s    DIIK  r   c                 4    [        U R                  5       5      $ r   )r   r   r   s    r   	iteritemsWeakInstanceDict.iteritems   s    

%%r   c                 4    [        U R                  5       5      $ r   )r   r   r   s    r   
itervaluesWeakInstanceDict.itervalues   s    &&r   c                     [         R                  (       a  U R                  R                  5       $ [	        U R                  R                  5       5      $ r   )r   py2kr   r   listr   s    r   r   WeakInstanceDict.all_states   s4    99::$$&&

))+,,r   c                      U R                   UR                     nX!L a'  U R                   R                  UR                  S 5        g g ! [         a     g f = fr   )r   r-   rT   rs   r   r$   sts      r   _fast_discardWeakInstanceDict._fast_discard   sO    	0EII&B
 {

uyy$/ 	  		s   A 
AAc                 &    U R                  U5        g r   )safe_discardr#   s     r   r@   WeakInstanceDict.discard   s    % r   c                    UR                   U R                  ;   aW   U R                  UR                      nX!L a8  U R                  R                  UR                   S 5        U R                  U5        g g g ! [         a     g f = fr   )r-   r   rT   rA   rs   r   s      r   r   WeakInstanceDict.safe_discard   sr    99

"6ZZ		*
 ;JJNN599d3..u5  #  s   A3 3
B ?B rK   r   )rh   ri   rj   rk   rv   rz   r}   r%   r)   r   r   r   r   r   r   r   r   r   r   r   r@   r   rl   rK   r   r   rn   rn   Z   s[    
!&2(
! yy	&	'-
0!
6r   rn   c                 Z    [         R                  " S[        R                  " U 5      -  SS9e)NzObject %s cannot be converted to 'persistent' state, as this identity map is no longer valid.  Has the owning Session been closed?lkrp)code)r   r   r   r   )r$   r-   s     r   r   r      s4     
$
$	!++E2	3 	 r   )
r    r   r   r   r   objectr   rn   r   rK   r   r   <module>r      s8       HN& HNVY6{ Y6xr   