
    Æe                      &    d dl mZ  G d de      Zy)    )
MutableSetc                   R    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
dd
Zd Zd Zy)
OrderedSetNc                 D    g x| _         }|d ||gz  }i | _        || |z  } y y N)endmap)selfiterabler   s      @/usr/lib/python3/dist-packages/rope/base/utils/datastructures.py__init__zOrderedSet.__init__   s;    3c3HD      c                 ,    t        | j                        S r   )lenr	   r
   s    r   __len__zOrderedSet.__len__   s    488}r   c                     || j                   v S r   )r	   )r
   keys     r   __contains__zOrderedSet.__contains__   s    dhhr   c                 |    || j                   vr.| j                  }|d   }|||gx|d<   x|d<   | j                   |<   y y )N      )r	   r   )r
   r   r   currs       r   addzOrderedSet.add   sK    dhh((Cq6D03T3/??DG?c!ftxx} r   c                 H    t        | D cg c]	  }||v s| c}      S c c}w r   )r   )r
   set_bitems      r   intersectionzOrderedSet.intersection   s!    DBDDEM4BCCBs   	c                 t    || j                   v r*| j                   j                  |      \  }}}||d<   ||d<   y y )Nr   r   )r	   pop)r
   r   prevnexts       r   discardzOrderedSet.discard   s<    $((?"hhll3/OCtDGDG r   c              #   Z   K   | j                   }|d   }||ur|d    |d   }||ury y w)Nr   r   r   r
   r   r   s      r   __iter__zOrderedSet.__iter__%   :     hh1v#oq'M7D #o   &++c              #   Z   K   | j                   }|d   }||ur|d    |d   }||ury y w)Nr   r   r%   r&   s      r   __reversed__zOrderedSet.__reversed__,   r(   r)   c                     | st        d      |r| j                  d   d   n| j                  d   d   }| j                  |       |S )Nzset is emptyr   r   r   )KeyErrorr   r#   )r
   lastr   s      r   r    zOrderedSet.pop3   sB    >** $dhhqk!n$((1+a.S
r   c                     | s| j                   j                   dS | j                   j                   dt        |       dS )Nz()())	__class____name__listr   s    r   __repr__zOrderedSet.__repr__:   s?    nn--.b11..))*!DJ>;;r   c                     t        |t              r0t        |       t        |      k(  xr t        |       t        |      k(  S t	        |       t	        |      k(  S r   )
isinstancer   r   r4   set)r
   others     r   __eq__zOrderedSet.__eq__?   sD    eZ(t9E
*HtDzT%[/HH4yCJ&&r   r   )T)r3   
__module____qualname__r   r   r   r   r   r#   r'   r+   r    r5   r:    r   r   r   r      s;    @D<
'r   r   N)collections.abcr   r   r=   r   r   <module>r?      s    ';' ;'r   