
    sg                         d dl Z d dlmZ d dlmZmZ  G d de      Z e j                  d      dee   fd       Z	 G d	 d
      Z
y)    N)fields)HashableSetc                   :    e Zd ZU eed<   ed        ZdefdZd Z	y)	_UnionTag_clsc                 F    t        |       }t        |d      rJ ||_        |S )Nr   )r   hasattrr   )tclstags      L/var/www/html/venv/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__r   __annotations__staticmethodr   boolr   r    r   r   r   r      s*    
N "T "r   r   )maxsizer   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RuntimeErrorr7   r   )r   es     r   r7   z_Union.type/   sI    	:: 	d4j1122XY	s    	?#:?c                 .    t        | | j                        S r   )getattrr7   r   s    r   r8   z_Union.value8   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   r7   r>   )r   r(   attr	__class__s      r   rE   z_Union.__getattribute__<   sL    w'-<D$4T$Z$@@TTYYEV 6$|!<==r   c                 "    | j                         S r   )__repr__r   s    r   __str__z_Union.__str__B   s    }}r   c                 z    t        |       j                   d| j                    dt        | | j                          dS )N(=))r7   r   rB   r   s    r   rI   z_Union.__repr__E   s6    t*%%&a		{!GD$))4L3MQOOr   )r   r    r!   r   r"   classmethodr   r<   propertyr   r7   r8   rE   rJ   rI   __classcell__)rG   s   @r   r+   r+   "   s`     ] c   ( (Pr   r+   )	functoolsdataclassesr   typingr   r   r   r   	lru_cacher   r+   r%   r   r   <module>rV      sR        , T")SX ) #)$P $Pr   