
    Vh                     ~    d dl Z d dlmZ d dlmZ  G d de      Ze j                  dee   fd       Z	 G d d	      Z
y)
    N)Hashable)fieldsc                   >    e Zd ZU dZeed<   ed        ZdefdZ	d Z
y)	_UnionTag)_clsr   c                 F    t        |       }t        |d      rJ ||_        |S )Nr   )r   hasattrr   )tclstags      I/home/dcms/DCMS/lib/python3.12/site-packages/torch/_export/serde/union.pycreatez_UnionTag.create   s'    l3'''
    returnc                     t        |t              sJ t        |      }|t        | j                        v s,J | d| j                   dt        | j                                t        |       |k(  S )Nz is not a valid tag for z. Available tags: )
isinstancestr_get_field_namesr   )selfcmpothers      r   __eq__z_UnionTag.__eq__   s|    #s###C(II
 
 	hW,TYYK7IJZ[_[d[dJeIfg	h 
 4yE!!r   c                 *    t        t        |             S N)hashr   r   s    r   __hash__z_UnionTag.__hash__   s    CIr   N)__name__
__module____qualname__	__slots__r   __annotations__staticmethodr   boolr   r    r   r   r   r      s/    I
N "T "r   r   r   c                 R    t        |       D ch c]  }|j                   c}S c c}w r   )r   name)r   fs     r   r   r      s    "3K(qAFF(((s   $c                   r     e Zd ZU eed<   ed        Zd Zede	fd       Z
ed        Z fdZd Zd	 Z xZS )
_Union_typec           
         t        |      dk(  sJ  | di i t        |       D ci c]  }|j                  d  c}|}t        j	                  t        t        |j                                     |       |_        |S c c}w )N   r%   )	lenr   r'   r   r   nextiterkeysr+   )r   kwargsr(   objs       r   r   z_Union.create&   sq    6{aFEfSk::EfEF$$T$v{{}*=%>D	
 ;s   A<c                 >    t        d t        |       D              rJ y )Nc              3   8   K   | ]  }|j                   d v   yw))typer+   r   valueN)r'   ).0r(   s     r   	<genexpr>z'_Union.__post_init__.<locals>.<genexpr>.   s     \!qvv!EE\s   )anyr   r   s    r   __post_init__z_Union.__post_init__-   s    \vVZ|\\\\\r   r   c                     	 | j                   S # t        $ r(}t        dt        |       j                   d      |d }~ww xY w)NzPlease use z&.create to instantiate the union type.)r+   AttributeErrorRuntimeErrorr6   r   )r   es     r   r6   z_Union.type0   sI    	:: 	d4j1122XY	s    	?#:?c                 .    t        | | j                        S r   )getattrr6   r   s    r   r7   z_Union.value9   s    tTYY''r   c                     t         |   |      }|4|t        t        |             v r|| j                  k7  rt	        d| d      |S )NzField z is not set.)super__getattribute__r   r6   r=   )r   r'   attr	__class__s      r   rD   z_Union.__getattribute__=   sL    w'-<D$4T$Z$@@TTYYEV 6$|!<==r   c                 "    | j                         S r   )__repr__r   s    r   __str__z_Union.__str__C   s    }}r   c                 z    t        |       j                   d| j                    dt        | | j                          dS )N(=))r6   r   rA   r   s    r   rH   z_Union.__repr__F   s6    t*%%&a		{!GD$))4L3MQOOr   )r   r   r    r   r"   classmethodr   r;   propertyr   r6   r7   rD   rI   rH   __classcell__)rF   s   @r   r*   r*   #   s`     ] c   ( (Pr   r*   )	functoolscollections.abcr   dataclassesr   r   r   cachesetr   r*   r%   r   r   <module>rV      sI     $  . )SX ) )$P $Pr   