o
    {j6h'  ã                   @   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   úe/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/uritemplate/orderedset.pyr      s   
 r   c                   @   sæ   e Zd ZdZddejeje  fdd„Zde	fdd„Z
d	edefd
d„Zd	eddfdd„Zd	eddfdd„Zdejeddf fdd„Zdejeddf fdd„Zd dedefdd„Zdefdd„Zdefdd„Zdedefdd„ZdS )!Ú
OrderedSetz9A set that remembers the order in which items were added.NÚiterablec                 C   s6   t ƒ  | _}| |_|_i | _|d ur| |O } d S 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__"   ó   
zOrderedSet.__len__r   c                 C   s
   || j v S r   )r   )r   r   r   r   r   Ú__contains__%   r   zOrderedSet.__contains__c                 C   sV   || j vr)tƒ  | j |< }| j}|j}||||_|_|_t |¡ |_|_d S d S r   )r   r   r   r   r   r   ÚweakrefÚproxy)r   r   Úlinkr   Úlastr   r   r   Úadd(   s   
ûzOrderedSet.addc                 C   s2   || j v r| j  |¡}|j|j_|j|j_d S d S r   )r   Úpopr   r   )r   r   r    r   r   r   Údiscard1   s
   

ýzOrderedSet.discardc                 c   ó4    | j }|j}||ur|jV  |j}||usd S d S r   )r   r   r   ©r   r   Úcurrr   r   r   Ú__iter__9   ó   €þzOrderedSet.__iter__c                 c   r%   r   )r   r   r   r&   r   r   r   Ú__reversed__A   r)   zOrderedSet.__reversed__Tr!   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   )r2   r   r   r   r   Ú__str__U   s   zOrderedSet.__str__Úotherc                 C   sH   t |tƒrt| ƒt|ƒkot| ƒt|ƒkS t tjt |¡}|  |¡ S r   )	Ú
isinstancer   r   r1   ÚtÚcastÚIterabler   Ú
isdisjoint)r   r4   r   r   r   Ú__eq__X   s   
 zOrderedSet.__eq__r   )T)r   r   r	   r
   r6   ÚOptionalr8   r   r   Úintr   ÚobjectÚboolr   r"   r$   Ú	Generatorr(   r*   r#   r2   r3   r:   r   r   r   r   r      s    	r   )Útypingr6   r   r   Ú
MutableSetr   r   r   r   r   r   Ú<module>   s   	