
    'gC#                       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j2                  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y)    )annotationsNupdate_wrapper)repeat   )_missingKVTF.)boundc                D    t        t        |       j                  d      )Nz objects are immutable)	TypeErrortype__name__selfs    V/var/www/html/knws/venv/lib/python3.12/site-packages/werkzeug/datastructures/mixins.py_immutable_errorr      s     
tDz**--CD
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y)ImmutableListMixinzOMakes a :class:`list` immutable.

    .. versionadded:: 0.5

    :private:
    N
int | None_hash_cachec                l    | j                   | j                   S t        t        |             x}| _         |S N)r   hashtupler   rvs     r   __hash__zImmutableListMixin.__hash__!   s5    '### $U4[ 11T	r   c                0    t        |       t        |       ffS r   )r   listr   protocols     r   __reduce_ex__z ImmutableListMixin.__reduce_ex__'       DzDJ=((r   c                    t        |        y r   r   r   keys     r   __delitem__zImmutableListMixin.__delitem__*   
    r   c                    t        |        y r   r)   r   others     r   __iadd__zImmutableListMixin.__iadd__-   r-   r   c                    t        |        y r   r)   r/   s     r   __imul__zImmutableListMixin.__imul__0   r-   r   c                    t        |        y r   r)   r   r+   values      r   __setitem__zImmutableListMixin.__setitem__3   r-   r   c                    t        |        y r   r)   r   items     r   appendzImmutableListMixin.append6   r-   r   c                    t        |        y r   r)   r9   s     r   removezImmutableListMixin.remove9   r-   r   c                    t        |        y r   r)   )r   iterables     r   extendzImmutableListMixin.extend<   r-   r   c                    t        |        y r   r)   r   posr6   s      r   insertzImmutableListMixin.insert?   r-   r   c                    t        |        y r   r)   )r   indexs     r   popzImmutableListMixin.popB   r-   r   c                    t        |        y r   r)   r   s    r   reversezImmutableListMixin.reverseE   r-   r   c                    t        |        y r   r)   )r   r+   rI   s      r   sortzImmutableListMixin.sortH   r-   r   returnintr%   zt.SupportsIndexrM   t.Anyr+   rP   rM   
