
    "                     |    d dl mZ 	 d dlmZ  G d de      Z G d dej                        Z
y# e$ r d dlZY ,w xY w)    )proxyNc                       e Zd ZdZy)Link)prevnextkey__weakref__N)__name__
__module____qualname__	__slots__     1platform/bq/third_party/uritemplate/orderedset.pyr   r      s    4Ir   r   c                   V    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
dd
Zd Zd Zd Zy)
OrderedSetz/Set the remembers the order elements were addedNc                 `    t               x| _        }|x|_        |_        i | _        || |z  } y y N)r   _OrderedSet__rootr   r   _OrderedSet__map)selfiterableroots      r   __init__zOrderedSet.__init__   s:    !V#d $$	DI
HD  r   c                 ,    t        | j                        S r   )lenr   r   s    r   __len__zOrderedSet.__len__"   s    4::r   c                     || j                   v S r   )r   )r   r   s     r   __contains__zOrderedSet.__contains__%   s    djj  r   c                     || j                   vr_t               x| j                   |<   }| j                  }|j                  }|||c|_        |_        |_        t        |      x|_        |_        y y r   )r   r   r   r   r   r   r   )r   r   linkr   lasts        r   addzOrderedSet.add(   sa    djj %)V+DJJsOd;;D99D-14*DIty$($)$K/DI	 !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   r,   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   s1    !^^4466>>22DJ??r   c                 "    | j                         S r   )r9   r   s    r   __str__zOrderedSet.__str__U   s    }}r   c                     t        |t              r0t        |       t        |      k(  xr t        |       t        |      k(  S | j	                  |       S r   )
isinstancer   r   r8   
isdisjoint)r   others     r   __eq__zOrderedSet.__eq__X   sC    eZ(t9E
*HtDzT%[/HH??5)))r   r   )T)r
   r   r   __doc__r   r   r    r$   r'   r+   r/   r&   r9   r;   r@   r   r   r   r   r      s=    5!0'@
*r   r   )weakrefr   collections.abcabccollections_abcImportErrorcollectionsobjectr   
MutableSetr   r   r   r   <module>rJ      sF    *-
56 5K*++ K*  *)*s   / 	;;