
    Vh                        U d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d Zdedee   d	ed
efdZd
efdZd
efdZd
efdZdeded
efdZdededed
efdZdedededee   d
ef
dZeee eedd       eedd       eeddd       eed dd!       eed"d#d       eed$d#d!      d%	Zeeef   ed&<   y)'    N)partial)Callable)FAKE_FILENAME_PREFIXis_optional)	ParsedDefSourceContextc                 `    t         j                  j                  t        | j                  |      S N)ospathjoinr   __name__)clsmethod_names     J/home/dcms/DCMS/lib/python3.12/site-packages/torch/jit/_dataclass_impls.py_get_fake_filenamer      s    77<<,cllKHH    name
body_lines	signaturereturnc           	          dj                  d |D              }d| | d| }	 t        j                  |      }t        | |      }t        |t        ||dd	      ||d
      S # t        $ r"}t	        d| d| j
                   d      |d }~ww xY w)N
c              3   &   K   | ]	  }d |   yw)  N ).0bs     r   	<genexpr>zcompose_fn.<locals>.<genexpr>   s     2!r!X2s   zdef z:
z3TorchScript failed to synthesize dataclass method 'z' for class 'zJ'. Please file a bug report at <https://github.com/pytorch/pytorch/issues>r   )sourcefilenamefile_linenoleading_whitespace_len)ctxr    r!   r"   )	r   astparseSyntaxErrorRuntimeErrorr   r   r   r   )	r   r   r   r   bodydeclpy_astefake_filenames	            r   
compose_fnr.      s    992z22D$	{#dV,D4 'sD1M-QWX
     A$}UXUaUaTb cV V
 	s   A" "	B+BBc                 L   t        d t        j                  |       D              rt        d      t	        j
                  | j                        }g }g }|j                  j                         D ]y  \  }}|j                  }t        |t        j                        r=|j                  |       |j                  |j                  |j                               i|j                  |       { |j                  |      }t        j                  |       D cg c]8  }|j                  r*|j                   |vrd|j                    d|j                    : }}t#        | d      r&|j                  dd	j%                  |      z   d
z          t'        | d|xs dgt)        |            S c c}w )Nc              3   T   K   | ]   }|j                   t        j                  u " y wr
   )default_factorydataclassesMISSING)r   fields     r   r   z%synthesize__init__.<locals>.<genexpr>0   s)       	[%8%88s   &(zIDefault factory initializers are not supported in TorchScript dataclasses)
annotation)
parameterszself.z = __post_init__zself.__post_init__(, )__init__passr   )anyr2   fieldsNotImplementedErrorinspectr   r:   r6   itemsr5   
isinstanceInitVarappendreplacetypeinitr   hasattrr   r.   str)	r   r   	init_varsparamsr   paramannr4   r)   s	            r   synthesize__init__rN   -   s      '',  "W
 	
 !!#,,/I IF ++113 !ec;../T"MM%--388-<=MM% ! !!V!4I
 !'', ::%**I5 

|3uzzl+D  sO$)DIIi,@@3FGc:t'7x3y>RRs   =F!c                     t        | dd| j                   ddj                  t        j                  |       D cg c])  }|j
                  r|j                   d|j                   + c}      z   dz   gd      S c c}w )	N__repr__zreturn '(r8   z=self.z)'z(self) -> strr<   )r.   r   r   r2   r>   reprr   )r   r4   s     r   synthesize__repr__rS   Z   s    s||nA&ii "-!3!3C!8zz zzl&5 
	
 " s   .A:c                 "    t        | ddgd      S )N__hash__zUraise NotImplementedError('__hash__ is not supported for dataclasses in TorchScript')z(self) -> intr<   )r.   )r   s    r   synthesize__hash__rV   m   s%     d	

 "	 	r   conversec           	      ,    t        | |ddd| dg      S )NTFif val1 z val2: return False)allow_eqraise_on_noneinnersynthesize_comparison)r   r   rW   s      r   synthesize_equalityr_   {   s+     (#678 r   oprZ   c           
      6    t        | ||dd| dd| dg      S )NTrY   z val2: return Truez
elif val2 z val1: return False)r[   r\   r]   )r   r   r`   rZ   s       r   synthesize_inequalityrb      s:     rd,-/0
	 	r   r[   r\   c           	         g }t        j                  |       D ]  }|j                  s|j                  d|j                   d|j                   g       |j                  t        |j                        s|n+dg|D cg c]  }d|z   	 c}d|rd| j                   dnd        |j                  d	|        t        | ||d
| j                   d      S c c}w )Nzval1 = self.zval2 = other.z)if val1 is not None and val2 is not None:r   z&elif (val1 is None) != (val2 is None):z"  raise TypeError('Cannot compare z with None')z  return Falsezreturn z(self, other: z	) -> boolr<   )
r2   r>   compareextendr   r   rF   r   rD   r.   )r   r   rZ   r[   r\   r)   r4   lines           r   r^   r^      s    D##C( 
}}uzzl+

|,	
 	uzz*  < +00$$+0 9	 ! 5S\\N,O%	

0 	KK'($%T4^CLL>#K  1s   =C__eq__z!=)r   rW   __ne__z==__lt__<F)r   r`   rZ   __le__T__gt__>__ge__)	r:   rP   rU   rg   rh   ri   rk   rl   rn   DATACLASS_MAGIC_METHODS)r%   r2   r@   r   	functoolsr   typingr   torch._jit_internalr   r   torch._sourcesr   r   r   rI   listr.   rN   rS   rV   r_   boolrb   r^   ro   dict__annotations__r   r   r   <module>rx      sW      	   A 3I# 49   6)Sy )SZy &
y 
3 # ) 
S 
c 
T 
i 
"37@DS	F #"")4H)4H+(sUS+(sTR+(sUS+(sTR
0 c8m, 
r   