§
    ®eîiÜ  ã                   ó¶   — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZ  ed¦  «        Z ed¦  «        Z ed¦  «        Z G d	„ d
eeeef         ¦  «        ZdS )aO  This module contains a mutable mapping that keeps track of the keys that where accessed.

.. versionadded:: 20.0

Warning:
    Contents of this module are intended to be used internally by the library and *not* by the
    user. Changes to this module are not considered breaking changes and may not be documented in
    the changelog.
é    )ÚUserDict)ÚMapping)ÚFinalÚGenericÚTypeVar)ÚDEFAULT_NONEÚDefaultValueÚ_VTÚ_KTÚ_Tc            	       óP  ‡ — e Zd ZU dZ e¦   «         Zeed<   	 dZdˆ fd„Z	de
deddfˆ fd	„Zde
ddfˆ fd
„Zde
ee
         z  ddfd„Zdee
         fd„Zdeee
ef                  fd„Zde
ddfd„Zdee
ef         ddfd„Zefde
dedefˆ fd„Zdˆ fd„Zdddde
dedz  defd„Zˆ xZS )ÚTrackingDicta'  Mutable mapping that keeps track of which keys where accessed with write access.
    Read-access is not tracked.

    Note:
        * ``setdefault()`` and ``pop`` are considered writing only depending on whether the
            key is present
        * deleting values is considered writing
    ÚDELETED)Ú_write_access_keysÚreturnNc                 ón   •— t          ¦   «                              ¦   «          t          ¦   «         | _        d S ©N)ÚsuperÚ__init__Úsetr   ©ÚselfÚ	__class__s    €úd/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/telegram/ext/_utils/trackingdict.pyr   zTrackingDict.__init__7   s+   ø€ Ý‰Œ×ÒÑÔÐÝ,/©E¬EˆÔÐÐó    ÚkeyÚvaluec                 óv   •— |                       |¦  «         t          ¦   «                              ||¦  «         d S r   )Ú_TrackingDict__track_writer   Ú__setitem__)r   r   r   r   s      €r   r    zTrackingDict.__setitem__;   s7   ø€ Ø×Ò˜3ÑÔÐÝ‰Œ×Ò˜C Ñ'Ô'Ð'Ð'Ð'r   c                 ót   •— |                       |¦  «         t          ¦   «                              |¦  «         d S r   )r   r   Ú__delitem__)r   r   r   s     €r   r"   zTrackingDict.__delitem__?   s5   ø€ Ø×Ò˜3ÑÔÐÝ‰Œ×Ò˜CÑ Ô Ð Ð Ð r   c                 óˆ   — t          |t          ¦  «        r| xj        |z  c_        d S | j                             |¦  «         d S r   )Ú
isinstancer   r   Úadd©r   r   s     r   Ú__track_writezTrackingDict.__track_writeC   sK   € Ý�c�3ÑÔð 	-ØÐ#Ô# sÑ*Ð#Ô#Ð#Ð#àÔ#×'Ò'¨Ñ,Ô,Ð,Ð,Ð,r   c                 ó:   — | j         }t          ¦   «         | _         |S )zUReturns all keys that were write-accessed since the last time this method was called.)r   r   )r   Úouts     r   Úpop_accessed_keyszTrackingDict.pop_accessed_keysI   s   € àÔ%ˆÝ"%¡%¤%ˆÔØˆ
r   c                 óH   ‡ — ‰                       ¦   «         }ˆ fd„|D ¦   «         S )zØ
        Returns all keys & corresponding values as set of tuples that were write-accessed since
        the last time this method was called. If a key was deleted, the value will be
        :attr:`DELETED`.
        c                 óJ   •— g | ]}|‰                      |‰j        ¦  «        f‘Œ S © )Úgetr   )Ú.0r   r   s     €r   ú
