
    [h!$                    P   d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlZddlmZ ddlmZ erddlmZ ddlmZ  ede          Z ede          Z G d d          Z G d de          Zd#d"ZdS )$    )annotations)Any)cast)Dict)Iterable)Iterator)List)NoReturn)Optional)Set)Tuple)TYPE_CHECKING)TypeVarN   )util   )exc)_IdentityKeyType)InstanceState_T)bound_Oc                      e Zd ZU ded<   ded<   ded<   d.d	Zd.d
Zd/dZd0dZd1dZd2dZ	d3dZ
	 d4d5dZd6dZd7dZd8d!Zd9d#Zd0d$Zd2d%Zd:d&Zd2d'Zd2d(Zd;d)Zd<d*Zd1d+Zd=d-ZdS )>IdentityMapzweakref.ref[IdentityMap]_wrz Dict[_IdentityKeyType[Any], Any]_dictSet[InstanceState[Any]]	_modifiedreturnNonec                l    i | _         t                      | _        t          j        |           | _        d S N)r   setr   weakrefrefr   selfs    f/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/orm/identity.py__init__zIdentityMap.__init__+   s)    
;t$$    c                    t           | _        d S r"   )_killed_add_unpresentr&   s    r(   _killzIdentityMap._kill0   s    %r*   List[InstanceState[Any]]c                    t                      r"   NotImplementedErrorr&   s    r(   
all_stateszIdentityMap.all_states3       !###r*   stateInstanceState[Any]boolc                    t                      r"   r1   r'   r5   s     r(   contains_statezIdentityMap.contains_state6   r4   r*   key_IdentityKeyType[Any]c                    t                      r"   r1   r'   r;   s     r(   __contains__zIdentityMap.__contains__9   r4   r*   c                    t                      r"   r1   r9   s     r(   safe_discardzIdentityMap.safe_discard<   r4   r*   _IdentityKeyType[_O]r   c                    t                      r"   r1   r>   s     r(   __getitem__zIdentityMap.__getitem__?   r4   r*   NdefaultOptional[_O]c                    t                      r"   r1   )r'   r;   rE   s      r(   getzIdentityMap.getB        "###r*   Optional[InstanceState[_O]]c                    t                      r"   r1   r>   s     r(   fast_get_statezIdentityMap.fast_get_stateG   rI   r*   Iterable[_IdentityKeyType[Any]]c                4    | j                                         S r"   )r   keysr&   s    r(   rO   zIdentityMap.keysL   s    z   r*   Iterable[object]c                    t                      r"   r1   r&   s    r(   valueszIdentityMap.valuesO   r4   r*   InstanceState[_O]c                    t                      r"   r1   r9   s     r(   replacezIdentityMap.replaceR   r4   r*   c                    t                      r"   r1   r9   s     r(   addzIdentityMap.addU   r4   r*   c                    t                      r"   r1   r9   s     r(   _fast_discardzIdentityMap._fast_discardX   r4   r*   c                0    |                      |           dS )zUoptional inlined form of add() which can assume item isn't present
        in the mapN)rW   r'   r5   r;   s      r(   r-   zIdentityMap._add_unpresent[   s    
 	r*   c                d    | j         |_        |j        r| j                            |           d S d S r"   )r   _instance_dictmodifiedr   rW   r9   s     r(   _manage_incoming_statez"IdentityMap._manage_incoming_stateb   s<    #x> 	&Nu%%%%%	& 	&r*   c                P    |` |j        r| j                            |           d S d S r"   )r]   r^   r   discardr9   s     r(   _manage_removed_statez!IdentityMap._manage_removed_stateh   s8     > 	*N""5)))))	* 	*r*   c                    | j         S r"   )r   r&   s    r(   _dirty_stateszIdentityMap._dirty_statesm   s
    ~r*   c                *    t          | j                  S )z[return True if any InstanceStates present have been marked
        as 'modified'.

        )r7   r   r&   s    r(   check_modifiedzIdentityMap.check_modifiedp   s    
 DN###r*   c                
    || v S r"    r>   s     r(   has_keyzIdentityMap.has_keyw   s    d{r*   intc                *    t          | j                  S r"   )lenr   r&   s    r(   __len__zIdentityMap.__len__z   s    4:r*   )r   r    r   r/   r5   r6   r   r7   r;   r<   r   r7   r5   r6   r   r    r;   rB   r   r   r"   r;   rB   rE   rF   r   rF   r;   rB   r   rJ   )r   rM   )r   rP   )r5   rS   r   rJ   r5   r6   r;   r<   r   r    )r   r   )r   r7   )r   rj   )__name__
__module____qualname____annotations__r)   r.   r3   r:   r?   rA   rD   rH   rL   rO   rR   rU   rW   rY   r-   r_   rb   rd   rf   ri   rm   rh   r*   r(   r   r   %   s        !!!!++++&&&&% % % %
& & & &$ $ $ $$ $ $ $$ $ $ $$ $ $ $$ $ $ $ BF$ $ $ $ $
$ $ $ $
! ! ! !$ $ $ $$ $ $ $$ $ $ $$ $ $ $   & & & &* * * *
   $ $ $ $        r*   r   c                      e Zd ZU ded<   d$dZd%d
Zd&dZd'dZd&dZd(dZ	d)dZ
	 d*d+dZd,dZd-dZd.dZd/d Zd0d!Zd0d"Zd0d#ZdS )1WeakInstanceDictz/Dict[_IdentityKeyType[Any], InstanceState[Any]]r   r;   rB   r   r   c                    t          d| j        |                   }|                                }|t          |          |S NrS   )r   r   objKeyErrorr'   r;   r5   os       r(   rD   zWeakInstanceDict.__getitem__   s;    ($*S/::IIKK93--r*   r<   r7   c                    	 || j         v r"| j         |         }|                                }ndS 	 |d uS # t          $ r Y dS w xY wNF)r   r~   r   r   s       r(   r?   zWeakInstanceDict.__contains__   sh    		!dj  
