
    ֧gE                     L   d dl Z d dlZd dlZd dlZ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Zd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 ddl9m:Z: ej;        j<        =                                rd d	lm>Z> d d
l"m?Z?m@Z@ d dlAmBZB  G d d          ZC G d d          ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNde
ejO                 fdZPd ZQd ZRd!dZSd!dZTg d ZUdS )"    N)dedent)Type)_GeneratorTypeAnyType	AwaitTypeBoolTypeComplexTypeDeviceObjTypeDictTypeEnumType	FloatType
FutureTypeInterfaceTypeIntTypeListTypeNoneType
NumberTypeOptionalTypeStreamObjType
StringType
TensorType	TupleType	UnionType)_Await_qualified_nameAnyBroadcastingList1BroadcastingList2BroadcastingList3DictFutureis_awaitis_dict	is_futureis_ignored_fnis_listis_optionalis_tupleis_unionListOptionalTupleUnion)get_source_lines_and_file   )_get_script_class)RRefType)is_rrefRRef)OpOverloadPacketc                       e Zd Zd Zd ZdS )Modulec                 "    || _         || _        d S N)namemembers)selfr9   r:   s      Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/jit/annotations.py__init__zModule.__init__H   s    	    c                 p    	 | j         |         S # t          $ r t          d| j         d|           d w xY w)NzModule z has no member called )r:   KeyErrorRuntimeErrorr9   r;   r9   s     r<   __getattr__zModule.__getattr__L   sY    	<%% 	 	 	A$)AA4AA 	s    &5N)__name__
__module____qualname__r=   rC    r>   r<   r6   r6   G   s2              r>   r6   c                   x    e Zd Z eddej        i          ej         eddei          eeee	e
eed
Zd Zd ZdS )	EvalEnvtorchTensortypingr,   )
rJ   rK   rL   r,   r*   r    r+   r-   r!   Awaitc                 |    || _         t          j        j                                        rt
          | j        d<   d S d S )Nr3   )rcbrJ   distributedrpcis_availabler3   env)r;   rO   s     r<   r=   zEvalEnv.__init__c   s?     --// 	$#DHV	$ 	$r>   c                     || j         v r| j         |         S | j        |                     |          S t          t          |d           S r8   )rS   rO   getattrbuiltinsrB   s     r<   __getitem__zEvalEnv.__getitem__h   sE    488D>!888D>>!xt,,,r>   N)rD   rE   rF   r6   rJ   rK   r,   r*   r    r+   r-   r!   r   rS   r=   rW   rG   r>   r<   rI   rI   U   s        (EL!9::,&GU#344 C$ $ $
- - - - -r>   rI   c                    t          | t                    rt          | j        |          }nt          | |          }||r|\  }}|dd          }||f}|nd\  }}	 t	          d                    t          |           d                             }t          |          }n# t          $ r Y nw xY w|t          |||          }|S )Nr/   )NN r   )

isinstancer4   try_real_annotationsopr   joinr.   get_type_line	TypeErrorparse_type_line)	fnrO   loc	is_method	signatureparam_typesreturn_type	type_linesources	            r<   get_signatureri   p   s    "&'' 2(44		(S11	
 $- [!!""o +.	&	6	BGG$=b$A$A!$DEEFFF%f--II 	 	 	D	  '	3<<Is   AB   
B-,B-c                 R    t          j        |           pt          j        |           S r8   )inspect
isfunctionismethodthe_callables    r<   is_function_or_methodrp      s%     l++Mw/?/M/MMr>   c                     t          |           st          |           r| j        } t          |           rt          j        |           j        d uS dS )NF)rp   callable__call__rk   getfullargspecvarargsrn   s    r<   	is_varargrv      sY     .. -8L3I3I - $,\** %l33;4GGur>   c                 t   t          | t                    r| j        } t          |           s*t	          |           rt          | j                  r| j        } t          |           r<t          |           rt          j        |           } t          j	        |           j
        S d t          |          D             S )Nc                 ,    g | ]}t          |          S rG   )str).0is     r<   
