o
    0 iv                     @   s   d dl mZ dd ZdadZG dd deZdd Zee_ee_	zej
 W n ey5   d	d
 Zee_
Y nw ee_ee_ee_ee_ee_ee_ee_ejfZdS )    )deepcopyc                 O      t d| jj d)zK
    Function for not implemented method since the object is immutable
    'z' object is read-only)AttributeError	__class____name__self_args_kwargs r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/frozendict/_frozendict_py.py	immutable   s   r   N
frozendictc                       s   e Zd ZdZdZedd Zdd Zdd Zd	d
 Z	 f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d Zd*d!d"Zd*d#d$Zd%d& Zd'd( Z  ZS )+r   z
    A simple immutable dictionary.

    The API is the same as `dict`, without methods that can change the
    immutability. In addition, it supports __hash__().
    )_hashc                 O   s   | t j|i |S )z/
        Identical to dict.fromkeys().
        )dictfromkeys)clsargskwargsr   r   r   r      s   zfrozendict.fromkeysc                 O   s   | }t |}d}d }t|dkr#|s#|d }|jtkr#|tkr#|}d}|rZtj|g|R i |}tj|g|R i | |jtkrQt|sQtd u rM|ant}d}|rZt	|dd |S )NT   r   Fr   )
boollenr   r   r   __new____init___empty_frozendictobject__setattr__)Z$e4b37cdf_d78a_4632_bade_6f0579d8efacr   r   r   Z
has_kwargsZcontinue_creationr	   itr   r   r   r   (   s(   zfrozendict.__new__c                 O   s   d S Nr   r	   r   r   r   r   r   r   P   s   zfrozendict.__init__c                 O   s:   | j dkr
| j }|S t|  }t|}t| d| |S )zg
        Calculates the hash if all values are hashable, otherwise
        raises a TypeError.
        r   r   )r   	frozensetitemshashr   r   )r	   r   r   r   fsr   r   r   __hash__S   s   
zfrozendict.__hash__c                    sH   t  j|i |}| j}|tkrt d|j }n|j}| d| dS )z/
        Identical to dict.__repr__().
        .())super__repr__r   r   _module_namer   )r	   r   r   bodyklassnamer   r   r   r+   c   s   zfrozendict.__repr__c                 C   s   | j }|tkr	| S || S )zA
        Return the object itself, as it's an immutable.
        )r   r   )r	   r.   r   r   r   copyr   s   zfrozendict.copyc                 O   s   |   S )z
        See copy().
        )r1   r!   r   r   r   __copy__~   s   zfrozendict.__copy__c                 O   sV   | j }|tk}|rzt|  W n ty   d}Y nw |r!|  S tt| }||S )zc
        As for tuples, if hashable, see copy(); otherwise, it returns a
        deepcopy.
        F)r   r   r$   	TypeErrorr1   r   r   )r	   memor   r   r.   Zreturn_copytmpr   r   r   __deepcopy__   s   zfrozendict.__deepcopy__c                 O   s   | j t| ffS )z'
        Support for `pickle`.
        )r   r   r!   r   r   r   
__reduce__   s   zfrozendict.__reduce__c                 C   s   t | }|||< | |S r    r   r   )r	   keyvalnew_selfr   r   r   set   s   
zfrozendict.setNc                 C   s&   || v r| S t | }|||< | |S r    r8   )r	   r9   defaultr;   r   r   r   
setdefault   s
   
zfrozendict.setdefaultc                 C   s$   t | }||= |r| |S |  S r    r8   )r	   r9   r;   r   r   r   delete   s
   
zfrozendict.deletec              	   C   sH   z|| W S  t y#   t|d }| jj}t | d| d| d w )Nr   z index z out of range )
IndexErrorr   r   r   )r	   
collectionindexZmaxindexr/   r   r   r   _get_by_index   s   
zfrozendict._get_by_indexr   c                 C      t |  }| ||S r    )tuplekeysrC   r	   rB   rA   r   r   r   r9         zfrozendict.keyc                 C   rD   r    )rE   valuesrC   rG   r   r   r   value   rH   zfrozendict.valuec                 C   rD   r    )rE   r#   rC   rG   r   r   r   item   rH   zfrozendict.itemc                 O   r   )Nr   z(' object doesn't support item assignmentr3   r   r   )r	   r9   r:   r   r   r   r   r   __setitem__      zfrozendict.__setitem__c                 O   r   )Nr   z&' object doesn't support item deletionrL   )r	   r9   r   r   r   r   r   __delitem__   rN   zfrozendict.__delitem__r    )r   )r   
__module____qualname____doc__	__slots__classmethodr   r   r   r&   r+   r1   r2   r6   r7   r<   r>   r?   rC   r9   rJ   rK   rM   rO   __classcell__r   r   r0   r   r      s,    
(

	



c                 O   s"   i }| |  | | | |S r    )updater   )r	   otherr
   r   resr   r   r   frozendict_or   s   


rY   c                 O   s   t t| S r    )reversedrE   r   r   r   r   frozendict_reversed   s   r[   )r1   r   r   r   r,   r   r   rY   __or____ior____reversed__r   r[   clearpoppopitemrV   __delattr__r   rP   r   __all__r   r   r   r   <module>   s.    
 O