t.NoReturnr0   rP   rM   rR   r+   rP   r6   rP   rM   rR   )r:   rP   rM   rR   )r?   rP   rM   rR   rC   rP   r6   rP   rM   rR   ))rF   rP   rM   rR   r   rP   rM   rR   )NF)r+   rP   rI   rP   rM   rR   )r   
__module____qualname____doc__r   __annotations__r!   r&   r,   r1   r3   r7   r;   r=   r@   rD   rG   rI   rK    r   r   r   r      sT     #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ddZddZdddZddZddZddZddZ xZS ) ImmutableDictMixinzMakes a :class:`dict` immutable.

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

    .. versionadded:: 0.5

    :private:
    Nr   r   c                     y r   r\   clskeysr6   s      r   fromkeyszImmutableDictMixin.fromkeysY   s     /2r   c                     y r   r\   r`   s      r   rc   zImmutableDictMixin.fromkeys^   s    UXr   c                n    t         |   |       }|j                  t        |t	        |                   |S r   )super__new____init__zipr   )ra   rb   r6   instance	__class__s       r   rc   zImmutableDictMixin.fromkeysa   s1     7?3'#dF5M23r   c                0    t        |       t        |       ffS r   )r   dictr$   s     r   r&   z ImmutableDictMixin.__reduce_ex__i   r'   r   c                "    | j                         S r   itemsr   s    r   _iter_hashitemsz"ImmutableDictMixin._iter_hashitemsl   s    zz|r   c                    | j                   | j                   S t        t        | j                                     x}| _         |S r   )r   r   	frozensetrq   r   s     r   r!   zImmutableDictMixin.__hash__o   s?    '### $Yt/C/C/E%F GGT	r   c                    t        |        y r   r)   r   r+   defaults      r   
setdefaultzImmutableDictMixin.setdefaultu   r-   r   c                   t        |        y r   r)   r   argkwargss      r   updatezImmutableDictMixin.updatex   r-   r   c                    t        |        y r   r)   r/   s     r   __ior__zImmutableDictMixin.__ior__{   r-   r   c                    t        |        y r   r)   ru   s      r   rG   zImmutableDictMixin.pop~   r-   r   c                    t        |        y r   r)   r   s    r   popitemzImmutableDictMixin.popitem   r-   r   c                    t        |        y r   r)   r5   s      r   r7   zImmutableDictMixin.__setitem__   r-   r   c                    t        |        y r   r)   r*   s     r   r,   zImmutableDictMixin.__delitem__   r-   r   c                    t        |        y r   r)   r   s    r   clearzImmutableDictMixin.clear   r-   r   )rb   cabc.Iterable[K]r6   NonerM   z#ImmutableDictMixin[K, t.Any | None])rb   r   r6   r
   rM   zImmutableDictMixin[K, V]r   )rb   r   r6   V | NonerM   z>ImmutableDictMixin[K, t.Any | None] | ImmutableDictMixin[K, V]rO   rM   zt.Iterable[t.Any]rL   r+   rP   rv   rP   rM   rR   rz   rP   r{   rP   rM   rR   rS   rM   rR   rT   rQ   )r   rX   rY   rZ   r   r[   classmethodtoverloadrc   r&   rq   r!   rw   r|   r~   rG   r   r7   r,   r   __classcell__rk   s   @r   r^   r^   L   s     #K"ZZ2#2,02	,2  2 ZZX  X7;#,4	G )r   r^   c                  J    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
y)ImmutableMultiDictMixinzTMakes a :class:`MultiDict` immutable.

    .. versionadded:: 0.5

    :private:
    c                P    t        |       t        | j                  d            ffS NT)multi)r   r#   rp   r$   s     r   r&   z%ImmutableMultiDictMixin.__reduce_ex__   s$    DzD$!78:::r   c                &    | j                  d      S r   ro   r   s    r   rq   z'ImmutableMultiDictMixin._iter_hashitems   s    zzz%%r   c                    t        |        y r   r)   r5   s      r   addzImmutableMultiDictMixin.add   r-   r   c                    t        |        y r   r)   r   s    r   popitemlistz#ImmutableMultiDictMixin.popitemlist   r-   r   c                    t        |        y r   r)   r*   s     r   poplistzImmutableMultiDictMixin.poplist   r-   r   c                    t        |        y r   r)   )r   r+   new_lists      r   setlistzImmutableMultiDictMixin.setlist   r-   r   Nc                    t        |        y r   r)   )r   r+   default_lists      r   setlistdefaultz&ImmutableMultiDictMixin.setlistdefault   r-   r   rO   r   rT   r   rQ   )r+   rP   r   rP   rM   rR   r   )r+   rP   r   rP   rM   rR   )r   rX   rY   rZ   r&   rq   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y)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:
    c                    t        |        y r   r)   )r   r+   r{   s      r   r,   z!ImmutableHeadersMixin.__delitem__   r-   r   c                    t        |        y r   r)   r5   s      r   r7   z!ImmutableHeadersMixin.__setitem__   r-   r   c                   t        |        y r   r)   r   r+   r6   r{   s       r   setzImmutableHeadersMixin.set   r-   r   c                    t        |        y r   r)   )r   r+   valuess      r   r   zImmutableHeadersMixin.setlist   r-   r   c                   t        |        y r   r)   r   s       r   r   zImmutableHeadersMixin.add   r-   r   c                   t        |        y r   r)   r   s       r   
add_headerz ImmutableHeadersMixin.add_header   r-   r   c                    t        |        y r   r)   r*   s     r   r=   zImmutableHeadersMixin.remove   r-   r   c                   t        |        y r   r)   ry   s      r   r@   zImmutableHeadersMixin.extend   r-   r   c                   t        |        y r   r)   ry   s      r   r|   zImmutableHeadersMixin.update   r-   r   c                    t        |        y r   r)   r/   s     r   r~   zImmutableHeadersMixin.__ior__   r-   r   c                    t        |        y r   r)   rB   s      r   rD   zImmutableHeadersMixin.insert   r-   r   Nc                    t        |        y r   r)   ru   s      r   rG   zImmutableHeadersMixin.pop   r-   r   c                    t        |        y r   r)   r   s    r   r   zImmutableHeadersMixin.popitem   r-   r   c                    t        |        y r   r)   ru   s      r   rw   z ImmutableHeadersMixin.setdefault   r-   r   c                    t        |        y r   r)   ru   s      r   r   z$ImmutableHeadersMixin.setlistdefault   r-   r   )r+   rP   r{   rP   rM   rR   rT   )r+   rP   r6   rP   r{   rP   rM   rR   )r+   rP   r   rP   rM   rR   rQ   r   rS   rU   r   r   )r   rX   rY   rZ   r,   r7   r   r   r   r   r=   r@   r|   r~   rD   r   rG   r   rw   r   r\   r   r   r   r      sY    
  $h r   r   c                8     	 	 	 	 	 	 	 	 d fd}t        |       S )Nc               Z     | g|i |}| j                   | j                  |        |S r   )	on_update)r   argsr{   r    fs       r   wrapperz_always_update.<locals>.wrapper   s4     t%d%f%>>%NN4 	r   )r   zUpdateDictMixin[t.Any, t.Any]r   rP   r{   rP   rM   rP   r   )r   r   s   ` r   _always_updater      s7    +7<HM	 '1%%r   c                  `    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   c                n    || v}t         |   ||      }|r| j                  | j                  |        |S r   )rf   rw   r   r   r+   rv   modifiedr    rk   s        r   rw   zUpdateDictMixin.setdefault  s:    d?WW-2NN4 	r   c                     y r   r\   r*   s     r   rG   zUpdateDictMixin.pop	  s    ),r   c                     y r   r\   ru   s      r   rG   zUpdateDictMixin.pop      58r   c                     y r   r\   ru   s      r   rG   zUpdateDictMixin.pop  r   r   c                    || v }|t         u rt        | 	  |      }nt        | 	  ||      }|r| j                  | j                  |        |S r   )r   rf   rG   r   r   s        r   rG   zUpdateDictMixin.pop  sQ    
 $;hS!BS'*B2NN4 	r   c                &    t         |   ||       y r   )rf   r7   )r   r+   r6   rk   s      r   r7   zUpdateDictMixin.__setitem__  s    C'r   c                $    t         |   |       y r   )rf   r,   )r   r+   rk   s     r   r,   zUpdateDictMixin.__delitem__!  s    C r   c                "    t         |           y r   )rf   r   r   rk   s    r   r   zUpdateDictMixin.clear%  s    r   c                     t         |          S r   )rf   r   r   s    r   r   zUpdateDictMixin.popitem)  s    w  r   c               J    |t        |   di | y t        |   |fi | y )Nr\   )rf   r|   )r   rz   r{   rk   s      r   r|   zUpdateDictMixin.update-  s*     ;GN$V$GN3)&)r   c                "    t         |   |      S r   )rf   r~   )r   r0   rk   s     r   r~   zUpdateDictMixin.__ior__9  s     wu%%r   r   )r   te.Selfr+   r	   rv   r   rM   r
   )r   r   r+   r	   rM   r
   )r   r   r+   r	   rv   r
   rM   r
   )r   r   r+   r	   rv   r   rM   r   )r   r   r+   r	   rv   V | TrM   r   )r+   r	   r6   r
   rM   r   )r+   r	   rM   r   )rM   r   )rM   ztuple[K, V])rz   z6cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | Noner{   r
   rM   r   )r0   z/cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]]rM   r   )r   rX   rY   rZ   r   r[   rw   r   r   rG   r   r   r7   r,   r   r   r|   r~   r   r   s   @r   r   r      s+    8<I4; ZZ, ,ZZ8 8ZZ8 8 "  
	 ( ( ! !   ! !  GK	*C	* 		*
 
	* 	* &D&	& &r   r   rW   )r   r   rM   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   rm   r   r\   r   r   <module>r      s    "   $   ??"AIIcNAIIcNAIIcNAIIcsAEEz23F2 2j?1a4 ?D0A6 <8 8v&H&d1a4j H&r   