
    ՟f                         d Z ddlmZ ddlmZmZmZmZmZm	Z	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y
)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)	FinalGenericListMappingOptionalSetTupleTypeVarUnion)DEFAULT_NONEDefaultValue_VT_KT_Tc            	       0    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e
   f   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e   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                 @    t         |           t               | _        y N)super__init__setr   self	__class__s    [/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/ext/_utils/trackingdict.pyr   zTrackingDict.__init__5   s    ,/E    keyvaluec                 H    | j                  |       t        | 	  ||       y r   )_TrackingDict__track_writer   __setitem__)r   r!   r"   r   s      r   r%   zTrackingDict.__setitem__9   s     3C'r    c                 F    | j                  |       t        | 	  |       y r   )r$   r   __delitem__)r   r!   r   s     r   r'   zTrackingDict.__delitem__=   s    3C r    c                     t        |t              r| xj                  |z  c_        y | j                  j                  |       y r   )
isinstancer   r   addr   r!   s     r   __track_writezTrackingDict.__track_writeA   s1    c3##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_keysG   s    %%"%%
r    c                     | j                         }|D cg c]   }|| j                  || j                        f" c}S c c}w )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`.
        )r/   getr   )r   keysr!   s      r   pop_accessed_write_itemsz%TrackingDict.pop_accessed_write_itemsM   s:     %%'>BCsdhhsDLL12CCCs   %=c                 :    | j                   j                  |       y)zUse 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_accessedV   s     	##C(r    mappingc                 R    |j                         D ]  \  }}|| j                  |<    y)z8Like ``update``, but doesn't count towards write access.N)itemsdata)r   r6   r!   r"   s       r   update_no_trackzTrackingDict.update_no_track^   s(    !--/ 	#JC"DIIcN	#r    defaultc                     || v r| j                  |       t        |t              rt        |   |      S t        |   ||      S )N)r;   )r$   r)   r   r   pop)r   r!   r;   r   s      r   r=   zTrackingDict.pope   sF    
 $;s#g|,7;s##w{3{00r    c                 n    | j                  t        t        |                       t        |           y r   )r$   r   r   r2   clearr   s    r   r?   zTrackingDict.clearp   s%    3uw|~./r    r   zTrackingDict[_KT, _T]c                 D    || v r| |   S | j                  |       || |<   |S r   )r$   )r   r!   r;   s      r   
setdefaultzTrackingDict.setdefaultv   s/    $;93S	r    )r   Nr   )__name__
__module____qualname____doc__objectr   r   __annotations__	__slots__r   r   r   r%   r'   r   r	   r$   r/   r   r
   r3   r5   r   r:   r   r=   r?   r   r   rA   __classcell__)r   s   @r   r   r   &   s    XGU>'I2(s (3 (4 (!s !t !-sCH}!5 -$ -3s8 D$uS#X*? D)C )D )#wsCx'8 #T # $	1	1 	1 
		10 s Xb\ ]_ r    r   N)rE   collectionsr   typingr   r   r   r   r   r	   r
   r   r   telegram._utils.defaultvaluer   r   r   r   r   r    r    r   <module>rN      sO   & ! V V V CenenT]V8WS#X. Vr    