
    Vh                        d dl mZ d dlmZmZmZmZmZ d dl	m
Z
mZmZmZ  ed      Z edd      ZdgZ G d	 dee   ee         Zy
)    )annotations)IterableIterator
MutableSet
ReversibleSet)AnycastOptionalTypeVarTT_coT)	covariant
OrderedSetc                  V    e Zd ZdZdZd$d%dZed&d       Zd'dZd(dZ	d)dZ
d(dZd*d	Zd*d
Zd+dZed,d       Zd-dZd.dZd/dZd0dZd0dZd/dZd0dZd1dZd1dZd2dZd3dZd/dZd4 fdZd2 fdZd5 fdZd5 fdZ d4 fdZ!d4 fdZ"d4 fdZ#d6d Z$d7d!Z%d8d"Z&d9d#Z' xZ(S ):r   z8
    Insertion ordered set, similar to OrderedDict.
    _dictc                N    |t         j                  |d       | _        y i | _        y Ndictfromkeysr   )selfiterables     H/home/dcms/DCMS/lib/python3.12/site-packages/torch/utils/_ordered_set.py__init__zOrderedSet.__init__   s     6>6JT]]8T2
PR
    c                (    t               }| |_        |S r   )r   r   )dict_inpss     r   
_from_dictzOrderedSet._from_dict   s    %<r   c                    || j                   v S r   r   r   elems     r   __contains__zOrderedSet.__contains__&   s    tzz!!r   c                ,    t        | j                        S r   )iterr   r   s    r   __iter__zOrderedSet.__iter__)   s    DJJr   c                ,    t        | j                        S r   )lenr   r(   s    r   __len__zOrderedSet.__len__,   s    4::r   c                ,    t        | j                        S r   )reversedr   r(   s    r   __reversed__zOrderedSet.__reversed__/   s    

##r   c                "    d | j                   |<   y r   r   r#   s     r   addzOrderedSet.add2   s    

4r   c                <    | j                   j                  |d        y r   )r   popr#   s     r   discardzOrderedSet.discard5   s    

tT"r   c                8    | j                   j                          y r   )r   clearr(   s    r   r6   zOrderedSet.clear8   s    

r   c                V    t        |t              st        |t              r | |      S |S )z
        Wrap non-Set Iterables in OrderedSets

        Some of the magic methods are more strict on input types than
        the public apis, so we need to wrap inputs in sets.
        )
