
    +h'                     b    d dl Zd dlZ G d d          Z G d dej        e                   ZdS )    Nc                   6    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     Z/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/uritemplate/orderedset.pyr   r      s6         ==6I
LLL
LLL	HHHHHr   r   c                      e Zd ZdZddej        ej        e                  fdZde	fdZ
dedefdZdeddfd	Zdeddfd
Zdej        eddf         fdZdej        eddf         fdZddedefdZdefdZdefdZdedefdZdS )
OrderedSetz9A set that remembers the order in which items were added.Niterablec                 l    t                      x| _        }|x|_        |_        i | _        || |z  } d S d S N)r   _OrderedSet__rootr   r   _OrderedSet__map)selfr   roots      r   __init__zOrderedSet.__init__   sC    !VV#d $$	DI24
HDDD  r   returnc                 *    t          | j                  S r   )lenr   r   s    r   __len__zOrderedSet.__len__"   s    4:r   r   c                     || j         v S r   )r   )r   r   s     r   __contains__zOrderedSet.__contains__%   s    dj  r   c                     || j         vr^t                      x| j         |<   }| j        }|j        }|||c|_        |_        |_        t          j        |          x|_        |_        d S d S r   )r   r   r   r   r   r   weakrefproxy)r   r   linkr   lasts        r   addzOrderedSet.add(   sk    dj  %)VV+DJsOd;D9D-14*DIty$($+M$$7$77DI			 ! r   c                     || j         v r>| j                             |          }|j        |j        _        |j        |j        _        d S d S r   )r   popr   r   )r   r   r'   s      r   discardzOrderedSet.discard1   sF     $*:>>#&&D!YDIN!YDINNN r   c              #   Z   K   | j         }|j        }||ur|j        V  |j        }||ud S d S r   )r   r   r   r   r   currs      r   __iter__zOrderedSet.__iter__9   J      {y$(NNN9D $r   c              #   Z   K   | j         }|j        }||ur|j        V  |j        }||ud S d S r   )r   r   r   r.   s      r   __reversed__zOrderedSet.__reversed__A   r1   r   Tr(   c                     | st          d          |rt          t          |                     nt          t          |                     }|                     |           |S )Nzset is empty)KeyErrorr   reversediterr,   )r   r(   r   s      r   r+   zOrderedSet.popI   sZ     	+>***&*@d8D>>"""T$ZZ0@0@S
r   c                 b    | s| j         j         dS | j         j         dt          |           dS )Nz()())	__class__r	   listr    s    r   __repr__zOrderedSet.__repr__P   s@     	2n-1111.);;DJJ;;;;r   c                 *    |                                  S r   )r=   r    s    r   __str__zOrderedSet.__str__U   s    }}r   otherc                 ,   t          |t                    r@t          |           t          |          k    ot          |           t          |          k    S t	          j        t          j        t                   |          }|                     |           S r   )	
isinstancer   r   r<   tcastIterabler   
isdisjoint)r   r@   s     r   __eq__zOrderedSet.__eq__X   sn    eZ(( 	It99E

*HtDzzT%[[/HHqz#..??5))))r   r   )T)r	   r
   r   r   rC   OptionalrE   r   r   intr!   objectboolr#   r)   r,   	Generatorr0   r3   r+   r=   r?   rG   r   r   r   r   r      s       CC AJsO!<        ! !4 ! ! ! !8s 8t 8 8 8 8'3 '4 ' ' ' '!+c4o6    ak#tT/:          <# < < < <
    *F *t * * * * * *r   r   )typingrC   r%   r   
MutableSetr   r   r   r   r   <module>rO      s               M* M* M* M* M*c" M* M* M* M* M*r   