3IIKKu  D=   	 	 	55	s   +4 
AAr5   r6   c                    |j         | j        v r6t          r	|j         J 	 | j        |j                  |u S # t          $ r Y dS w xY wdS r   )r;   r   r   r   r9   s     r(   r:   zWeakInstanceDict.contains_state   si    9
"" -y,,,z%),55   uu 5s   4 
AAOptional[InstanceState[Any]]c                   |j         J |j         | j        v rC	 | j        |j                  x}}||ur|                     |           nd S # t          $ r d }Y nw xY wd }|| j        |j         <   |                     |           |S r"   )r;   r   rb   r   r_   )r'   r5   existingexisting_non_nones       r(   rU   zWeakInstanceDict.replace   s     y$$$9
""	 /3z%)/DD,
 %E11../@AAAA4         H %
59##E***s   A	 	AAc                F   |j         }|J || j        v rm	 | j        |         }||urI|                                }|2t          j        dt          j        |          d|j         d          ndS # t          $ r Y nw xY w|| j        |<   |                     |           dS )NzCan't attach instance z; another instance with key z$ is already present in this session.FT)	r;   r   r~   sa_excInvalidRequestErrororm_util	state_strr   r_   )r'   r5   r;   existing_stater   s        r(   rW   zWeakInstanceDict.add   s    i$*!!%C
 "..&**,,A}$88  (1%8888%)))E   % !5      
3##E***ts   A2 2
A?>A?r    c                2    || j         |<   | j        |_        d S r"   )r   r   r]   r[   s      r(   r-   zWeakInstanceDict._add_unpresent   s      
3#xr*   rJ   c                6    | j                             |          S r"   )r   rH   r>   s     r(   rL   zWeakInstanceDict.fast_get_state   s     z~~c"""r*   NrE   rF   c                    || j         vr|S 	 t          d| j         |                   }|                                }||S |S # t          $ r |cY S w xY wr}   )r   r   r~   r   )r'   r;   rE   r5   r   s        r(   rH   zWeakInstanceDict.get   su     dj  N		,djo>>E
 		AyH  	 	 	NNN	s   A AA6List[Tuple[_IdentityKeyType[Any], InstanceState[Any]]]c                    |                                  }g }|D ]:}|                                }|j        }|J ||                    ||f           ;|S r"   )r3   r~   r;   append)r'   rR   resultr5   valuer;   s         r(   itemszWeakInstanceDict.items   sd    "" 	, 	,EIIKKE)C??? sEl+++r*   List[object]c                    |                                  }g }|D ]-}|                                }||                    |           .|S r"   )r3   r~   r   )r'   rR   r   r5   r   s        r(   rR   zWeakInstanceDict.values   sP    "" 	% 	%EIIKKE e$$$r*   Iterator[_IdentityKeyType[Any]]c                D    t          |                                           S r"   )iterrO   r&   s    r(   __iter__zWeakInstanceDict.__iter__   s    DIIKK   r*   r/   c                N    t          | j                                                  S r"   )listr   rR   r&   s    r(   r3   zWeakInstanceDict.all_states  s    DJ%%''(((r*   c                    |j         }|J 	 | j        |         }||u r| j                            |d            d S d S # t          $ r Y d S w xY wr"   )r;   r   popr   r'   r5   r;   sts       r(   rY   zWeakInstanceDict._fast_discard  sv     i	*CB
 U{{
sD))))) {	  	 	 	DD	s   = 
A
Ac                0    |                      |           d S r"   )rA   r9   s     r(   ra   zWeakInstanceDict.discard  s    %     r*   c                    |j         }|| j        v r[|J 	 | j        |         }||u r2| j                            |d            |                     |           d S d S # t          $ r Y d S w xY wd S r"   )r;   r   r   rb   r   r   s       r(   rA   zWeakInstanceDict.safe_discard  s    i$*???6Z_
 ;;JNN3---..u55555 ;	    	 s   A 
A)(A)rr   rp   ro   )r5   r6   r   r   ru   rt   r"   rs   )r   r   )r   r   )r   r   rn   rq   )rv   rw   rx   ry   rD   r?   r:   rU   rW   r-   rL   rH   r   rR   r   r3   rY   ra   rA   rh   r*   r(   r{   r{   ~   sZ        ::::   
! 
! 
! 
!	 	 	 	   ,   4( ( ( (# # # # BF     	 	 	 	   ! ! ! !) ) ) )* * * *! ! ! !6 6 6 6 6 6r*   r{   r5   r6   r;   r<   r   r
   c                X    t          j        dt          j        |           z  d          )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   )r5   r;   s     r(   r,   r,   &  s;     
$	!+E22	3 	   r*   )r5   r6   r;   r<   r   r
   )
__future__r   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r$    r   r   r   r   _typingr   r5   r   r   objectr   r   r{   r,   rh   r*   r(   <module>r      s   # " " " " "                                                                                            %))))))$$$$$$ WTWT   V V V V V V V Vre6 e6 e6 e6 e6{ e6 e6 e6P     r*   