
    ?wg'                     X    d dl Zd dlZ G d d      Z G d dej                  e         Zy)    Nc                   4    e Zd ZU dZdZd ed<   d ed<   eed<   y)Linkz3Representation of one item in a doubly-linked list.)prevnextkey__weakref__r   r   r   N)__name__
__module____qualname____doc__	__slots____annotations__str     M/var/www/horilla/myenv/lib/python3.12/site-packages/uritemplate/orderedset.pyr   r      s    =6I
L
L	Hr   r   c                       e Zd ZdZddej
                  ej                  e      fdZde	fdZ
dedefdZdeddfd	Zdeddfd
Zdej                   eddf   fdZdej                   eddf   fdZddedefdZdefdZdefdZdedefdZy)
OrderedSetz9A set that remembers the order in which items were added.Niterablec                 `    t               x| _        }|x|_        |_        i | _        || |z  } y y N)r   _OrderedSet__rootr   r   _OrderedSet__map)selfr   roots      r   __init__zOrderedSet.__init__   s:    !V#d $$	DI24
HD  r   returnc                 ,    t        | j                        S r   )lenr   r   s    r   __len__zOrderedSet.__len__"   s    4::r   r   c                     || j                   v S r   )r   )r   r   s     r   __contains__zOrderedSet.__contains__%   s    djj  r   c                     || j                   vrit               x| j                   |<   }| j                  }|j                  }|||c|_        |_        |_        t        j                  |      x|_        |_        y y r   )r   r   r   r   r   r   weakrefproxy)r   r   linkr   lasts        r   addzOrderedSet.add(   sf    djj %)V+DJJsOd;;D99D-14*DIty$($+MM$$77DI	 !r   c                     || j                   v rR| j                   j                  |      }|j                  |j                  _        |j                  |j                  _        y y r   )r   popr   r   )r   r   r'   s      r   discardzOrderedSet.discard1   sE     $**::>>#&D!YYDIIN!YYDIIN r   c              #      K   | j                   }|j                  }||ur |j                   |j                  }||ury y wr   )r   r   r   r   r   currs      r   __iter__zOrderedSet.__iter__9   <     {{yy$((N99D $
   ;A A c              #      K   | j                   }|j                  }||ur |j                   |j                  }||ury y wr   )r   r   r   r.   s      r   __reversed__zOrderedSet.__reversed__A   r1   r2   r(   c                     | st        d      |rt        t        |             nt        t        |             }| j	                  |       |S )Nzset is empty)KeyErrorr   reversediterr,   )r   r(   r   s      r   r+   zOrderedSet.popI   s<    >**&*d8D>"T$Z0@S
r   c                     | s| j                   j                   dS | j                   j                   dt        |       dS )Nz()())	__class__r	   listr    s    r   __repr__zOrderedSet.__repr__P   s?    nn--.b11..))*!DJ>;;r   c                 "    | j                         S r   )r>   r    s    r   __str__zOrderedSet.__str__U   s    }}r   otherc                     t        |t              r0t        |       t        |      k(  xr t        |       t        |      k(  S t	        j
                  t        j                  t           |      }| j                  |       S r   )	
isinstancer   r   r=   tcastIterabler   
isdisjoint)r   rA   s     r   __eq__zOrderedSet.__eq__X   s[    eZ(t9E
*HtDzT%[/HHqzz#.??5)))r   r   )T)r	   r
   r   r   rD   OptionalrF   r   r   intr!   objectboolr#   r)   r,   	Generatorr0   r4   r+   r>   r@   rH   r   r   r   r   r      s    CAJJsO!<  ! !4 !8s 8t 8'3 '4 '!++c4o6 akk#tT/:   <# <
 *F *t *r   r   )typingrD   r%   r   
MutableSetr   r   r   r   r   <module>rP      s,      M*c" M*r   