a
    [g!$                     @  s$  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rddlmZ ddlmZ ededZededZG dd dZG dd deZdddd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                   @  sl  e Zd ZU ded< ded< ded< ddd	d
ZddddZddddZdddddZdddddZdddddZ	dddddZ
dDdd d d!d"d#Zdd$dd%d&Zd'dd(d)Zd*dd+d,Zd-d$dd.d/Zdddd0d1Zdddd2d3Zdddd4d5d6Zdddd7d8Zdddd9d:Zddd;d<Zddd=d>Zdddd?d@ZdAddBdCZdS )EIdentityMapzweakref.ref[IdentityMap]_wrz Dict[_IdentityKeyType[Any], Any]_dictzSet[InstanceState[Any]]	_modifiedNonereturnc                 C  s   i | _ t | _t| | _d S N)r   setr   weakrefrefr   self r%   e/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/sqlalchemy/orm/identity.py__init__+   s    zIdentityMap.__init__c                 C  s
   t | _d S r   )_killed_add_unpresentr#   r%   r%   r&   _kill0   s    zIdentityMap._killList[InstanceState[Any]]c                 C  s
   t  d S r   NotImplementedErrorr#   r%   r%   r&   
all_states3   s    zIdentityMap.all_statesInstanceState[Any]boolstater   c                 C  s
   t  d S r   r,   r$   r2   r%   r%   r&   contains_state6   s    zIdentityMap.contains_state_IdentityKeyType[Any]keyr   c                 C  s
   t  d S r   r,   r$   r7   r%   r%   r&   __contains__9   s    zIdentityMap.__contains__c                 C  s
   t  d S r   r,   r3   r%   r%   r&   safe_discard<   s    zIdentityMap.safe_discard_IdentityKeyType[_O]r   c                 C  s
   t  d S r   r,   r8   r%   r%   r&   __getitem__?   s    zIdentityMap.__getitem__NOptional[_O]r7   defaultr   c                 C  s
   t  d S r   r,   )r$   r7   r?   r%   r%   r&   getB   s    zIdentityMap.getOptional[InstanceState[_O]]c                 C  s
   t  d S r   r,   r8   r%   r%   r&   fast_get_stateG   s    zIdentityMap.fast_get_statezIterable[_IdentityKeyType[Any]]c                 C  s
   | j  S r   )r   keysr#   r%   r%   r&   rC   L   s    zIdentityMap.keyszIterable[object]c                 C  s
   t  d S r   r,   r#   r%   r%   r&   valuesO   s    zIdentityMap.valuesInstanceState[_O]c                 C  s
   t  d S r   r,   r3   r%   r%   r&   replaceR   s    zIdentityMap.replacec                 C  s
   t  d S r   r,   r3   r%   r%   r&   addU   s    zIdentityMap.addc                 C  s
   t  d S r   r,   r3   r%   r%   r&   _fast_discardX   s    zIdentityMap._fast_discardr2   r7   r   c                 C  s   |  | dS )zUoptional inlined form of add() which can assume item isn't present
        in the mapN)rG   r$   r2   r7   r%   r%   r&   r)   [   s    zIdentityMap._add_unpresentc                 C  s   | j |_|jr| j| d S r   )r   _instance_dictmodifiedr   rG   r3   r%   r%   r&   _manage_incoming_stateb   s    z"IdentityMap._manage_incoming_statec                 C  s   |` |jr| j| d S r   )rK   rL   r   discardr3   r%   r%   r&   _manage_removed_stateh   s    z!IdentityMap._manage_removed_statec                 C  s   | j S r   )r   r#   r%   r%   r&   _dirty_statesm   s    zIdentityMap._dirty_statesc                 C  s
   t | jS )z[return True if any InstanceStates present have been marked
        as 'modified'.

        )r0   r   r#   r%   r%   r&   check_modifiedp   s    zIdentityMap.check_modifiedc                 C  s   || v S r   r%   r8   r%   r%   r&   has_keyw   s    zIdentityMap.has_keyintc                 C  s
   t | jS r   )lenr   r#   r%   r%   r&   __len__z   s    zIdentityMap.__len__)N)__name__
__module____qualname____annotations__r'   r*   r.   r4   r9   r:   r<   r@   rB   rC   rD   rF   rG   rH   r)   rM   rO   rP   rQ   rR   rU   r%   r%   r%   r&   r   %   s2   
 r   c                   @  s  e Zd ZU ded< dddddZdd	dd
