
    Yi                         S r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
  SSKJrJr  \	" S5      r\	" S5      r\	" S5      r " S	 S
\\\\4   5      rg)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OptionalTypeVarUnion)DEFAULT_NONEDefaultValue_VT_KT_Tc            	       \  ^  \ rS rSr% Sr\" 5       r\\S'    Sr	SU 4S jjr
S\S	\SS4U 4S
 jjrS\SS4U 4S jjrS\\\\   4   SS4S jrS\\   4S jrS\\\\4      4S jrS\SS4S jrS\\\4   SS4S jr\4S\S\S\4U 4S jjjrSU 4S jjrSSSS\S\\   S\4S jjrSrU =r $ )TrackingDict'   a  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U ]  5         [        5       U l        g N)super__init__setr   self	__class__s    K/app/.venv/lib/python3.13/site-packages/telegram/ext/_utils/trackingdict.pyr   TrackingDict.__init__6   s    ,/E    keyvaluec                 F   > U R                  U5        [        TU ]	  X5        g r   )_TrackingDict__track_writer   __setitem__)r   r    r!   r   s      r   r$   TrackingDict.__setitem__:   s    3C'r   c                 F   > U R                  U5        [        TU ]	  U5        g r   )r#   r   __delitem__)r   r    r   s     r   r'   TrackingDict.__delitem__>   s    3C r   c                     [        U[        5      (       a  U =R                  U-  sl        g U R                  R                  U5        g r   )
isinstancer   r   addr   r    s     r   __track_writeTrackingDict.__track_writeB   s4    c3##s*###'',r   c                 <    U R                   n[        5       U l         U$ )zUReturns all keys that were write-accessed since the last time this method was called.)r   r   )r   outs     r   pop_accessed_keysTrackingDict.pop_accessed_keysH   s    %%"%%
r   c                     U R                  5       nU Vs/ s H  o"U R                  X R                  5      4PM!     sn$ s  snf )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`.
)r1   getr   )r   keysr    s      r   pop_accessed_write_items%TrackingDict.pop_accessed_write_itemsN   s:     %%'>BCdsdhhsLL12dCCCs   &>c                 :    U R                   R                  U5        g)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_accessedTrackingDict.mark_as_accessedW   s     	##C(r   mappingc                 R    UR                  5        H  u  p#X0R                  U'   M     g)z8Like ``update``, but doesn't count towards write access.N)itemsdata)r   r;   r    r!   s       r   update_no_trackTrackingDict.update_no_track_   s    !--/JC"IIcN *r   defaultc                    > X;   a  U R                  U5        [        U[        5      (       a  [        TU ]  U5      $ [        TU ]  XS9$ )N)rA   )r#   r*   r   r   pop)r   r    rA   r   s      r   rC   TrackingDict.popf   sE    
 ;s#g|,,7;s##w{3{00r   c                 n   > U R                  [        [        TU ]  5       5      5        [        TU ]  5         g r   )r#   r   r   r5   clearr   s    r   rF   TrackingDict.clearq   s%    3uw|~./r   r   zTrackingDict[_KT, _T]c                 B    X;   a  X   $ U R                  U5        X U'   U$ r   )r#   )r   r    rA   s      r   
setdefaultTrackingDict.setdefaultw   s)    ;93S	r   )r   Nr   )!__name__
__module____qualname____firstlineno____doc__objectr   r   __annotations__	__slots__r   r   r   r$   r'   r	   r   r#   r1   listtupler6   r9   r   r?   r
   rC   rF   r   r   rI   __static_attributes____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 	10 s Xb\ ]_  r   r   N)rO   collectionsr   collections.abcr   typingr   r   r   r   r	   telegram._utils.defaultvaluer
   r   r   r   r   r    r   r   <module>r\      sO   & ! # ; ; CenenT]V8WS#X. Vr   