o
    ßý°jO#  ã                   @  s  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 d¡Ze d¡Ze d	¡Zejd
ejdejf d�Zd dd„ZG dd„ dƒZG dd„ dejeef ƒZG dd„ deeef ƒZG dd„ dƒZd!dd„ZG d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                 C  s   t t| ƒj›d�ƒ‚)Nz objects are immutable)Ú	TypeErrorÚtypeÚ__name__©r   © r   ú‘/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/werkzeug/datastructures/mixins.pyÚ_immutable_error   s   r   c                   @  s¤   e Zd ZU dZdZded< d0dd„Zd1dd„Zd2dd„Zd3dd„Z	d3dd„Z
d4dd„Zd5dd„Zd5dd„Zd6d d!„Zd7d#d$„Zd8d9d'd(„Zd:d*d+„Zd;d<d.d/„ZdS )=ÚImmutableListMixinzOMakes a :class:`list` immutable.

    .. versionadded:: 0.5

    :private:
    Nú
int | NoneÚ_hash_cacher   Úintc                 C  s&   | j d ur| j S tt| ƒƒ }| _ |S ©N)r   ÚhashÚtuple©r   Úrvr   r   r   Ú__hash__!   s   
zImmutableListMixin.__hash__Úprotocolút.SupportsIndexr   c                 C  ó   t | ƒt| ƒffS r   )r   Úlist©r   r"   r   r   r   Ú__reduce_ex__'   ó   z ImmutableListMixin.__reduce_ex__Úkeyr   c                 C  ó   t | ƒ d S r   ©r   ©r   r)   r   r   r   Ú__delitem__*   ó   zImmutableListMixin.__delitem__Úotherc                 C  r*   r   r+   ©r   r/   r   r   r   Ú__iadd__-   r.   zImmutableListMixin.__iadd__c                 C  r*   r   r+   r0   r   r   r   Ú__imul__0   r.   zImmutableListMixin.__imul__Úvaluec                 C  r*   r   r+   ©r   r)   r3   r   r   r   Ú__setitem__3   r.   zImmutableListMixin.__setitem__Úitemc                 C  r*   r   r+   ©r   r6   r   r   r   Úappend6   r.   zImmutableListMixin.appendc                 C  r*   r   r+   r7   r   r   r   Úremove9   r.   zImmutableListMixin.removeÚiterablec                 C  r*   r   r+   )r   r:   r   r   r   Úextend<   r.   zImmutableListMixin.extendÚposc                 C  r*   r   r+   ©r   r<   r3   r   r   r   Úinsert?   r.   zImmutableListMixin.insertéÿÿÿÿÚindexc                 C  r*   r   r+   )r   r@   r   r   r   ÚpopB   r.   zImmutableListMixin.popr   c                 C  r*   r   r+   r   r   r   r   ÚreverseE   r.   zImmutableListMixin.reverseFrB   c                 C  r*   r   r+   )r   r)   rB   r   r   r   ÚsortH   r.   zImmutableListMixin.sort©r   r   ©r"   r#   r   r   ©r)   r   r   r   ©r/   r   r   r   ©r)   r   r3   r   r   r   )r6   r   r   r   )r:   r   r   r   ©r<   r   r3   r   r   r   )r?   )r@   r   r   r   ©r   r   r   r   )NF)r)   r   rB   r   r   r   )r   Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r!   r'   r-   r1   r2   r5   r8   r9   r;   r>   rA   rB   rC   r   r   r   r   r      s    
 










r   c                      sÒ   e Zd ZU dZdZded< eejd4dd„ƒƒZ	eejd5dd„ƒƒZ	e	d6d7‡ fdd„ƒZ	d8dd„Z
d9dd„Zd:dd„Zd6d;d!d"„Zd<d%d&„Zd=d(d)„Zd6d;d*d+„Zd>d,d-„Zd?d.d/„Zd@d0d1„Zd>d2d3„Z‡  ZS )AÚImmutableDictMixinzŽMakes a :class:`dict` immutable.

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

    .. versionadded:: 0.5

    :private:
    Nr   r   Úkeysúcabc.Iterable[K]r3   ÚNoner   ú#ImmutableDictMixin[K, t.Any | None]c                 C  ó   d S r   r   ©ÚclsrP   r3   r   r   r   ÚfromkeysY   s   zImmutableDictMixin.fromkeysr	   úImmutableDictMixin[K, V]c                 C  rT   r   r   rU   r   r   r   rW   ^   s   úV | Noneú>ImmutableDictMixin[K, t.Any | None] | ImmutableDictMixin[K, V]c                   s$   t ƒ  | ¡}| t|t|ƒƒ¡ |S r   )ÚsuperÚ__new__Ú__init__Úzipr   )rV   rP   r3   Úinstance©Ú	__class__r   r   rW   a   s   r"   r#   r   c                 C  r$   r   )r   Údictr&   r   r   r   r'   i   r(   z ImmutableDictMixin.__reduce_ex__út.Iterable[t.Any]c                 C  s   |   ¡ S r   ©Úitemsr   r   r   r   Ú_iter_hashitemsl   s   z"ImmutableDictMixin._iter_hashitemsr   c                 C  s*   | j d ur| j S tt|  ¡ ƒƒ }| _ |S r   )r   r   Ú	frozensetrf   r   r   r   r   r!   o   s   