<listcomp>z#get_param_names.<locals>.<listcomp>   s    ...1A...r>   )rZ   r4   r\   rp   rr   rs   r%   rk   unwraprt   argsrange)ra   n_argss     r<   get_param_namesr      s    "&'' U ""%%RLL ""+.. [R   / 	$##B%b)).. /.f....r>   c                    	 t          d                    t          |           d                             }n# t          t          f$ r Y d S w xY w|d S t          j        |          }t          |j                  dk    r^t          |j        d         t
          j
                  r9t          j        j                            |d|j        d         j         d          t          |j                  dk    s%t          |j        d         t
          j                  s%t          j        j                            |d          d S )NrY   r   r/   zCannot instantiate class 'z' in a script functionz$Expected a single top-level function)r   r]   r.   OSErrorr_   astparselenbodyrZ   ClassDefrJ   jitfrontendFrontendErrorr9   FunctionDef)ra   rb   rh   py_asts       r<   check_fnr      s,    9" = =a @AABBY   ~YvF
6;1FKNCL!I!Ii ..TQ)<TTT
 
 	
 6;1Jv{1~s$O$Oi ..7
 
 	
 s   58 AAc                     t          | dd          }t          j        |          D ]}d|j        v rt	          d|  d          t          |||          S )zLEvaluate statement as long as it does not contain any method/function calls.rY   eval)modeCALLz/Type annotation should not contain calls, but 'z' does)compiledisget_instructionsopnamerA   r   )stmtglobrb   bytecodeinsns        r<   _eval_no_callr      sv    tRf---H$X..  T[  N$NNN   ! $$$$r>   c                    t          |           \  }}	 t          |i t          |                    }n)# t          t          f$ r}t          d          |d}~ww xY wt          |t                    s|f}	 t          |i t          |                    }n)# t          t          f$ r}t          d          |d}~ww xY wfd|D             }|t          |          fS )zParse a type annotation specified as a comment.

    Example inputs:
        # type: (Tensor, torch.Tensor) -> Tuple[Tensor]
        # type: (Tensor, Tuple[Tensor, Tensor]) -> Tensor
    z6Failed to parse the argument list of a type annotationNz4Failed to parse the return type of a type annotationc                 0    g | ]}t          |          S rG   )ann_to_type)rz   annrb   s     r<   r|   z#parse_type_line.<locals>.<listcomp>   s#    :::3S#&&:::r>   )	split_type_liner   rI   	NameErrorSyntaxErrorrA   rZ   tupler   )	rg   rO   rb   arg_ann_strret_ann_strarg_anneret_ann	arg_typess	     `      r<   r`   r`      s     /y99KR>>{#   D
 
	
 gu%% *R>>{#   B
 
	
 ;:::':::Ik'3////s-   4 AAA6B B;&B66B;c                    d|                      d          }t          t          |                    }t          t          fd|                    }t	          j        d          t          t          fd|                    }t          |          dk    r}t	          j        d          t          t          fd|                    }t          |          dk    r4t          d	t          |d         d                   z   d
z   dz   dz             dS t          |          dk    r |d         d         	                                S d}g }|D ](\  }}d|v r||f} n|v r|
                    |           )|2t          dd                    d |D                       z   dz             fd}t          ||          }	d                    |	          }
|d                             d|
          S )zCTry to find the line containing a comment with the type annotation.# type:
c                     | d         v S Nr/   rG   )linetype_comments    r<   <lambda>zget_type_line.<locals>.<lambda>   s    ,$q'*A r>   z!# type:\ ignore(\[[a-zA-Z-]+\])?$c                 <                         | d                    S r   search)r   type_patterns    r<   r   zget_type_line.<locals>.<lambda>  s    l.A.A$q'.J.J*J r>   r   z&#[	 ]*type[	 ]*(?!: ignore(\[.*\])?$):c                 :                         | d                   S r   r   )r   wrong_type_patterns    r<   r   zget_type_line.<locals>.<lambda>  s     2 9 9$q' B B r>   zThe annotation prefix in line z* is probably invalid.
It must be '# type:'zl
See PEP 484 (https://www.python.org/dev/peps/pep-0484/#suggested-syntax-for-python-2-7-and-straddling-code)z
for examplesNr/   z# type: (...) -> z_Return type line '# type: (...) -> ...' not found on multiline type annotation
for type lines:
c                     g | ]
}|d          S )r/   rG   )rz   r   s     r<   r|   z!get_type_line.<locals>.<listcomp>(  s    888Ta888r>   zl
(See PEP 484 https://www.python.org/dev/peps/pep-0484/#suggested-syntax-for-python-2-7-and-straddling-code)c                     | |                                t                    z   d          }|                                S r8   )findr   strip)r   	item_typer   s     r<   get_parameter_typez)get_type_line.<locals>.get_parameter_type,  s<    <003|3D3DDFFG	   r>   z, z...)splitlist	enumeratefilterrer   r   rA   ry   r   appendr]   mapreplace)rh   lines
type_lineswrong_type_linesreturn_lineparameter_type_linesline_numr   r   typesparameter_typesr   r   r   s              @@@r<   r^   r^      sb   LLLE5!!""EfAAAA5IIJJJ :DEELfJJJJJWWXXJ
:!Z(TUUBBBBEJJ
 
   1$$0&q)!,--.?@ BB #	#   t	ZA		!}Q%%''' K$ . .$$&&#T*KET!! ''---1ii88Z88899: ~~
 
 	
! ! ! ! ! "$899Eii&&Oq>!!%999r>   c                     t          d          }	 |                     d          }n# t          $ r t          d          dw xY w| ||                                         | |dz   d                                         fS )a  Split the comment with the type annotation into parts for argument and return types.

    For example, for an input of:
        # type: (Tensor, torch.Tensor) -> Tuple[Tensor, Tensor]

    This function will return:
        ("(Tensor, torch.Tensor)", "Tuple[Tensor, Tensor]")

    r   z->z4Syntax error in type annotation (couldn't find `->`)N   )r   index
ValueErrorrA   r   )rg   start_offset	arrow_poss      r<   r   r   6  s     y>>LOOD))		   B
 
	 \)+,2244i	A6P6V6V6X6XXXs	   ' Ac                 b   	 t          j        |           n# t          $ r Y dS w xY wj        gd j                                        D             z   }t          fd|D                       rdS fdj                                        D             }t          j                  }||fS )z8Try to use the Py3.5+ annotation syntax to get the type.Nc                     g | ]	}|j         
