a
    ͝Gd'                     @   s8   d dl Zd dlZG dd dZG dd deje ZdS )    Nc                   @   s.   e Zd ZU dZdZd ed< d ed< eed< dS )Linkz3Representation of one item in a doubly-linked list.)prevnextkey__weakref__r   r   r   N)__name__
__module____qualname____doc__	__slots____annotations__str r   r   R/var/www/html/django/DPS/env/lib/python3.9/site-packages/uritemplate/orderedset.pyr      s
   
r   c                   @   s   e Zd ZdZdejeje  dddZe	dddZ
eed	d
dZedd	ddZedd	ddZejeddf dddZejeddf dddZd eedddZedddZedddZeedddZdS )!
OrderedSetz9A set that remembers the order in which items were added.N)iterablec                 C   s2   t   | _}| |_|_i | _|d ur.| |O } d S N)r   _OrderedSet__rootr   r   _OrderedSet__map)selfr   rootr   r   r   __init__   s
    zOrderedSet.__init__)returnc                 C   s
   t | jS r   )lenr   r   r   r   r   __len__"   s    zOrderedSet.__len__)r   r   c                 C   s
   || j v S r   )r   )r   r   r   r   r   __contains__%   s    zOrderedSet.__contains__c                 C   sR   || j vrNt  | j |< }| j}|j}|||  |_|_|_t| |_|_d S r   )r   r   r   r   r   r   weakrefproxy)r   r   linkr   lastr   r   r   add(   s    
zOrderedSet.addc                 C   s.   || j v r*| j |}|j|j_|j|j_d S r   )r   popr   r   )r   r   r   r   r   r   discard1   s    

zOrderedSet.discardc                 c   s(   | j }|j}||ur$|jV  |j}qd S r   )r   r   r   r   r   currr   r   r   __iter__9   s
    zOrderedSet.__iter__c                 c   s(   | j }|j}||ur$|jV  |j}qd S r   )r   r   r   r$   r   r   r   __reversed__A   s
    zOrderedSet.__reversed__T)r    r   c                 C   s6   | st d|rtt| n
tt| }| | |S )Nzset is empty)KeyErrorr   reversediterr#   )r   r    r   r   r   r   r"   I   s
    
zOrderedSet.popc                 C   s*   | s| j j dS | j j dt| dS )Nz()())	__class__r   listr   r   r   r   __repr__P   s    zOrderedSet.__repr__c                 C   s   |   S r   )r/   r   r   r   r   __str__U   s    zOrderedSet.__str__)otherr   c                 C   sH   t |tr*t| t|ko(t| t|kS ttjt |}| | S r   )	
isinstancer   r   r.   tcastIterabler   
isdisjoint)r   r1   r   r   r   __eq__X   s    
 zOrderedSet.__eq__)N)T)r   r   r	   r
   r3   Optionalr5   r   r   intr   objectboolr   r!   r#   	Generatorr&   r'   r"   r/   r0   r7   r   r   r   r   r      s   	r   )typingr3   r   r   
MutableSetr   r   r   r   r   r   <module>   s   	