zImmutableDictMixin.__hash__r)   Údefaultr   c                 C  r*   r   r+   ©r   r)   rh   r   r   r   Ú
setdefaultu   r.   zImmutableDictMixin.setdefaultÚargÚkwargsc                K  r*   r   r+   ©r   rk   rl   r   r   r   Úupdatex   r.   zImmutableDictMixin.updater/   c                 C  r*   r   r+   r0   r   r   r   Ú__ior__{   r.   zImmutableDictMixin.__ior__c                 C  r*   r   r+   ri   r   r   r   rA   ~   r.   zImmutableDictMixin.popc                 C  r*   r   r+   r   r   r   r   Úpopitem�   r.   zImmutableDictMixin.popitemc                 C  r*   r   r+   r4   r   r   r   r5   „   r.   zImmutableDictMixin.__setitem__c                 C  r*   r   r+   r,   r   r   r   r-   ‡   r.   zImmutableDictMixin.__delitem__c                 C  r*   r   r+   r   r   r   r   ÚclearŠ   r.   zImmutableDictMixin.clear)rP   rQ   r3   rR   r   rS   )rP   rQ   r3   r	   r   rX   r   )rP   rQ   r3   rY   r   rZ   rE   ©r   rc   rD   ©r)   r   rh   r   r   r   ©rk   r   rl   r   r   r   rG   ©r   r   rH   rF   )r   rK   rL   rM   r   rN   ÚclassmethodÚtÚoverloadrW   r'   rf   r!   rj   rn   ro   rA   rp   r5   r-   rq   Ú__classcell__r   r   r`   r   rO   L   s.   
 
ÿ







rO   c                   @  sX   e Zd ZdZddd„Zdd	d
„Zddd„Zddd„Zddd„Zd dd„Z	d!d"dd„Z
dS )#ÚImmutableMultiDictMixinzTMakes a :class:`MultiDict` immutable.

    .. versionadded:: 0.5

    :private:
    r"   r#   r   r   c                 C  s   t | ƒt| jdd�ƒffS ©NT)Úmulti)r   r%   re   r&   r   r   r   r'   –   s   z%ImmutableMultiDictMixin.__reduce_ex__rc   c                 C  s   | j dd�S r{   rd   r   r   r   r   rf   ™   r.   z'ImmutableMultiDictMixin._iter_hashitemsr)   r3   r   c                 C  r*   r   r+   r4   r   r   r   Úaddœ   r.   zImmutableMultiDictMixin.addc                 C  r*   r   r+   r   r   r   r   ÚpopitemlistŸ   r.   z#ImmutableMultiDictMixin.popitemlistc                 C  r*   r   r+   r,   r   r   r   Úpoplist¢   r.   zImmutableMultiDictMixin.poplistÚnew_listc                 C  r*   r   r+   )r   r)   r€   r   r   r   Úsetlist¥   r.   zImmutableMultiDictMixin.setlistNÚdefault_listc                 C  r*   r   r+   )r   r)   r‚   r   r   r   Úsetlistdefault¨   r.   z&ImmutableMultiDictMixin.setlistdefaultrE   rr   rH   ru   rF   )r)   r   r€   r   r   r   r   )r)   r   r‚   r   r   r   )r   rK   rL   rM   r'   rf   r}   r~   r   r�   rƒ   r   r   r   r   rz   Ž   s    





rz   c                   @  s¬   e Zd ZdZd,dd„Zd-d
d„Zd.dd„Zd/dd„Zd.dd„Zd.dd„Z	d0dd„Z
d1dd„Zd1dd„Zd2dd„Zd3d d!„Zd"efd4d$d%„Zd5d&d'„Zd4d(d)„Zd4d*d+„Zd"S )6Ú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   rl   r   r   c                 K  r*   r   r+   )r   r)   rl   r   r   r   r-   ¹   r.   z!ImmutableHeadersMixin.__delitem__r3   c                 C  r*   r   r+   r4   r   r   r   r5   ¼   r.   z!ImmutableHeadersMixin.__setitem__c                K  r*   r   r+   ©r   r)   r3   rl   r   r   r   Úset¿   r.   zImmutableHeadersMixin.setÚvaluesc                 C  r*   r   r+   )r   r)   r‡   r   r   r   r�   Â   r.   zImmutableHeadersMixin.setlistc                K  r*   r   r+   r…   r   r   r   r}   Å   r.   zImmutableHeadersMixin.addc                K  r*   r   r+   r…   r   r   r   Ú
add_headerÈ   r.   z ImmutableHeadersMixin.add_headerc                 C  r*   r   r+   r,   r   r   r   r9   Ë   r.   zImmutableHeadersMixin.removerk   c                K  r*   r   r+   rm   r   r   r   r;   Î   r.   zImmutableHeadersMixin.extendc                K  r*   r   r+   rm   r   r   r   rn   Ñ   r.   zImmutableHeadersMixin.updater/   c                 C  r*   r   r+   r0   r   r   r   ro   Ô   r.   zImmutableHeadersMixin.__ior__r<   c                 C  r*   r   r+   r=   r   r   r   r>   ×   r.   zImmutableHeadersMixin.insertNrh   c                 C  r*   r   r+   ri   r   r   r   rA   Ú   r.   zImmutableHeadersMixin.popc                 C  r*   r   r+   r   r   r   r   rp   Ý   r.   zImmutableHeadersMixin.popitemc                 C  r*   r   r+   ri   r   r   r   rj   à   r.   z ImmutableHeadersMixin.setdefaultc                 C  r*   r   r+   ri   r   r   r   rƒ   ã   r.   z$ImmutableHeadersMixin.setlistdefault)r)   r   rl   r   r   r   rH   )r)   r   r3   r   rl   r   r   r   )r)   r   r‡   r   r   r   rF   rt   rG   rI   rs   ru   )r   rK   rL   rM   r-   r5   r†   r�   r}   rˆ   r9   r;   rn   ro   r>   r   rA   rp   rj   rƒ   r   r   r   r   r„   ¬   s"    












