
    9j                         d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	  edd      Z
 G d	 d
e      Ze j                  dee   fd       Z e	d      dee
   dee
   fd       Z G d d      Zy)    N)Hashable)	dataclassfields)TypeVar)dataclass_transformT_Union)boundc                   >    e Zd ZU dZeed<   ed        ZdefdZ	d Z
y)	_UnionTag)_clsr   c                 X    t        |       }t        |d      rt        d      ||_        |S )Nr   ztag already has _cls attribute)r   hasattrAssertionErrorr   )tclstags      Y/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_export/serde/union.pycreatez_UnionTag.create   s-    l3 !ABB
    returnc           	         t        |t              st        dt        |             t        |      }|t	        | j
                        vr0t        | d| j
                   dt	        | j
                               t        |       |k(  S )Nzexpected str, got z is not a valid tag for z. Available tags: )
isinstancestrr   type_get_field_namesr   )selfcmpothers      r   __eq__z_UnionTag.__eq__   s    #s# #5d3i[!ABBC(33 '1$))<NO_`d`i`iOjNkl  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   $F)
eq_defaultr   c                 r    t        | t              st        |  dt         d       t        dd      |       S )Nz must inherit from .F)repreq)
issubclassr	   r   r   )r   s    r   _union_dataclassr7   1   s9    c6"u$7xqABB*9%E*3//r   c                        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edefd	Zd
 Zd Z xZS )r	   _typec           
      ,   t        |      dk7  rt        dt        |              | di i t        |       D ci c]  }|j                  d  c}|}t        j                  t        t        |j                                     |       |_	        |S c c}w )N   zexpected exactly 1 kwarg, got r-   )
lenr   r   r/   r   r   nextiterkeysr9   )r   kwargsr0   objs       r   r   z_Union.create;   s    v;! #A#f+!OPPFEfSk::EfEF$$T$v{{}*=%>D	
 ;s   Bc                 P    t        d t        |       D              rt        d      y )Nc              3   8   K   | ]  }|j                   d v   yw))r   r9   r   valueN)r/   ).0r0   s     r   	<genexpr>z'_Union.__post_init__.<locals>.<genexpr>D   s"      
 FF::
s   z;field names 'type', '_type', 'create', 'value' are reserved)anyr   r   r$   s    r   __post_init__z_Union.__post_init__C   s2     
D\
 
 !M 	
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.)r9   AttributeErrorRuntimeErrorr   r&   )r   es     r   r   z_Union.typeL   sI    	:: 	d4j1122XY	s    	?#:?c                 .    t        | | j                        S r"   )getattrr   r$   s    r   rD   z_Union.valueU   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   r   rJ   )r   r/   attr	__class__s      r   rQ   z_Union.__getattribute__Y   sL    w'-<D$4T$Z$@@TTYYEV 6$|!<==r   r   c                     t        |t              sy| j                  |j                  k(  xr | j                  |j                  k(  S )NF)r   r	   r   rD   )r   r   s     r   r    z_Union.__eq___   s4    %(yyEJJ&D4::+DDr   c                 "    | j                         S r"   )__repr__r$   s    r   __str__z_Union.__str__d   s    }}r   c                 z    t        |       j                   d| j                    dt        | | j                          dS )N(=))r   r&   rN   r$   s    r   rV   z_Union.__repr__g   s6    t*%%&a		{!GD$))4L3MQOOr   )r&   r'   r(   r   r*   classmethodr   rH   propertyr   r   rD   rQ   objectr,   r    rW   rV   __classcell__)rS   s   @r   r	   r	   8   su      c   ( (EF Et E
Pr   )	functoolscollections.abcr   dataclassesr   r   typingr   typing_extensionsr   r   r   r   cachesetr   r   r7   r	   r-   r   r   <module>rg      s     $ )  1 Cx  4 )SX ) ) &0$q' 0d1g 0 '00P 0Pr   