
    D6i)	                         d dl Z G d d      Zd Zd Zej
                  j                  ej                  j                  de       y)    Nc                   L    e Zd Zd Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)	ProxyDictc                 r    || _         || _        |j                  | _        |j                  | _        i | _        y N)parentcollection_nameclass_child_classkeykey_namecache)selfr   r   mapping_attrs       ^/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/sqlalchemy_utils/proxy_dict.py__init__zProxyDict.__init__   s3    .'..$((
    c                 B    t        | j                  | j                        S r   )getattrr   r   )r   s    r   
collectionzProxyDict.collection   s    t{{D$8$899r   c                     t        | j                  | j                        }| j                  j	                  |      D cg c]  }|d   	 c}S c c}w )Nr   )r   r
   r   r   values)r   
descriptorxs      r   keyszProxyDict.keys   s?    T--t}}=
"oo44Z@A!AAAs   Ac                 f    || j                   v r| j                   |   d uS | j                  |      d uS r   )r   fetchr   r   s     r   __contains__zProxyDict.__contains__   s4    $**::c?$..zz#d**r   c                 $    | j                  |      S r   )r   r   s     r   has_keyzProxyDict.has_key   s      %%r   c                 P   t         j                  j                  | j                        }|r{t         j                  j                  j                  | j                        rG | j                  j                  di | j                  |ij                         }|| j                  |<   |S y y N )saormobject_sessionr   utilhas_identityr   	filter_byr   firstr   )r   r   sessionobjs       r   r   zProxyDict.fetch   sz    &&''4rvv{{//<+$//++Ct}}c.BCIIKC!DJJsOJ =7r   c                      | j                   di | j                  |i}| j                  j                  |       || j                  |<   |S r"   )r
   r   r   appendr   r   r   values      r   create_new_instancezProxyDict.create_new_instance#   sD       8DMM3#78u%

3r   c                     || j                   v r| j                   |   $| j                   |   S | j                  |      }|r|S | j                  |      S r   )r   r   r1   r/   s      r   __getitem__zProxyDict.__getitem__)   sP    $**zz#*zz#&JJsOE'',,r   c                     	 | |   }| j                   j                  |       | j                   j                  |       || j                  |<   y # t        $ r Y 6w xY wr   )r   removeKeyErrorr.   r   )r   r   r0   existings       r   __setitem__zProxyDict.__setitem__4   sW    	CyHOO""8, 	u%

3  		s    A 	AAN)__name__
__module____qualname__r   propertyr   r   r   r    r   r1   r3   r8   r#   r   r   r   r      s?     : :B+
&	- r   r   c                     	 | j                    	 | j                   |   S # t        $ r
 i | _         Y "w xY w# t        $ r t        | ||      | j                   |<   Y nw xY w| j                   |   S r   )_proxy_dictsAttributeErrorr6   r   )r   r   r   s      r   
proxy_dictr@   >   s~    !
""?33	  ! !
  
/8O\0
O,
 //s    4 11#AAc                 ,    t        | d      ri | _        y y )Nr>   )hasattrr>   )targetcontexts     r   expire_proxy_dictsrE   M   s    v~&  'r   expire)	
sqlalchemyr$   r   r@   rE   eventlistenr%   Mapperr#   r   r   <module>rK      s<    7  7 t0!
 x); <r   