
     f                        d dl mZ d dlmZ ddlmZ d Z G d d          Z G d d	          Z G d
 de          Z	 G d d          Z
d Z G d de          ZdS )    )annotations)repeat   )_missingc                J    t          t          |           j        d          )Nz objects are immutable)	TypeErrortype__name__selfs    a/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/werkzeug/datastructures/mixins.pyis_immutabler      s"    
tDzz*DDD
E
EE    c                  h    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZddZd ZddZdS )ImmutableListMixinzOMakes a :class:`list` immutable.

    .. versionadded:: 0.5

    :private:
    Nc                h    | j         | j         S t          t          |                     x}| _         |S N)_hash_cachehashtupler   rvs     r   __hash__zImmutableListMixin.__hash__   s4    '## $U4[[ 1 11T	r   c                @    t          |           t          |           ffS r   )r	   listr   protocols     r   __reduce_ex__z ImmutableListMixin.__reduce_ex__       DzzDJJ=((r   c                $    t          |            d S r   r   r   keys     r   __delitem__zImmutableListMixin.__delitem__       Tr   c                $    t          |            d S r   r!   r   others     r   __iadd__zImmutableListMixin.__iadd__"   r%   r   c                $    t          |            d S r   r!   r'   s     r   __imul__zImmutableListMixin.__imul__%   r%   r   c                $    t          |            d S r   r!   r   r#   values      r   __setitem__zImmutableListMixin.__setitem__(   r%   r   c                $    t          |            d S r   r!   r   items     r   appendzImmutableListMixin.append+   r%   r   c                $    t          |            d S r   r!   r1   s     r   removezImmutableListMixin.remove.   r%   r   c                $    t          |            d S r   r!   )r   iterables     r   extendzImmutableListMixin.extend1   r%   r   c                $    t          |            d S r   r!   r   posr.   s      r   insertzImmutableListMixin.insert4   r%   r   c                $    t          |            d S r   r!   )r   indexs     r   popzImmutableListMixin.pop7   r%   r   c                $    t          |            d S r   r!   r   s    r   reversezImmutableListMixin.reverse:   r%   r   Fc                $    t          |            d S r   r!   )r   r#   rB   s      r   sortzImmutableListMixin.sort=   r%   r   )r=   )NF)r
   
__module____qualname____doc__r   r   r   r$   r)   r+   r/   r3   r5   r8   r<   r@   rB   rD    r   r   r   r      s          K  ) ) )                          r   r   c                  x     e Zd ZdZdZed fd	            Zd Zd Zd Z	ddZ
d Zdd	Zd
 Zd Zd Zd Z xZS )ImmutableDictMixinzOMakes a :class:`dict` immutable.

    .. versionadded:: 0.5

    :private:
    Nc                    t                                          |           }|                    t          |t	          |                               |S r   )super__new____init__zipr   )clskeysr.   instance	__class__s       r   fromkeyszImmutableDictMixin.fromkeysK   sA    77??3''#dF5MM22333r   c                @    t          |           t          |           ffS r   )r	   dictr   s     r   r   z ImmutableDictMixin.__reduce_ex__Q   r   r   c                *    |                                  S r   itemsr   s    r   _iter_hashitemsz"ImmutableDictMixin._iter_hashitemsT   s    zz||r   c                    | j         | j         S t          t          |                                                     x}| _         |S r   )r   r   	frozensetrZ   r   s     r   r   zImmutableDictMixin.__hash__W   sB    '## $Yt/C/C/E/E%F%F G GGT	r   c                $    t          |            d S r   r!   r   r#   defaults      r   