S rG   )
annotation)rz   ps     r<   r|   z(try_real_annotations.<locals>.<listcomp>T  s'     , , ,, , ,r>   c              3   *   K   | ]}|j         u V  d S r8   )empty)rz   r   sigs     r<   	<genexpr>z'try_real_annotations.<locals>.<genexpr>W  s*      
2
23#)
2
2
2
2
2
2r>   c                 :    g | ]}t          |j                  S rG   )r   r   )rz   r   rb   s     r<   r|   z(try_real_annotations.<locals>.<listcomp>Z  s%    QQQAQ\3//QQQr>   )rk   rd   r   return_annotation
parametersvaluesallr   )ra   rb   
all_annotsr   rf   r   s    `   @r<   r[   r[   J  s     ##   tt '( , ,!n3355, , , J 
2
2
2
2z
2
2
222 tQQQQ9N9N9P9PQQQIc3S99Kk!!s    
''r   c                     t          |           }|st          d| j         d          d |D             }fd|D             }t          j                            |          }|st          j                    S |S )NzNo enum values defined for: ''c                 6    h | ]}t          |j                  S rG   )typevalue)rz   vs     r<   	<setcomp>z&get_enum_value_type.<locals>.<setcomp>f  s     000qT!']]000r>   c                 0    g | ]}t          |          S rG   try_ann_to_type)rz   trb   s     r<   r|   z'get_enum_value_type.<locals>.<listcomp>g  s#    777A3''777r>   )r   r   	__class__rJ   _Cunify_type_listr   get)r   rb   enum_valuesr   ir_typesress    `    r<   get_enum_value_typer   a  s    #'77K IGGGGHHH00K000E7777777H (
"
"8
,
,C {}}Jr>   c                 P   t          | t          j                  rdS t          | t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        f	          rt          j        d           dS dS )NTzTorchScript will treat type annotations of Tensor dtype-specific subtypes as if they are normal Tensors. dtype constraints are not enforced in compilation either.F)
issubclassrJ   rK   
LongTensorDoubleTensorFloatTensor	IntTensorShortTensor
HalfTensor
CharTensor
ByteTensor
BoolTensorwarningswarn)r   s    r<   	is_tensorr  s  s    #u|$$ tO
	
   	H	
 	
 	

 t5r>   c                     d S r8   rG   )inps    r<   	_fake_rcbr    s    4r>   c           	      :   t          j        |           }| t          j        j        u rt          j                    S | t          j                    S t          j	        |           r"t          |           rt          j                    S t          |           rIt          |          dk    r|d         dk    rt          g           S t          fd|D                       S t          |           r't          |d                   }|rt!          |          S t#          |           rt          |d                   }t          |d                   }|-t%          d|d          d                                           |-t%          d|d          d                                           t)          ||          S t+          |           rt-          |d         t/          d                     r	|d         }n|d         }t          |          }d}	|sFJ |	                    t3          |           t3          |          t3                                          t5          |          S t7          |           rt9          |          t:          t<          t>          hk    rtA          j                    S g }
