
    i                       % S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SS	KJr  SS
KJr   " S S\\\4   \
\\4   5      r " S S\\   5      r " S S\R$                  \\4   5      r\R(                  \R*                  \\      \R*                  \\\R,                  4      4   rSR1                  5       rS\S'   SS jr\" \S5        \" \S5        g)zProvide :class:`OrderedBidict`.    )annotationsN)Set   )BidictKeysView)MutableBidict)OrderedBidictBase)KT)VTc                     ^  \ rS rSrSr\R                  (       a  \SS j5       r\SS j5       r	SU 4S jjr
SU 4S jjrSSS jjrSSS jjrSS	 jrSS
 jrSrU =r$ )OrderedBidict   z<Mutable bidict type that maintains items in insertion order.c                    g N selfs    R/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/bidict/_orderedbidict.pyinverseOrderedBidict.inverse"   s    47    c                    g r   r   r   s    r   invOrderedBidict.inv%   s    03r   c                   > [         TU ]  5         U R                  R                  5         U R                  =U R                  l        U R                  l        g)zRemove all items.N)superclear_node_by_korv_sntlnxtprv)r   	__class__s    r   r   OrderedBidict.clear(   s8      "*.**4

r   c                   > [         TU ]  U5      nU R                  U R                  (       a  UOU   nU R	                  U5        U$ r   )r   _popr   _bykey_dissoc_node)r   keyvalnoder!   s       r   r$   OrderedBidict._pop.   s<    gl3!!##>$
r   c                   U (       d  [        S5      e[        U R                  U(       a  SOS5      nU R                  R                  U   nU R
                  (       a  X0R                  U5      4$ U R                  R                  U5      U4$ )u   *b.popitem() → (k, v)*

If *last* is true,
remove and return the most recently added item as a (key, value) pair.
Otherwise, remove and return the least recently added item.

:raises KeyError: if *b* is empty.
zOrderedBidict is emptyr    r   )KeyErrorgetattrr   r   r   r%   r$   )r   lastr)   korvs       r   popitemOrderedBidict.popitem4   so     344tzzD5e<!!))$/;;4((||  &,,r   c                   U R                   (       a  UOU R                  U   nU R                  U   nUR                  UR                  l        UR                  UR                  l        U R
                  nU(       a'  UR                  nXdl        XTl        U=Ul        Ul        gUR                  nXTl        Xtl        U=Ul        Ul        g)z}Move the item with the given key to the end if *last* is true, else to the beginning.

:raises KeyError: if *key* is missing
N)r%   _fwdmr   r   r    r   )r   r'   r.   r/   r)   sntllastnode	firstnodes           r   move_to_endOrderedBidict.move_to_endE   s    
 kkstzz#!!$'xxxxzzxxHHH&**DHx|IH H'++DHy}r   c                    [        U 5      $ )z9A set-like object providing a view on the contained keys.)_OrderedBidictKeysViewr   s    r   keysOrderedBidict.keys^   s    %d++r   c                    [        U 5      $ )z:A set-like object providing a view on the contained items.)_OrderedBidictItemsViewr   s    r   itemsOrderedBidict.itemsb   s    &t,,r   r   )returnzOrderedBidict[VT, KT])rA   None)r'   r	   rA   r
   )T)r.   boolrA   ztuple[KT, VT])r'   r	   r.   rC   rA   rB   )rA   zt.KeysView[KT])rA   zt.ItemsView[KT, VT])__name__
__module____qualname____firstlineno____doc__tTYPE_CHECKINGpropertyr   r   r   r$   r0   r7   r;   r?   __static_attributes____classcell__)r!   s   @r   r   r      sL    F	7 
7	3 
35-",2,- -r   r   c                  *    \ rS rSr% S\S'   SS jrSrg)r:   l   zOrderedBidict[KT, t.Any]_mappingc                ,    [        U R                  5      $ r   )reversedrP   r   s    r   __reversed__#_OrderedBidictKeysView.__reversed__o   s    &&r   r   N)rA   zt.Iterator[KT]rD   rE   rF   rG   __annotations__rS   rL   r   r   r   r:   r:   l   s    &&'r   r:   c                  *    \ rS rSr% S\S'   SS jrSrg)r>   s   zOrderedBidict[KT, VT]rP   c              #  X   #    U R                   n[        U5       H  nX!U   4v   M     g 7fr   )rP   rR   )r   obr'   s      r   rS   $_OrderedBidictItemsView.__reversed__v   s(     ]]B<C#w,  s   (*r   N)rA   zt.Iterator[tuple[KT, VT]]rU   r   r   r   r>   r>   s   s    ##r   r>   zv__lt__ __le__ __gt__ __ge__ __eq__ __ne__ __sub__ __rsub__ __or__ __ror__ __xor__ __rxor__ __and__ __rand__ isdisjointzt.Iterable[str]_setmethodnamesc                X   ^ ^ SU U4S jjn[          H  n[        T X2" U5      5        M     g )Nc                V   >^  SU U4S jjnT Ul         TR                   ST  3Ul        U$ )Nc                  > U R                   R                  n[        U[        5      (       d  [	        [
        T5      " U /UQ76 $ [	        UT	5      " 5       n[	        UT5      n[        U5      S:w  dH  [        US   =oPR                  5      (       a)  [        UR                   R                  [        5      (       d  U" U6 $ UR                   R                  n[	        UT	5      " 5       nU" U5      $ )Nr   r   )rP   r3   
isinstancedictr-   r   lenr!   )
r   argsfwdmfwdm_dict_viewfwdm_dict_view_methodargarg_dictarg_dict_view
methodnameviewnames
           r   methodT_override_set_methods_to_use_backing_dict.<locals>.make_proxy_method.<locals>.method   s    ==&&DdD))sJ/<t<<$T846N$+NJ$G!D	Q!$q'>3NNCC!#,,"4"4d;;,d33 ||))H#Hh79M(77r   .)r   z?_OrderedBidictKeysView[KT] | _OrderedBidictItemsView[KT, t.Any]rc   t.AnyrA   ro   )rD   rF   )rj   rl   clsrk   s   ` r   make_proxy_methodD_override_set_methods_to_use_backing_dict.<locals>.make_proxy_method   s5    	8 	8* %!$!1!1 2!J<@r   )rj   strrA   ro   )r\   setattr)rp   rk   rq   names   ``  r   )_override_set_methods_to_use_backing_dictrv      s+     4  T,T23  r   r;   r?   )rp   z
_OView[KT]rk   rs   rA   rB   )rH   
__future__r   typingrI   collections.abcr   _baser   _bidictr   _orderedbaser   _typingr	   r
   r   r:   	ItemsViewr>   UnionTypeAny_OViewsplitr\   rV   rv   r   r   r   <module>r      s    & "   ! " +  G-%b"f-}RV/D G-^'^B/ 'akk"b&1  
.r23QVV<STVXYX]X]T]<^5__	`B%'  
4> **@& I )*A7 Kr   