o
    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rld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#ZdS )%    )annotations)Any)cast)Dict)Iterable)Iterator)List)NoReturn)Optional)Set)Tuple)TYPE_CHECKING)TypeVarN   )util   )exc)_IdentityKeyType)InstanceState_T)bound_Oc                   @  s   e Zd ZU ded< ded< ded< dCd	d
ZdCddZdDddZdEddZdFddZdGddZ	dHddZ
	dIdJd"d#ZdKd%d&ZdLd(d)ZdMd+d,ZdNd.d/ZdEd0d1ZdGd2d3ZdOd4d5ZdGd6d7ZdGd8d9ZdPd:d;ZdQd<d=ZdFd>d?ZdRdAdBZdS )SIdentityMapzweakref.ref[IdentityMap]_wrz Dict[_IdentityKeyType[Any], Any]_dictSet[InstanceState[Any]]	_modifiedreturnNonec                 C  s   i | _ t | _t| | _d S N)r   setr   weakrefrefr   self r%   Y/var/www/html/ecg_monitoring/venv/lib/python3.10/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      
zIdentityMap._killList[InstanceState[Any]]c                 C     t  r   NotImplementedErrorr#   r%   r%   r&   
all_states3      zIdentityMap.all_statesstateInstanceState[Any]boolc                 C  r-   r   r.   r$   r2   r%   r%   r&   contains_state6   r1   zIdentityMap.contains_statekey_IdentityKeyType[Any]c                 C  r-   r   r.   r$   r7   r%   r%   r&   __contains__9   r1   zIdentityMap.__contains__c                 C  r-   r   r.   r5   r%   r%   r&   safe_discard<   r1   zIdentityMap.safe_discard_IdentityKeyType[_O]r   c                 C  r-   r   r.   r9   r%   r%   r&   __getitem__?   r1   zIdentityMap.__getitem__NdefaultOptional[_O]c                 C  r-   r   r.   )r$   r7   r>   r%   r%   r&   getB      zIdentityMap.getOptional[InstanceState[_O]]c                 C  r-   r   r.   r9   r%   r%   r&   fast_get_stateG   rA   zIdentityMap.fast_get_stateIterable[_IdentityKeyType[Any]]c                 C  s
   | j  S r   )r   keysr#   r%   r%   r&   rE   L   r+   zIdentityMap.keysIterable[object]c                 C  r-   r   r.   r#   r%   r%   r&   valuesO   r1   zIdentityMap.valuesInstanceState[_O]c                 C  r-   r   r.   r5   r%   r%   r&   replaceR   r1   zIdentityMap.replacec                 C  r-   r   r.   r5   r%   r%   r&   addU   r1   zIdentityMap.addc                 C  r-   r   r.   r5   r%   r%   r&   _fast_discardX   r1   zIdentityMap._fast_discardc                 C  s   |  | dS )zUoptional inlined form of add() which can assume item isn't present
        in the mapN)rJ   r$   r2   r7   r%   r%   r&   r)   [   s   zIdentityMap._add_unpresentc                 C  s"   | j |_|jr| j| d S d S r   )r   _instance_dictmodifiedr   rJ   r5   r%   r%   r&   _manage_incoming_stateb   s   z"IdentityMap._manage_incoming_statec                 C  s   |` |jr| j| d S d S r   )rM   rN   r   discardr5   r%   r%   r&   _manage_removed_stateh   s   z!IdentityMap._manage_removed_statec                 C  s   | j S r   )r   r#   r%   r%   r&   _dirty_statesm   r1   zIdentityMap._dirty_statesc                 C  
   t | jS )z[return True if any InstanceStates present have been marked
        as 'modified'.

        )r4   r   r#   r%   r%   r&   check_modifiedp   s   
zIdentityMap.check_modifiedc                 C  s   || v S r   r%   r9   r%   r%   r&   has_keyw   s   zIdentityMap.has_keyintc                 C  rS   r   )lenr   r#   r%   r%   r&   __len__z   r+   zIdentityMap.__len__)r   r   r   r,   r2   r3   r   r4   r7   r8   r   r4   r2   r3   r   r   r7   r<   r   r   r   r7   r<   r>   r?   r   r?   r7   r<   r   rB   )r   rD   )r   rF   )r2   rH   r   rB   r2   r3   r7   r8   r   r   )r   r   )r   r4   )r   rV   )__name__
__module____qualname____annotations__r'   r*   r0   r6   r:   r;   r=   r@   rC   rE   rG   rI   rJ   rK   r)   rO   rQ   rR   rT   rU   rX   r%   r%   r%   r&   r   %   s4   
 


















r   c                   @  s   e Zd ZU ded< d3ddZd4ddZd5ddZd6ddZd5ddZd7ddZ	d8ddZ
	d9d:dd Zd;d"d#Zd<d%d&Zd=d(d)Zd>d+d,Zd?d-d.Zd?d/d0Zd?d1d2ZdS )@WeakInstanceDictz/Dict[_IdentityKeyType[Any], InstanceState[Any]]r   r7   r<   r   r   c                 C  s,   t d| j| }| }|d u rt||S NrH   )r   r   objKeyErrorr$   r7   r2   or%   r%   r&   r=      s
   zWeakInstanceDict.__getitem__r8   r4   c                 C  sD   z|| j v r| j | }| }nW dS W |d uS  ty!   Y dS w NF)r   rg   rh   ri   r%   r%   r&   r:      s   


zWeakInstanceDict.__contains__r2   r3   c                 C  sJ   |j | jv r#tr|j d usJ z	| j|j  |u W S  ty"   Y dS w dS rk   )r7   r   r   rh   r5   r%   r%   r&   r6      s   zWeakInstanceDict.contains_stateOptional[InstanceState[Any]]c                 C  s|   |j d usJ |j | jv r/z
| j|j   }}W n ty"   d }Y nw ||ur-| | nd S d }|| j|j < | | |S r   )r7   r   rh   rQ   rO   )r$   r2   existingexisting_non_noner%   r%   r&   rI      s   
zWeakInstanceDict.replacec                 C  s   |j }|d us	J || jv r;z| j| }W n	 ty   Y nw ||ur9| }|d ur8t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   rh   rg   sa_excInvalidRequestErrororm_util	state_strrO   )r$   r2   r7   existing_staterj   r%   r%   r&   rJ      s*   


zWeakInstanceDict.addr   c                 C  s   || j |< | j|_d S r   )r   r   rM   rL   r%   r%   r&   r)      s   
zWeakInstanceDict._add_unpresentrB   c                 C  s   | j |S r   )r   r@   r9   r%   r%   r&   rC      s   zWeakInstanceDict.fast_get_stateNr>   r?   c                 C  sR   || j vr|S z
td| j | }W n ty   | Y S w | }|d u r'|S |S rf   )r   r   rh   rg   )r$   r7   r>   r2   rj   r%   r%   r&   r@      s   
zWeakInstanceDict.get6List[Tuple[_IdentityKeyType[Any], InstanceState[Any]]]c                 C  sJ   |   }g }|D ]}| }|j}|d usJ |d ur"|||f q|S r   )r0   rg   r7   append)r$   rG   resultr2   valuer7   r%   r%   r&   items   s   zWeakInstanceDict.itemsList[object]c                 C  s4   |   }g }|D ]}| }|d ur|| q|S r   )r0   rg   ru   )r$   rG   rv   r2   rw   r%   r%   r&   rG      s   
zWeakInstanceDict.valuesIterator[_IdentityKeyType[Any]]c                 C  s   t |  S r   )iterrE   r#   r%   r%   r&   __iter__   s   zWeakInstanceDict.__iter__r,   c                 C  s   t | j S r   )listr   rG   r#   r%   r%   r&   r0        zWeakInstanceDict.all_statesc                 C  sT   |j }|d us	J z| j| }W n
 ty   Y d S w ||u r(| j|d  d S d S r   )r7   r   rh   popr$   r2   r7   str%   r%   r&   rK     s   zWeakInstanceDict._fast_discardc                 C  s   |  | d S r   )r;   r5   r%   r%   r&   rP     r~   zWeakInstanceDict.discardc                 C  sl   |j }|| jv r2|d usJ z| j| }W n
 ty   Y d S w ||u r4| j|d  | | d S d S d S r   )r7   r   rh   r   rQ   r   r%   r%   r&   r;     s   
zWeakInstanceDict.safe_discardr]   r[   rZ   )r2   r3   r   rl   r`   r_   r   r^   )r   rt   )r   ry   )r   rz   rY   r\   )ra   rb   rc   rd   r=   r:   r6   rI   rJ   r)   rC   r@   rx   rG   r|   r0   rK   rP   r;   r%   r%   r%   r&   re   ~   s$   
 













re   r2   r3   r7   r8   r   r	   c                 C  s   t jdt|  d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)ro   rp   rq   rr   )r2   r7   r%   r%   r&   r(   &  s   r(   )r2   r3   r7   r8   r   r	   )
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r!    r   rq   r   ro   _typingr   r2   r   r   objectr   r   re   r(   r%   r%   r%   r&   <module>   s2   Y )