isinstanceAbstractSetr   )clsothers     r   _wrap_iter_in_setzOrderedSet._wrap_iter_in_set>   s&     %-*UH2Mu:Lr   c                V    | st        d      | j                  j                         d   S )Nzpop from an empty setr   )KeyErrorr   popitemr(   s    r   r3   zOrderedSet.popL   s)    233zz!!#A&&r   c                \    t         j                  | j                  j                               S r   )r   r!   r   copyr(   s    r   rA   zOrderedSet.copyQ   s    $$TZZ__%677r   c                D    | j                         } |j                  |  |S r   )rA   difference_update)r   othersress      r   
differencezOrderedSet.differenceT   s"    iikv&
r   c                    |D ]  }| |z  } 	 y r    r   rD   r;   s      r   rC   zOrderedSet.difference_updateY        	EEMD	r   c                    |D ]  }| |z  } 	 y r   rH   rI   s      r   updatezOrderedSet.update]   rJ   r   c                H    | j                         }|D ]  }|| us||z  } |S r   rA   r   rD   rE   r;   s       r   intersectionzOrderedSet.intersectiona   s4    iik 	ED u	 
r   c                    |D ]  }| |z  } 	 y r   rH   rI   s      r   intersection_updatezOrderedSet.intersection_updateh   rJ   r   c                *    | | j                  |      k  S r   r<   r   r;   s     r   issubsetzOrderedSet.issubsetl       t--e444r   c                *    | | j                  |      k\  S r   rT   rU   s     r   
issupersetzOrderedSet.issuperseto   rW   r   c                    | |z  S r   rH   rU   s     r   symmetric_differencezOrderedSet.symmetric_differencer   s    e|r   c                    | |z  } y r   rH   rU   s     r   symmetric_difference_updatez&OrderedSet.symmetric_difference_updateu   s    r   c                H    | j                         }|D ]  }|| u r||z  } |S r   rN   rO   s       r   unionzOrderedSet.unionx   s6    iik 	E}5LC	 
r   c                    t        |t              r1t        |       dz  t        |      kD  r| j                         }||z  }|S t	        t        t
           t        |   |            S )N   )r8   r   r+   rA   r
   r   super__sub__)r   r;   out	__class__s      r   rc   zOrderedSet.__sub__   sS    eZ(c$i!ms5z-I))+C5LCJJqM57?5#9::r   c                    t        |t              r'| j                  j                  |j                         | S t        |   |      S r   )r8   r   r   rL   rb   __ior__r   r;   re   s     r   rg   zOrderedSet.__ior__   s7    eZ(JJekk*Kwu%%r   c                t    t        |t              r| j                  |j                  k(  S t        |   |      S r   )r8   r   r   rb   __eq__rh   s     r   rj   zOrderedSet.__eq__   /    eZ(::,,w~e$$r   c                t    t        |t              r| j                  |j                  k7  S t        |   |      S r   )r8   r   r   rb   __ne__rh   s     r   rm   zOrderedSet.__ne__   rk   r   c                L    t        t        t           t        |   |            S r   )r
   r   r   rb   __or__rh   s     r   ro   zOrderedSet.__or__   s    JqM57>%#899r   c                    t        |t              rt        |       t        |      k  r|| z  S t        t        t           t
        |   |            S r   )r8   r   r+   r
   r   rb   __and__rh   s     r   rq   zOrderedSet.__and__   s@    eZ(SYU-C4<JqM57?5#9::r   c                L    t        t        t           t        |   |            S r   )r
   r   r   rb   __xor__rh   s     r   rs   zOrderedSet.__xor__   s    JqM57?5#9::r   c                L    | j                   j                   dt        |        dS )N())re   __name__listr(   s    r   __repr__zOrderedSet.__repr__   s$    ..))*!DJ<q99r   c                H    t        | j                  j                               S r   )rx   r   keysr(   s    r   __getstate__zOrderedSet.__getstate__   s    DJJOO%&&r   c                :    t         j                  |d       | _        y r   r   )r   states     r   __setstate__zOrderedSet.__setstate__   s    ]]5$/
r   c                &    t         t        |       ffS r   )r   rx   r(   s    r   
__reduce__zOrderedSet.__reduce__   s    T$ZM**r   r   )r   zOptional[Iterable[T]])r   zdict[T, None]returnOrderedSet[T])r$   objectr   bool)r   zIterator[T])r   int)r$   r   r   None)r   r   )r;   r	   r   r	   )r   r   )r   r   )rD   Iterable[T]r   r   )rD   r   r   r   )r;   r   r   r   )r;   r   r   r   )r;   r   r   r   )r;   zAbstractSet[T_co]r   r   )r;   r   r   r   )r   str)r   list[T])r~   r   r   r   )r   z*tuple[type[OrderedSet[T]], tuple[list[T]]]))rw   
__module____qualname____doc__	__slots__r   staticmethodr!   r%   r)   r,   r/   r1   r4   r6   classmethodr<   r3   rA   rF   rC   rL   rP   rR   rV   rY   r[   r]   r_   rc   rg   rj   rm   ro   rq   rs   ry   r|   r   r   __classcell__)re   s   @r   r   r      s     IS  " $ #  '
8
55;&%
%
:;;:'0+r   N)
__future__r   collections.abcr   r   r   r   r   r9   typingr	   r
   r   r   r   r   __all__r   rH   r   r   <module>r      sP    "  0 / CLv&.]+A
1 ]+r   