r„   Úfc                   s   d	‡ fdd„}t |ˆ ƒS )
Nr   úUpdateDictMixin[t.Any, t.Any]Úargsr   rl   r   c                  s.   ˆ | g|¢R i |¤Ž}| j d ur|   | ¡ |S r   )Ú	on_update)r   r‹   rl   r    ©r‰   r   r   Úwrapperè   s   

z_always_update.<locals>.wrapper)r   rŠ   r‹   r   rl   r   r   r   r   )r‰   rŽ   r   r�   r   Ú_always_updateç   s   

r�   c                      sä   e Zd ZU dZdZded< d*d+‡ fdd„Zejd,dd„ƒZ	ejd-dd„ƒZ	ejd.dd„ƒZ	e
fd/‡ fdd„Z	ed0‡ fdd„ƒZed1‡ fdd„ƒZed2‡ fdd„ƒZed3‡ fdd „ƒZe	d*d4‡ fd$d%„ƒZed5‡ fd(d)„ƒZ‡  ZS )6ÚUpdateDictMixinz¢Makes 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   rh   rY   r   r	   c                   s2   || v}t ƒ  ||¡}|r| jd ur|  | ¡ |S r   )r[   rj   rŒ   ©r   r)   rh   Úmodifiedr    r`   r   r   rj     s
   
zUpdateDictMixin.setdefaultc                 C  rT   r   r   r,   r   r   r   rA   	  ó   zUpdateDictMixin.popc                 C  rT   r   r   ri   r   r   r   rA     r”   r
   c                 C  rT   r   r   ri   r   r   r   rA     r”   úV | Tc                   sH   || v }|t u rtƒ  |¡}ntƒ  ||¡}|r"| jd ur"|  | ¡ |S r   )r   r[   rA   rŒ   r’   r`   r   r   rA     s   
r3   rR   c                   s   t ƒ  ||¡ d S r   )r[   r5   r4   r`   r   r   r5     s   zUpdateDictMixin.__setitem__c                   s   t ƒ  |¡ d S r   )r[   r-   r,   r`   r   r   r-   !  s   zUpdateDictMixin.__delitem__c                   s   t ƒ  ¡  d S r   )r[   rq   r   r`   r   r   rq   %  s   zUpdateDictMixin.clearútuple[K, V]c                   s
   t ƒ  ¡ S r   )r[   rp   r   r`   r   r   rp   )  s   
zUpdateDictMixin.popitemrk   ú6cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | Nonerl   c                  s6   |d u rt ƒ jdi |¤Ž d S t ƒ j|fi |¤Ž d S )Nr   )r[   rn   rm   r`   r   r   rn   -  s   zUpdateDictMixin.updater/   ú/cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]]c                   s   t ƒ  |¡S r   )r[   ro   r0   r`   r   r   ro   9  s   zUpdateDictMixin.__ior__r   )r   r‘   r)   r   rh   rY   r   r	   )r   r‘   r)   r   r   r	   )r   r‘   r)   r   rh   r	   r   r	   )r   r‘   r)   r   rh   r
   r   r
   )r   r‘   r)   r   rh   r•   r   r•   )r)   r   r3   r	   r   rR   )r)   r   r   rR   )r   rR   )r   r–   )rk   r—   rl   r	   r   rR   )r/   r˜   r   r‘   )r   rK   rL   rM   rŒ   rN   rj   rw   rx   rA   r   r�   r5   r-   rq   rp   rn   ro   ry   r   r   r`   r   r�   õ   s2   
 
ýþr�   rJ   )r‰   r   r   r   ) Ú
__future__r   Úcollections.abcÚabcÚcabcÚtypingrw   Ú	functoolsr   Ú	itertoolsr   Ú	_internalr   ÚTYPE_CHECKINGÚtyping_extensionsÚteÚTypeVarr   r	   r
   ÚCallableÚAnyr   r   r   ÚGenericrO   rz   r„   r�   rb   r�   r   r   r   r   Ú<module>   s&    



5B
;