o
    Ýîiâ	  ã                   @   sÀ   d dl mZ eedƒƒ\ZZZ	 G dd„ deƒZedkr^e	edƒƒ eƒ Z
e
 d¡ e	e
ƒ e
 d¡ e	e
ƒ e	edƒƒ ed	ƒZe	eƒ e	ejƒ eƒ Ze	ejƒ edgƒZe	ejƒ d
S d
S )é    )Ú
MutableSeté   c                   @   sx   e Zd 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„ Zddd„Zdd„ Zdd„ Zedd„ ƒZdS )ÚosetzAn ordered set implementation.Nc                 C   s6   g  | _ }|d ||g7 }i | _|d ur| |O } d S d S ©N)ÚendÚmap)ÚselfÚiterabler   © r
   úO/var/www/html/LicenciasMIG/venv/lib/python3.10/site-packages/spyne/util/oset.pyÚ__init__   s   
ÿzoset.__init__c                 C   s
   t | jƒS r   )Úlenr   ©r   r
   r
   r   Ú__len__   ó   
zoset.__len__c                 C   s
   || j v S r   )r   )r   Úkeyr
   r
   r   Ú__contains__   r   zoset.__contains__c                 C   s@   || j vr| j}|t }|||g |t<  |t< | j |< d S d S r   ©r   r   ÚPREVÚNEXT)r   r   r   Úcurrr
   r
   r   Úadd   s
   
$ýzoset.addc                 C   sF   |D ]}|| j vr | j}|t }|||g |t<  |t< | j |< qd S r   r   )r   Úkeysr   r   r   r
   r
   r   Úextend    s   
 €üzoset.extendc                 C   s4   || j v r| j  |¡\}}}||t< ||t< d S d S r   )r   Úpopr   r   )r   r   ÚprevÚnextr
   r
   r   Údiscard'   s
   
ýzoset.discardc                 c   ó:    | j }|t }||ur|t V  |t }||usd S d S r   )r   r   ÚKEY©r   r   r   r
   r
   r   Ú__iter__-   ó   €
þzoset.__iter__c                 c   r   r   )r   r   r   r    r
   r
   r   Ú__reversed__4   r"   zoset.__reversed__Tc                 C   s6   | st dƒ‚|rtt| ƒƒntt| ƒƒ}|  |¡ |S )Nzset is empty)ÚKeyErrorr   ÚreversedÚiterr   )r   Úlastr   r
   r
   r   r   ;   s
   
zoset.popc                 C   s&   | s	d| j jf S d| j jt| ƒf S )Nz%s()z%s(%r))Ú	__class__Ú__name__Úlistr   r
   r
   r   Ú__repr__B   s   zoset.__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__G   s   
 zoset.__eq__c                 C   s   | j d d S )Né   r   )r   r   r
   r
   r   ÚbackL   s   z	oset.backr   )T)r)   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r!   r#   r   r+   r/   Úpropertyr1   r
   r
   r
   r   r   
   s    

r   Ú__main__Úabracadabrar0   Ú
simsalabimÚabcdeN)Ú$spyne.util.six.moves.collections_abcr   r*   Úranger   r   r   r   r)   ÚprintÚstuffr   Úor   r1   r
   r
   r
   r   Ú<module>   s(   F




ð