
    /hC#                       d dl mZ d dlmZ d dlZd dlmZ d dl	m
Z
 ddlmZ ej        rd dlZ ej        d          Z ej        d          Z ej        d	          Z ej        d
ej        dej        f                   ZddZ G d d          Z G d dej        eef                   Z G d deeef                   Z G d d          ZddZ G d deeef                   ZdS )     )annotationsNupdate_wrapper)repeat   )_missingKVTF.)boundselft.Anyreturn
t.NoReturnc                J    t          t          |           j        d          )Nz objects are immutable)	TypeErrortype__name__r   s    Q/var/www/html/venv/lib/python3.11/site-packages/werkzeug/datastructures/mixins.py_immutable_errorr      s"    
tDzz*DDD
E
EE    c                      e Zd ZU dZdZded<   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d-dZd.d/d"ZdS )0ImmutableListMixinzOMakes a :class:`list` immutable.

    .. versionadded:: 0.5

    :private:
    N
int | None_hash_cacher   intc                h    | j         | j         S t          t          |                     x}| _         |S N)r   hashtupler   rvs     r   __hash__zImmutableListMixin.__hash__!   s4    '## $U4[[ 1 11T	r   protocolt.SupportsIndexr   c                @    t          |           t          |           ffS r    )r   listr   r&   s     r   __reduce_ex__z ImmutableListMixin.__reduce_ex__'       DzzDJJ=((r   keyr   c                $    t          |            d S r    r   r   r-   s     r   __delitem__zImmutableListMixin.__delitem__*       r   otherc                $    t          |            d S r    r/   r   r3   s     r   __iadd__zImmutableListMixin.__iadd__-   r2   r   c                $    t          |            d S r    r/   r5   s     r   __imul__zImmutableListMixin.__imul__0   r2   r   valuec                $    t          |            d S r    r/   r   r-   r9   s      r   __setitem__zImmutableListMixin.__setitem__3   r2   r   itemc                $    t          |            d S r    r/   r   r=   s     r   appendzImmutableListMixin.append6   r2   r   c                $    t          |            d S r    r/   r?   s     r   removezImmutableListMixin.remove9   r2   r   iterablec                $    t          |            d S r    r/   )r   rC   s     r   extendzImmutableListMixin.extend<   r2   r   posc                $    t          |            d S r    r/   r   rF   r9   s      r   insertzImmutableListMixin.insert?   r2   r   indexc                $    t          |            d S r    r/   )r   rK   s     r   popzImmutableListMixin.popB   r2   r   r   c                $    t          |            d S r    r/   r   s    r   reversezImmutableListMixin.reverseE   r2   r   FrO   c                $    t          |            d S r    r/   )r   r-   rO   s      r   sortzImmutableListMixin.sortH   r2   r   r   r   r&   r'   r   r   r-   r   r   r   r3   r   r   r   r-   r   r9   r   r   r   )r=   r   r   r   )rC   r   r   r   rF   r   r9   r   r   r   )rJ   )rK   r   r   r   r   r   r   r   )NF)r-   r   rO   r   r   r   )r   
__module____qualname____doc__r   __annotations__r%   r+   r1   r6   r8   r<   r@   rB   rE   rI   rM   rO   rQ    r   r   r   r      sA          #K""""   ) ) ) )                                     r   r   c                      e Zd ZU dZdZded<   eej        d(d                        Z	eej        d)d                        Z	e	 d*d+ fd            Z	d,dZ
d-dZd.dZd*d/dZd0d Zd1d"Zd*d/d#Zd2d$Zd3d%Zd4d&Zd2d'Z xZS )5ImmutableDictMixinzMakes a :class:`dict` immutable.

    .. versionchanged:: 3.1
        Disallow ``|=`` operator.

    .. versionadded:: 0.5

    :private:
    Nr   r   keyscabc.Iterable[K]r9   Noner   #ImmutableDictMixin[K, t.Any | None]c                    d S r    r]   clsr`   r9   s      r   fromkeyszImmutableDictMixin.fromkeysY   s	     /2cr   r
   ImmutableDictMixin[K, V]c                    d S r    r]   re   s      r   rg   zImmutableDictMixin.fromkeys^   s    UXUXr   V | None>ImmutableDictMixin[K, t.Any | None] | ImmutableDictMixin[K, V]c                    t                                          |           }|                    t          |t	          |                               |S r    )super__new____init__zipr   )rf   r`   r9   instance	__class__s       r   rg   zImmutableDictMixin.fromkeysa   sC     77??3''#dF5MM22333r   r&   r'   r   c                @    t          |           t          |           ffS r    )r   dictr*   s     r   r+   z ImmutableDictMixin.__reduce_ex__i   r,   r   t.Iterable[t.Any]c                *    |                                  S r    itemsr   s    r   _iter_hashitemsz"ImmutableDictMixin._iter_hashitemsl   s    zz||r   r   c                    | j         | j         S t          t          |                                                     x}| _         |S r    )r   r!   	frozensetry   r#   s     r   r%   zImmutableDictMixin.__hash__o   sB    '## $Yt/C/C/E/E%F%F G GGT	r   r-   defaultr   c                $    t          |            d S r    r/   r   r-   r|   s      r   
setdefaultzImmutableDictMixin.setdefaultu   r2   r   argkwargsc               $    t          |            d S r    r/   r   r   r   s      r   updatezImmutableDictMixin.updatex   r2   r   r3   c                $    t          |            d S r    r/   r5   s     r   __ior__zImmutableDictMixin.__ior__{   r2   r   c                $    t          |            d S r    r/   r~   s      r   rM   zImmutableDictMixin.pop~   r2   r   c                $    t          |            d S r    r/   r   s    r   popitemzImmutableDictMixin.popitem   r2   r   c                $    t          |            d S r    r/   r;   s      r   r<   zImmutableDictMixin.__setitem__   r2   r   c                $    t          |            d S r    r/   r0   s     r   r1   zImmutableDictMixin.__delitem__   r2   r   c                $    t          |            d S r    r/   r   s    r   clearzImmutableDictMixin.clear   r2   r   )r`   ra   r9   rb   r   rc   )r`   ra   r9   r
   r   rh   r    )r`   ra   r9   rj   r   rk   rS   r   ru   rR   r-   r   r|   r   r   r   r   r   r   r   r   r   rU   r   r   rV   rT   )r   rY   rZ   r[   r   r\   classmethodtoverloadrg   r+   ry   r%   r   r   r   rM   r   r<   r1   r   __classcell__rr   s   @r   r_   r_   L   s          #K""""Z2 2 2 Z [2 ZXXX Z [X7;      [) ) ) )                                    r   r_   c                  L    e Zd ZdZddZddZddZddZddZddZ	dddZ
dS )ImmutableMultiDictMixinzTMakes a :class:`MultiDict` immutable.

    .. versionadded:: 0.5

    :private:
    r&   r'   r   r   c                h    t          |           t          |                     d                    ffS NT)multi)r   r)   rx   r*   s     r   r+   z%ImmutableMultiDictMixin.__reduce_ex__   s,    DzzD$!7!788:::r   ru   c                .    |                      d          S r   rw   r   s    r   ry   z'ImmutableMultiDictMixin._iter_hashitems   s    zzz%%%r   r-   r9   r   c                $    t          |            d S r    r/   r;   s      r   addzImmutableMultiDictMixin.add   r2   r   c                $    t          |            d S r    r/   r   s    r   popitemlistz#ImmutableMultiDictMixin.popitemlist   r2   r   c                $    t          |            d S r    r/   r0   s     r   poplistzImmutableMultiDictMixin.poplist   r2   r   new_listc                $    t          |            d S r    r/   )r   r-   r   s      r   setlistzImmutableMultiDictMixin.setlist   r2   r   Ndefault_listc                $    t          |            d S r    r/   )r   r-   r   s      r   setlistdefaultz&ImmutableMultiDictMixin.setlistdefault   r2   r   rS   r   rV   r   rT   )r-   r   r   r   r   r   r    )r-   r   r   r   r   r   )r   rY   rZ   r[   r+   ry   r   r   r   r   r   r]   r   r   r   r      s         ; ; ; ;& & & &                  r   r   c                      e Zd Z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efd%dZd&dZd%dZd%dZdS )'ImmutableHeadersMixina  Makes a :class:`Headers` immutable.  We do not mark them as
    hashable though since the only usecase for this datastructure
    in Werkzeug is a view on a mutable structure.

    .. versionchanged:: 3.1
        Disallow ``|=`` operator.

    .. versionadded:: 0.5

    :private:
    r-   r   r   r   r   c                $    t          |            d S r    r/   )r   r-   r   s      r   r1   z!ImmutableHeadersMixin.__delitem__   r2   r   r9   c                $    t          |            d S r    r/   r;   s      r   r<   z!ImmutableHeadersMixin.__setitem__   r2   r   c               $    t          |            d S r    r/   r   r-   r9   r   s       r   setzImmutableHeadersMixin.set   r2   r   valuesc                $    t          |            d S r    r/   )r   r-   r   s      r   r   zImmutableHeadersMixin.setlist   r2   r   c               $    t          |            d S r    r/   r   s       r   r   zImmutableHeadersMixin.add   r2   r   c               $    t          |            d S r    r/   r   s       r   
