U
    i7gj  ใ                   @   s\   d dl mZ G dd deZedkrXedZedZeeeB  eee@  eee  dS )้    )ฺ
MutableSetc                   @   s`   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dddZ
dd Zdd ZdS )ฺ
OrderedSetNc                 C   s2   g  | _ }|d ||g7 }i | _|d k	r.| |O } d S ฉN)ฺendฺmap)ฺselfฺiterabler   ฉ r	   ๚:/tmp/pip-unpacked-wheel-o_a6af_p/marshmallow/orderedset.pyฺ__init__   s
    
zOrderedSet.__init__c                 C   s
   t | jS r   )ฺlenr   ฉr   r	   r	   r
   ฺ__len__"   s    zOrderedSet.__len__c                 C   s
   || j kS r   )r   )r   ฺkeyr	   r	   r
   ฺ__contains__%   s    zOrderedSet.__contains__c                 C   s<   || j kr8| j}|d }|||g |d<  |d< | j |< d S )N้   ้   )r   r   )r   r   r   ฺcurrr	   r	   r
   ฺadd(   s    
zOrderedSet.addc                 C   s0   || j kr,| j  |ก\}}}||d< ||d< d S )Nr   r   )r   ฺpop)r   r   ฺprevฺnextr	   r	   r
   ฺdiscard.   s    
zOrderedSet.discardc                 c   s.   | j }|d }||k	r*|d V  |d }qd S )Nr   r   ฉr   ฉr   r   r   r	   r	   r
   ฺ__iter__4   s
    
zOrderedSet.__iter__c                 c   s.   | j }|d }||k	r*|d V  |d }qd S )Nr   r   r   r   r	   r	   r
   ฺ__reversed__;   s
    
zOrderedSet.__reversed__Tc                 C   s:   | st d|r| jd d n| jd d }|  |ก |S )Nzset is emptyr   r   r   )ฺKeyErrorr   r   )r   ฺlastr   r	   r	   r
   r   B   s
     
zOrderedSet.popc                 C   s*   | s| j j dS | j j dt| dS )Nz()๚(๚))ฺ	__class__ฺ__name__ฺlistr   r	   r	   r
   ฺ__repr__I   s    zOrderedSet.__repr__c                 C   s:   t |tr*t| t|ko(t| t|kS t| t|kS r   )ฺ
isinstancer   r   r#   ฺset)r   ฺotherr	   r	   r
   ฺ__eq__N   s    
 zOrderedSet.__eq__)N)T)r"   ฺ
__module__ฺ__qualname__r   r   r   r   r   r   r   r   r$   r(   r	   r	   r	   r
   r      s   

r   ฺ__main__Z
abracadabaZ
simsalabimN)ฺcollections.abcr   r   r"   ฺsฺtฺprintr	   r	   r	   r
   ฺ<module>   s   :