t          j        |           D ]}|&|
!                    t          j                               t          |          }d}	|sFJ |	                    t3          |           t3          |          t3                                          |
!                    |           tE          |
          S tF          j$        j%        &                                r2tO          |           r#tQ          t          |d                             S tS          |           r#tU          t          |d                             S tW          |           r:|rt          |d                   ntY          j                    }t[          |          S | t<          u rt]          j                    S | t>          u rt_          j                    S | t:          u s| tF          j0        u rtc          j                    S | td          u rtg          j                    S | th          u rtk          j                    S | tl          u rtY          j                    S | t/          d           u rt          j                    S t          j	        |           r$to          | d          rtq          | j9                  S | tF          j:        u rtw          j                    S | tF          j<        u rt{          j                    S | tF          j>        u rt          j                    S | tF          j@        u rtc          j                    S t          j	        |           rt-          | t          jB                  rt          |           :tF          jD        jE        F                    |           }|G                                }nt          |           }t          |t          |           t          |                     S t          j	        |           rWt          |           }||S tF          jL        M                    |           r%tF          jD        jE        F                    |           S |t          }tF          jO        P                    | |          S )	Nr/   r   rG   c                 0    g | ]}t          |          S rG   r   )rz   arb   s     r<   r|   z#try_ann_to_type.<locals>.<listcomp>  s#    DDDa/!S11DDDr>   Unknown type annotation: '' at zWUnsupported annotation {} could not be resolved because {} could not be resolved. At
{}__torch_script_interface__)QrL   get_argsrk   	Signaturer   r   getInferredr   r   isclassr  r(   r   r   r&   r   r   r#   r   	highlightr   r'   r   r   formatreprr   r)   setintfloatcomplexr   r   r   rJ   rP   rQ   rR   r2   r1   r$   r   r"   r   r   r   r	   SymIntr   ry   r   boolr   r   hasattrr   r  devicer
   	Generatorr   Streamr   dtypeenumEnumr0   r   _script_recursive_compile_classqualified_namer   r   r   r   _jit_internalcan_compile_classr  r   _resolve_type_from_object)r   rb   rO   ann_args	elem_typekeyr   	contained
valid_typemsginnerr  
maybe_typeelementTypescripted_classr9   maybe_script_classs    `               r<   r   r     sC   s##H
g%%%%'''
{|~~s  	#  ~}} Fx==A(1+"3"3R== DDDD8DDDEEEs|| '#HQK55	 	'I&&&s|| $hqk3//S11;PXa[PPs}}PP   =PXa[PPs}}PP   U###3 (hqk4::.. 	$ II I$Y44
hLL3::d3iii$s))LLLLLJ'''}}  x==S%111>### %% 	% 	%AyX\^^,,,(C00JlCQQszz$s))T*5E5EtCyyQQQQQLL$$$$))++ ; ;S99:::~~ =/(1+s;;<<<}} &;CVohqk3777%%%
e||}
g~~   
czzSEL(({}}
czz~
d{{|~~
czz{}}
d4jj|~~s =-I J J =S;<<<
el """
eo!###
el """
ek{}}s H
3	 : : HS!!)"Y.GGSQQN!0022DD"3''D1#s;;T#YYGGGs H.s33)%%0055 	H9$==c3GGG {8--c3<<<r>   c                 z    t          | ||          }||S t          d|  d|                                           )Nr	  r
  )r   r   r  )r   rb   rO   the_types       r<   r   r     sE    sC--H
M#MMCMMOOMM
N
NNr>   )r   r*   r   r   r   r,   r(   r&   r    r#   r'   r)   r   r   r   r	   r   r   r   r   r   r6   ri   r   r   r`   r^   r   r[   r   r   r8   )Vr   rV   r   r  rk   r   rL   r   textwrapr   r   rJ   torch._Cr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   torch._jit_internalr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   torch._sourcesr.   _stater0   rP   rQ   rR   r1   r2   r3   
torch._opsr4   r6   rI   ri   rp   rv   r   r   r   r`   r^   r   r[   r  r   r  r  r   r   __all__rG   r>   r<   <module>r:     s/   



  



   				                                                            .                                           , 5 4 4 4 4 4 % % % % % % 	%%'' 2!!!!!!11111111 ' ' ' ' ' '       - - - - - - - -6  :N N N	 	 	/ / /,
 
 
*% % %0 0 0<@: @: @:FY Y Y(" " ".4	?    $  8  h= h= h= h=VO O O O" " "r>   