add_headerz ImmutableHeadersMixin.add_header   r2   r   c                $    t          |            d S r    r/   r0   s     r   rB   zImmutableHeadersMixin.remove   r2   r   r   c               $    t          |            d S r    r/   r   s      r   rE   zImmutableHeadersMixin.extend   r2   r   c               $    t          |            d S r    r/   r   s      r   r   zImmutableHeadersMixin.update   r2   r   r3   c                $    t          |            d S r    r/   r5   s     r   r   zImmutableHeadersMixin.__ior__   r2   r   rF   c                $    t          |            d S r    r/   rH   s      r   rI   zImmutableHeadersMixin.insert   r2   r   Nr|   c                $    t          |            d S r    r/   r~   s      r   rM   zImmutableHeadersMixin.pop   r2   r   c                $    t          |            d S r    r/   r   s    r   r   zImmutableHeadersMixin.popitem   r2   r   c                $    t          |            d S r    r/   r~   s      r   r   z ImmutableHeadersMixin.setdefault   r2   r   c                $    t          |            d S r    r/   r~   s      r   r   z$ImmutableHeadersMixin.setlistdefault   r2   r   )r-   r   r   r   r   r   rV   )r-   r   r9   r   r   r   r   r   )r-   r   r   r   r   r   rT   r   rU   rW   r   r   )r   rY   rZ   r[   r1   r<   r   r   r   r   rB   rE   r   r   rI   r   rM   r   r   r   r]   r   r   r   r      sV       
 
                                   $h                r   r   fc                0     d fd}t          |           S )	Nr   UpdateDictMixin[t.Any, t.Any]argsr   r   r   c               X     | g|R i |}| j         |                      |            |S r    )	on_update)r   r   r   r$   r   s       r   wrapperz_always_update.<locals>.wrapper   sC     Qt%d%%%f%%>%NN4   	r   )r   r   r   r   r   r   r   r   r   )r   r   s   ` r   _always_updater      s3          '1%%%r   c                  X    e Zd ZU dZdZded<   d"d# fdZej        d$d            Z	ej        d%d            Z	ej        d&d            Z	e
fd' fdZ	ed( fd            Zed) fd            Zed* fd            Zed+ fd            Ze	 d"d, fd            Zed- fd!            Z xZS ).UpdateDictMixinzMakes dicts call `self.on_update` on modifications.

    .. versionchanged:: 3.1
        Implement ``|=`` operator.

    .. versionadded:: 0.5

    :private:
    Nz%cabc.Callable[[te.Self], None] | Noner   r   te.Selfr-   r	   r|   rj   r   r
   c                    || v}t                                          ||          }|r| j        |                     |            |S r    )rm   r   r   r   r-   r|   modifiedr$   rr   s        r   r   zUpdateDictMixin.setdefault  sK    d?WWW-- 	!2NN4   	r   c                    d S r    r]   r0   s     r   rM   zUpdateDictMixin.pop	  s    ),r   c                    d S r    r]   r~   s      r   rM   zUpdateDictMixin.pop      58Sr   r   c                    d S r    r]   r~   s      r   rM   zUpdateDictMixin.pop  r   r   V | Tc                    || v }|t           u r"t                                          |          }n"t                                          ||          }|r| j        |                     |            |S r    )r   rm   rM   r   r   s        r   rM   zUpdateDictMixin.pop  sm    
 $;hS!!BBS'**B 	!2NN4   	r   r9   rb   c                L    t                                          ||           d S r    )rm   r<   )r   r-   r9   rr   s      r   r<   zUpdateDictMixin.__setitem__  s#    C'''''r   c                J    t                                          |           d S r    )rm   r1   )r   r-   rr   s     r   r1   zUpdateDictMixin.__delitem__!  s!    C     r   c                H    t                                                       d S r    )rm   r   r   rr   s    r   r   zUpdateDictMixin.clear%  s    r   tuple[K, V]c                D    t                                                      S r    )rm   r   r   s    r   r   zUpdateDictMixin.popitem)  s    ww   r   r   6cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | Noner   c               v    | t                      j        di | d S  t                      j        |fi | d S )Nr]   )rm   r   )r   r   r   rr   s      r   r   zUpdateDictMixin.update-  sP     ;EGGN$$V$$$$$EGGN3))&)))))r   r3   /cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]]c                F    t                                          |          S r    )rm   r   )r   r3   rr   s     r   r   zUpdateDictMixin.__ior__9  s     wwu%%%r   r    )r   r   r-   r	   r|   rj   r   r
   )r   r   r-   r	   r   r
   )r   r   r-   r	   r|   r
   r   r
   )r   r   r-   r	   r|   r   r   r   )r   r   r-   r	   r|   r   r   r   )r-   r	   r9   r
   r   rb   )r-   r	   r   rb   )r   rb   )r   r   )r   r   r   r
   r   rb   )r3   r   r   r   )r   rY   rZ   r[   r   r\   r   r   r   rM   r   r   r<   r1   r   r   r   r   r   r   s   @r   r   r      s          8<I;;;;       Z,,, Z,Z888 Z8Z888 Z8 "       ( ( ( ( ( ^( ! ! ! ! ! ^!      ^ ! ! ! ! ! ^!  GK	* 	* 	* 	* 	* 	* ^	* & & & & & ^& & & & &r   r   rX   )r   r   r   r   ) 
__future__r   collections.abcabccabctypingr   	functoolsr   	itertoolsr   	_internalr   TYPE_CHECKINGtyping_extensionsteTypeVarr	   r
   r   CallableAnyr   r   r   Genericr_   r   r   r   rt   r   r]   r   r   <module>r      s   " " " " " "           $ $ $ $ $ $                  ? #""""AIcNNAIcNNAIcNNAIcsAEz2333F F F F2 2 2 2 2 2 2 2j? ? ? ? ?1a4 ? ? ?D    0A6   <8 8 8 8 8 8 8 8v& & & &H& H& H& H& H&d1a4j H& H& H& H& H&r   