
    h                        S SK Jr  S SKJr  SSKJr  S r " S S5      r " S S	5      r " S
 S\5      r	 " S S5      r
S r " S S\5      rg)    )annotations)repeat   )_missingc                F    [        [        U 5      R                  < S35      e)Nz objects are immutable)	TypeErrortype__name__selfs    sC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\werkzeug/datastructures/mixins.pyis_immutabler      s     
tDz**--CD
EE    c                  r    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rS rS rSS jrS rSS jrSrg)ImmutableListMixin   zCMakes a :class:`list` immutable.

.. versionadded:: 0.5

:private:
Nc                l    U R                   b  U R                   $ [        [        U 5      5      =ol         U$ N)_hash_cachehashtupler   rvs     r   __hash__ImmutableListMixin.__hash__   s3    '### $U4[ 11	r   c                0    [        U 5      [        U 5      44$ r   )r	   listr   protocols     r   __reduce_ex__ ImmutableListMixin.__reduce_ex__       DzDJ=((r   c                    [        U 5        g r   r   r   keys     r   __delitem__ImmutableListMixin.__delitem__   
    Tr   c                    [        U 5        g r   r$   r   others     r   __iadd__ImmutableListMixin.__iadd__"   r)   r   c                    [        U 5        g r   r$   r+   s     r   __imul__ImmutableListMixin.__imul__%   r)   r   c                    [        U 5        g r   r$   r   r&   values      r   __setitem__ImmutableListMixin.__setitem__(   r)   r   c                    [        U 5        g r   r$   r   items     r   appendImmutableListMixin.append+   r)   r   c                    [        U 5        g r   r$   r8   s     r   removeImmutableListMixin.remove.   r)   r   c                    [        U 5        g r   r$   )r   iterables     r   extendImmutableListMixin.extend1   r)   r   c                    [        U 5        g r   r$   r   posr4   s      r   insertImmutableListMixin.insert4   r)   r   c                    [        U 5        g r   r$   )r   indexs     r   popImmutableListMixin.pop7   r)   r   c                    [        U 5        g r   r$   r   s    r   reverseImmutableListMixin.reverse:   r)   r   c                    [        U 5        g r   r$   )r   r&   rM   s      r   sortImmutableListMixin.sort=   r)   r   r   ))NF)r
   
__module____qualname____firstlineno____doc__r   r   r    r'   r-   r0   r5   r:   r=   rA   rF   rJ   rM   rP   __static_attributes__ r   r   r   r      sO     K)r   r   c                     ^  \ rS rSrSrSr\SU 4S jj5       rS rS r	S r
SS jrS	 rSS
 jrS rS rS rS rSrU =r$ )ImmutableDictMixinA   zCMakes a :class:`dict` immutable.

.. versionadded:: 0.5

:private:
Nc                n   > [         TU ]  U 5      nUR                  [        U[	        U5      5      5        U$ r   )super__new____init__zipr   )clskeysr4   instance	__class__s       r   fromkeysImmutableDictMixin.fromkeysK   s/    7?3'#dF5M23r   c                0    [        U 5      [        U 5      44$ r   )r	   dictr   s     r   r     ImmutableDictMixin.__reduce_ex__Q   r"   r   c                "    U R                  5       $ r   itemsr   s    r   _iter_hashitems"ImmutableDictMixin._iter_hashitemsT   s    zz|r   c                    U R                   b  U R                   $ [        [        U R                  5       5      5      =ol         U$ r   )r   r   	frozensetrn   r   s     r   r   ImmutableDictMixin.__hash__W   s=    '### $Yt/C/C/E%F GG	r   c                    [        U 5        g r   r$   r   r&   defaults      r   
setdefaultImmutableDictMixin.setdefault]   r)   r   c                    [        U 5        g r   r$   r   argskwargss      r   updateImmutableDictMixin.update`   r)   r   c                    [        U 5        g r   r$   rt   s      r   rJ   ImmutableDictMixin.popc   r)   r   c                    [        U 5        g r   r$   r   s    r   popitemImmutableDictMixin.popitemf   r)   r   c                    [        U 5        g r   r$   r3   s      r   r5   ImmutableDictMixin.__setitem__i   r)   r   c                    [        U 5        g r   r$   r%   s     r   r'   ImmutableDictMixin.__delitem__l   r)   r   c                    [        U 5        g r   r$   r   s    r   clearImmutableDictMixin.clearo   r)   r   rR   r   )r
   rT   rU   rV   rW   r   classmethodrf   r    rn   r   rv   r|   rJ   r   r5   r'   r   rX   __classcell__re   s   @r   r[   r[   A   sX     K 
) r   r[   c                  F    \ rS rSrSrS rS rS rS rS r	S r
SS
 jrSrg	)ImmutableMultiDictMixins   zHMakes a :class:`MultiDict` immutable.

.. versionadded:: 0.5

:private:
c                J    [        U 5      [        U R                  SS95      44$ NT)multi)r	   r   rm   r   s     r   r    %ImmutableMultiDictMixin.__reduce_ex__{   s$    DzD$!78:::r   c                     U R                  SS9$ r   rl   r   s    r   rn   'ImmutableMultiDictMixin._iter_hashitems~   s    zzz%%r   c                    [        U 5        g r   r$   r3   s      r   addImmutableMultiDictMixin.add   r)   r   c                    [        U 5        g r   r$   r   s    r   popitemlist#ImmutableMultiDictMixin.popitemlist   r)   r   c                    [        U 5        g r   r$   r%   s     r   poplistImmutableMultiDictMixin.poplist   r)   r   c                    [        U 5        g r   r$   )r   r&   new_lists      r   setlistImmutableMultiDictMixin.setlist   r)   r   Nc                    [        U 5        g r   r$   )r   r&   default_lists      r   setlistdefault&ImmutableMultiDictMixin.setlistdefault   r)   r   rY   r   )r
   rT   rU   rV   rW   r    rn   r   r   r   r   r   rX   rY   r   r   r   r   s   s*    ;&r   r   c                  t    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS\4S jrS rS rS rSrg)ImmutableHeadersMixin   zMakes 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.

.. versionadded:: 0.5

:private:
c                    [        U 5        g r   r$   )r   r&   r{   s      r   r'   !ImmutableHeadersMixin.__delitem__   r)   r   c                    [        U 5        g r   r$   r3   s      r   r5   !ImmutableHeadersMixin.__setitem__   r)   r   c                    [        U 5        g r   r$   r   _key_valuer{   s       r   setImmutableHeadersMixin.set   r)   r   c                    [        U 5        g r   r$   )r   r&   valuess      r   r   ImmutableHeadersMixin.setlist   r)   r   c                    [        U 5        g r   r$   r   s       r   r   ImmutableHeadersMixin.add   r)   r   c                    [        U 5        g r   r$   )r   r   r   _kwargss       r   
add_header ImmutableHeadersMixin.add_header   r)   r   c                    [        U 5        g r   r$   r%   s     r   r=   ImmutableHeadersMixin.remove   r)   r   c                    [        U 5        g r   r$   ry   s      r   rA   ImmutableHeadersMixin.extend   r)   r   c                    [        U 5        g r   r$   ry   s      r   r|   ImmutableHeadersMixin.update   r)   r   c                    [        U 5        g r   r$   rD   s      r   rF   ImmutableHeadersMixin.insert   r)   r   Nc                    [        U 5        g r   r$   rt   s      r   rJ   ImmutableHeadersMixin.pop   r)   r   c                    [        U 5        g r   r$   r   s    r   r   ImmutableHeadersMixin.popitem   r)   r   c                    [        U 5        g r   r$   rt   s      r   rv    ImmutableHeadersMixin.setdefault   r)   r   c                    [        U 5        g r   r$   rt   s      r   r   $ImmutableHeadersMixin.setlistdefault   r)   r   rY   )r
   rT   rU   rV   rW   r'   r5   r   r   r   r   r=   rA   r|   rF   r   rJ   r   rv   r   rX   rY   r   r   r   r      sT     H r   r   c                "   ^  U 4S jnT Ul         U$ )Nc                   > [        [        [        U 5      T5      " U0 UD6nU R                  b  U R                  U 5        U$ r   )getattrr^   UpdateDictMixin	on_update)r   rz   kwr   names       r   oncall_calls_update.<locals>.oncall   s;    U?D148$E"E>>%NN4 	r   )r
   )r   r   s   ` r   _calls_updater      s     FOMr   c                     ^  \ rS rSrSrSrSU 4S jjr\4U 4S jjr\	" S5      r
\	" S5      r\	" S5      r\	" S	5      r\	" S
5      rSrU =r$ )r      zVMakes dicts call `self.on_update` on modifications.

.. versionadded:: 0.5

:private:
Nc                x   > X;  n[         TU ]  X5      nU(       a  U R                  b  U R                  U 5        U$ r   )r^   rv   r   r   r&   ru   modifiedr   re   s        r   rv   UpdateDictMixin.setdefault   s6    ?W-2NN4 	r   c                   > X;   nU[         L a  [        TU ]	  U5      nO[        TU ]	  X5      nU(       a  U R                  b  U R                  U 5        U$ r   )r   r^   rJ   r   r   s        r   rJ   UpdateDictMixin.pop   sK    ;hS!BS*B2NN4 	r   r5   r'   r   r   r|   rY   r   )r
   rT   rU   rV   rW   r   rv   r   rJ   r   r5   r'   r   r   r|   rX   r   r   s   @r   r   r      sR     I  (   .K.K'"EI&G8$Fr   r   N)
__future__r   	itertoolsr   	_internalr   r   r   r[   r   r   r   ri   r   rY   r   r   <module>r      sS    "   F2 2j/ /d0 <2 2j
%d %r   