setdefaultzImmutableDictMixin.setdefault]   r%   r   c                $    t          |            d S r   r!   r   argskwargss      r   updatezImmutableDictMixin.update`   r%   r   c                $    t          |            d S r   r!   r^   s      r   r@   zImmutableDictMixin.popc   r%   r   c                $    t          |            d S r   r!   r   s    r   popitemzImmutableDictMixin.popitemf   r%   r   c                $    t          |            d S r   r!   r-   s      r   r/   zImmutableDictMixin.__setitem__i   r%   r   c                $    t          |            d S r   r!   r"   s     r   r$   zImmutableDictMixin.__delitem__l   r%   r   c                $    t          |            d S r   r!   r   s    r   clearzImmutableDictMixin.clearo   r%   r   r   )r
   rE   rF   rG   r   classmethodrT   r   rZ   r   r`   re   r@   rh   r/   r$   rl   __classcell__rS   s   @r   rJ   rJ   A   s          K     [
) ) )                        r   rJ   c                  >    e Zd ZdZd Zd Zd Zd Zd Zd Z	d
d	Z
dS )ImmutableMultiDictMixinzTMakes a :class:`MultiDict` immutable.

    .. versionadded:: 0.5

    :private:
    c                h    t          |           t          |                     d                    ffS NT)multi)r	   r   rY   r   s     r   r   z%ImmutableMultiDictMixin.__reduce_ex__{   s,    DzzD$!7!788:::r   c                .    |                      d          S rs   rX   r   s    r   rZ   z'ImmutableMultiDictMixin._iter_hashitems~   s    zzz%%%r   c                $    t          |            d S r   r!   r-   s      r   addzImmutableMultiDictMixin.add   r%   r   c                $    t          |            d S r   r!   r   s    r   popitemlistz#ImmutableMultiDictMixin.popitemlist   r%   r   c                $    t          |            d S r   r!   r"   s     r   poplistzImmutableMultiDictMixin.poplist   r%   r   c                $    t          |            d S r   r!   )r   r#   new_lists      r   setlistzImmutableMultiDictMixin.setlist   r%   r   Nc                $    t          |            d S r   r!   )r   r#   default_lists      r   setlistdefaultz&ImmutableMultiDictMixin.setlistdefault   r%   r   r   )r
   rE   rF   rG   r   rZ   rw   ry   r{   r~   r   rH   r   r   rq   rq   s   s         ; ; ;& & &             r   rq   c                  l    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdefdZd Zd Zd ZdS )ImmutableHeadersMixinzMakes 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                $    t          |            d S r   r!   )r   r#   rd   s      r   r$   z!ImmutableHeadersMixin.__delitem__   r%   r   c                $    t          |            d S r   r!   r-   s      r   r/   z!ImmutableHeadersMixin.__setitem__   r%   r   c                $    t          |            d S r   r!   r   _key_valuerd   s       r   setzImmutableHeadersMixin.set   r%   r   c                $    t          |            d S r   r!   )r   r#   valuess      r   r~   zImmutableHeadersMixin.setlist   r%   r   c                $    t          |            d S r   r!   r   s       r   rw   zImmutableHeadersMixin.add   r%   r   c                $    t          |            d S r   r!   )r   r   r   _kwargss       r   
add_headerz ImmutableHeadersMixin.add_header   r%   r   c                $    t          |            d S r   r!   r"   s     r   r5   zImmutableHeadersMixin.remove   r%   r   c                $    t          |            d S r   r!   rb   s      r   r8   zImmutableHeadersMixin.extend   r%   r   c                $    t          |            d S r   r!   rb   s      r   re   zImmutableHeadersMixin.update   r%   r   c                $    t          |            d S r   r!   r:   s      r   r<   zImmutableHeadersMixin.insert   r%   r   Nc                $    t          |            d S r   r!   r^   s      r   r@   zImmutableHeadersMixin.pop   r%   r   c                $    t          |            d S r   r!   r   s    r   rh   zImmutableHeadersMixin.popitem   r%   r   c                $    t          |            d S r   r!   r^   s      r   r`   z ImmutableHeadersMixin.setdefault   r%   r   c                $    t          |            d S r   r!   r^   s      r   r   z$ImmutableHeadersMixin.setlistdefault   r%   r   )r
   rE   rF   rG   r$   r/   r   r~   rw   r   r5   r8   re   r<   r   r@   rh   r`   r   rH   r   r   r   r      s                              H            r   r   c                       fd} |_         |S )Nc                     t          t          t          |                     |i |}| j        |                     |            |S r   )getattrrL   UpdateDictMixin	on_update)r   rc   kwr   names       r   oncallz_calls_update.<locals>.oncall   sJ    8WU?D11488$E"EE>%NN4   	r   )r
   )r   r   s   ` r   _calls_updater      s*         FOMr   c                       e Zd ZdZdZd
 fd	Zef fd	Z ed          Z	 ed          Z
 ed          Z ed          Z ed	          Z xZS )r   zbMakes dicts call `self.on_update` on modifications.

    .. versionadded:: 0.5

    :private:
    Nc                    || v}t                                          ||          }|r| j        |                     |            |S r   )rL   r`   r   r   r#   r_   modifiedr   rS   s        r   r`   zUpdateDictMixin.setdefault   sK    d?WWW-- 	!2NN4   	r   c                    || v }|t           u r"t                                          |          }n"t                                          ||          }|r| j        |                     |            |S r   )r   rL   r@   r   r   s        r   r@   zUpdateDictMixin.pop   sk    $;hS!!BBS'**B 	!2NN4   	r   r/   r$   rl   rh   re   r   )r
   rE   rF   rG   r   r`   r   r@   r   r/   r$   rl   rh   re   rn   ro   s   @r   r   r      s          I       (        -..K-..KM'""EmI&&G]8$$FFFFFr   r   N)
__future__r   	itertoolsr   	_internalr   r   r   rJ   rq   r   r   rV   r   rH   r   r   <module>r      s6   " " " " " "                  F F F2 2 2 2 2 2 2 2j/ / / / / / / /d    0   <2 2 2 2 2 2 2 2j
 
 
% % % % %d % % % % %r   