dZdd	dddZdddddZdd	dddZddddddZ	dddddZ
d4dddddd Zd!d"d#d$Zd%d"d&d'Zd(d"d)d*Zd+d"d,d-Zdddd.d/Zdddd0d1Zdddd2d3ZdS )5WeakInstanceDictz/Dict[_IdentityKeyType[Any], InstanceState[Any]]r   r;   r   r6   c                 C  s,   t d| j| }| }|d u r(t||S NrE   )r   r   objKeyErrorr$   r7   r2   or%   r%   r&   r<      s
    zWeakInstanceDict.__getitem__r5   r0   c                 C  sJ   z(|| j v r | j | }| }nW dS W n ty<   Y dS 0 |d uS d S NF)r   r\   r]   r^   r%   r%   r&   r9      s    



zWeakInstanceDict.__contains__r/   r1   c                 C  sP   |j | jv rHtr|j d usJ z| j|j  |u W S  tyD   Y dS 0 ndS d S r`   )r7   r   r   r]   r3   r%   r%   r&   r4      s    
zWeakInstanceDict.contains_statezOptional[InstanceState[Any]]c                 C  s~   |j d usJ |j | jv r`z| j|j   }}W n tyD   d }Y qd0 ||urZ| | qdd S nd }|| j|j < | | |S r   )r7   r   r]   rO   rM   )r$   r2   existingZexisting_non_noner%   r%   r&   rF      s    

zWeakInstanceDict.replacec                 C  s   |j }|d usJ || jv rvz| j| }W n ty<   Y n:0 ||urr| }|d urvtdt||j f ndS || j|< | | dS )NzZCan't attach instance %s; another instance with key %s is already present in this session.FT)	r7   r   r]   r\   sa_excInvalidRequestErrororm_util	state_strrM   )r$   r2   r7   Zexisting_stater_   r%   r%   r&   rG      s&    


zWeakInstanceDict.addr   rI   c                 C  s   || j |< | j|_d S r   )r   r   rK   rJ   r%   r%   r&   r)      s    
zWeakInstanceDict._add_unpresentrA   c                 C  s   | j |S r   )r   r@   r8   r%   r%   r&   rB      s    zWeakInstanceDict.fast_get_stateNr=   r>   c                 C  sV   || j vr|S ztd| j | }W n ty8   | Y S 0 | }|d u rN|S |S d S r[   )r   r   r]   r\   )r$   r7   r?   r2   r_   r%   r%   r&   r@      s    

zWeakInstanceDict.getz6List[Tuple[_IdentityKeyType[Any], InstanceState[Any]]]r   c                 C  sJ   |   }g }|D ]4}| }|j}|d us.J |d ur|||f q|S r   )r.   r\   r7   append)r$   rD   resultr2   valuer7   r%   r%   r&   items   s    zWeakInstanceDict.itemszList[object]c                 C  s4   |   }g }|D ]}| }|d ur|| q|S r   )r.   r\   rf   )r$   rD   rg   r2   rh   r%   r%   r&   rD      s    zWeakInstanceDict.valueszIterator[_IdentityKeyType[Any]]c                 C  s   t |  S r   )iterrC   r#   r%   r%   r&   __iter__   s    zWeakInstanceDict.__iter__r+   c                 C  s   t | j S r   )listr   rD   r#   r%   r%   r&   r.     s    zWeakInstanceDict.all_statesc                 C  sN   |j }|d usJ z| j| }W n ty2   Y n0 ||u rJ| j|d  d S r   )r7   r   r]   popr$   r2   r7   str%   r%   r&   rH     s    zWeakInstanceDict._fast_discardc                 C  s   |  | d S r   )r:   r3   r%   r%   r&   rN     s    zWeakInstanceDict.discardc                 C  sb   |j }|| jv r^|d usJ z| j| }W n ty<   Y n"0 ||u r^| j|d  | | d S r   )r7   r   r]   rm   rO   rn   r%   r%   r&   r:     s    
zWeakInstanceDict.safe_discard)N)rV   rW   rX   rY   r<   r9   r4   rF   rG   r)   rB   r@   ri   rD   rk   r.   rH   rN   r:   r%   r%   r%   r&   rZ   ~   s"   
 
rZ   r/   r5   r	   rI   c                 C  s   t jdt|  ddd S )NzObject %s cannot be converted to 'persistent' state, as this identity map is no longer valid.  Has the owning Session been closed?Zlkrp)code)rb   rc   rd   re   )r2   r7   r%   r%   r&   r(   &  s    r(   )
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r!    r   rd   r   rb   Z_typingr   r2   r   r   objectr   r   rZ   r(   r%   r%   r%   r&   <module>   s0   Y )