<listcomp>z9TrackingDict.pop_accessed_write_items.<locals>.<listcomp>V   s.   ø€ ÐCÐCÐC°s��d—h’h˜s D¤LÑ1Ô1Ð2ÐCÐCÐCr   )r*   )r   Úkeyss   ` r   Úpop_accessed_write_itemsz%TrackingDict.pop_accessed_write_itemsO   s0   ø€ ð ×%Ò%Ñ'Ô'ˆØCÐCÐCÐC¸dÐCÑCÔCÐCr   c                 ó:   — | j                              |¦  «         dS )zŽUse this method have the key returned again in the next call to
        :meth:`pop_accessed_write_items` or :meth:`pop_accessed_keys`
        N)r   r%   r&   s     r   Úmark_as_accessedzTrackingDict.mark_as_accessedX   s!   € ð 	Ô×#Ò# CÑ(Ô(Ð(Ð(Ð(r   Úmappingc                 óN   — |                      ¦   «         D ]\  }}|| j        |<   ŒdS )z8Like ``update``, but doesn't count towards write access.N)ÚitemsÚdata)r   r5   r   r   s       r   Úupdate_no_trackzTrackingDict.update_no_track`   s4   € à!Ÿ-š-™/œ/ð 	#ð 	#‰JˆC�Ø"ˆDŒI�c‰NˆNð	#ð 	#r   Údefaultc                 óè   •— || v r|                       |¦  «         t          |t          ¦  «        r!t          ¦   «                              |¦  «        S t          ¦   «                              ||¬¦  «        S )N)r:   )r   r$   r	   r   Úpop)r   r   r:   r   s      €r   r<   zTrackingDict.popg   sd   ø€ ð
 �$ˆ;ˆ;Ø×Ò˜sÑ#Ô#Ð#Ý�g�|Ñ,Ô,ð 	$Ý‘7”7—;’;˜sÑ#Ô#Ð#Ý‰wŒw�{Š{˜3¨ˆ{Ñ0Ô0Ð0r   c                 óÈ   •— |                       t          t          ¦   «                              ¦   «         ¦  «        ¦  «         t          ¦   «                              ¦   «          d S r   )r   r   r   r1   Úclearr   s    €r   r>   zTrackingDict.clearr   s@   ø€ Ø×Ò�3�u™wœwŸ|š|™~œ~Ñ.Ô.Ñ/Ô/Ð/Ý‰Œ�Š‰Œˆˆˆr   r   zTrackingDict[_KT, _T]c                 óR   — || v r| |         S |                       |¦  «         || |<   |S r   )r   )r   r   r:   s      r   Ú
setdefaultzTrackingDict.setdefaultx   s7   € Ø�$ˆ;ˆ;Ø˜”9Ðà×Ò˜3ÑÔÐØˆˆS‰	Øˆr   )r   Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úobjectr   r   Ú__annotations__Ú	__slots__r   r   r
   r    r"   r   r   r*   ÚlistÚtupler2   r4   r   r9   r   r<   r>   r   r@   Ú__classcell__)r   s   @r   r   r   (   s(  ø€ € € € € € ðð ð �V‘X”X€GˆUÐÐÑØ>à'€Ið2ð 2ð 2ð 2ð 2ð 2ð(˜sð (¨3ð (°4ð (ð (ð (ð (ð (ð (ð!˜sð ! tð !ð !ð !ð !ð !ð !ð-  s¨3¤x¡ð -°Dð -ð -ð -ð -ð 3 s¤8ð ð ð ð ðD¨$¨u°S¸#°X¬Ô*?ð Dð Dð Dð Dð) Cð )¨Dð )ð )ð )ð )ð# w¨s°C¨xÔ'8ð #¸Tð #ð #ð #ð #ð $ð	1ð 	1àð	1ð ð	1ð 
ð		1ð 	1ð 	1ð 	1ð 	1ð 	1ðð ð ð ð ð ðð Ð0ð °sð ÀRÈ$ÁYð ÐZ\ð ð ð ð ð ð ð ð r   r   N)rD   Úcollectionsr   Úcollections.abcr   Útypingr   r   r   Útelegram._utils.defaultvaluer   r	   r
   r   r   r   r-   r   r   ú<module>rO      sÛ   ðð&ð ð !Ð  Ð  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cà€gˆe�n„n€Ø€gˆe�n„n€Ø€WˆT�]„]€ðVð Vð Vð Vð V�8˜W S¨# XÔ.ñ Vô Vð Vð Vð Vr   