o
    
i%                     @   s   d dl Z G dd deZdS )    Nc                       s   e Zd Zdd Zdd Z fddZdd Zed	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Z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d0d+d,Zd-d. Z  ZS )1Dictc                 O   s   t | d|dd  t | d|dd  t | dd |D ]C}|s$qt|tr:| D ]\}}| || |< q-qt|trRt|d tsR| |d | |d < qt|D ]\}}| || |< qVq| D ]\}}| || |< qgd S )N__parent__key__frozenFr      )	object__setattr__pop
isinstancedictitems_hooktupleiter)_Dict__selfargskwargsargkeyval r   A/home/ubuntu/.local/lib/python3.10/site-packages/addict/addict.py__init__   s$   
zDict.__init__c                 C   s&   t | j|rtd||| |< d S )Nz*'Dict' object attribute '{0}' is read-only)hasattr	__class__AttributeErrorformat)selfnamevaluer   r   r   r      s
   zDict.__setattr__c                    s   t | do
t| d}|r|tt|  vrt|tt| || zt| d}t| d}W n ty>   d }d }Y nw |d urU| ||< t	| d t	| d d S d S )Nr   r   r   )
r   r   __getattribute__superr   keysKeyError__setitem__r   __delattr__)r   r   r   isFrozenpr   r   r   r   r$       s$   

zDict.__setitem__c                 C   s4   |   s|S t| j}t|j}d}t|||)Nz0unsupported operand type(s) for +: '{}' and '{}')r"   type__name__	TypeErrorr   )r   other	self_type
other_typemsgr   r   r   __add__1   s   

zDict.__add__c                    s>   t |tr	 |S t |ttfrt| fdd|D S |S )Nc                 3   s    | ]}  |V  qd S N)r   ).0elemclsr   r   	<genexpr>?   s    zDict._hook.<locals>.<genexpr>)r
   r   listr   r)   )r5   itemr   r4   r   r   :   s
   
z
Dict._hookc                 C   s
   |  |S r1   )__getitem__)r   r8   r   r   r   __getattr__B      
zDict.__getattr__c                 C   s"   t | dr
t|| j| |dS )Nr   )r   r   )r   r    r#   r   r   r   r   r   r   __missing__E   s   zDict.__missing__c                 C   s
   | |= d S r1   r   r<   r   r   r   r%   J   r;   zDict.__delattr__c                    sl   i }   D ]-\}}t|t r| ||< qt|ttfr/t| fdd|D ||< q|||< q|S )Nc                 3   s*    | ]}t |t r| n|V  qd S r1   )r
   r)   to_dict)r2   r8   r   r   r   r6   S   s    
zDict.to_dict.<locals>.<genexpr>)r   r
   r)   r>   r7   r   )r   baser   r   r   r?   r   r>   M   s   
zDict.to_dictc                 C   s
   t  | S r1   )copyr?   r   r   r   rA   Z   r;   z	Dict.copyc                 C   s
   t | S r1   )rA   deepcopyr?   r   r   r   rB   ]   r;   zDict.deepcopyc                 C   sB   |   }||t| < |  D ]\}}t|||t||< q|S r1   )r   idr   rA   rB   )r   memor,   r   r   r   r   r   __deepcopy__`   s
   zDict.__deepcopy__c                 O   s   i }|rt |dkrt ||d  || | D ] \}}|| vs1t| | tr1t|ts6|| |< q| | | qd S )Nr   r   )lenr+   updater   r
   r   )r   r   r   r,   kvr   r   r   rG   g   s   

zDict.updatec                 C   s   t |  S r1   )r   r   r?   r   r   r   __getnewargs__v   s   zDict.__getnewargs__c                 C   s   | S r1   r   r?   r   r   r   __getstate__y   s   zDict.__getstate__c                 C   s   |  | d S r1   rG   )r   stater   r   r   __setstate__|      zDict.__setstate__c                 C   s(   t |ttfs	tS t| }|| |S r1   r
   r   r   NotImplementedrG   r   r,   newr   r   r   __or__   
   
zDict.__or__c                 C   s(   t |ttfs	tS t|}||  |S r1   rP   rR   r   r   r   __ror__   rU   zDict.__ror__c                 C   s   |  | | S r1   rL   )r   r,   r   r   r   __ior__   s   
zDict.__ior__Nc                 C   s   || v r| | S || |< |S r1   r   )r   r   defaultr   r   r   
setdefault   s   zDict.setdefaultTc                 C   s8   t | d| |  D ]\}}t|tr|| qd S )Nr   )r   r   r   r
   r   freeze)r   shouldFreezer   r   r   r   r   rZ      s   

zDict.freezec                 C   s   |  d d S )NF)rZ   r?   r   r   r   unfreeze   rO   zDict.unfreezer1   )T)r*   
__module____qualname__r   r   r$   r0   classmethodr   r:   r=   r%   r>   rA   rB   rE   rG   rJ   rK   rN   rT   rV   rW   rY   rZ   r\   __classcell__r   r   r(   r   r      s0    	


r   )rA   r   r   r   r   r   r   <module>   s    