
    YhE                     @   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
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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 ddl8m9Z9 e
j:        j;        <                                rd dlm=Z= d d	l!m>Z>m?Z? d d
l@mAZA  G d d          ZB G d d          ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMdeNejO                 fdZPd ZQd ZRd dZSd dZTg dZUdS )!    N)dedent)_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)selfr8   r9   s      g/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torch/jit/annotations.py__init__zModule.__init__G   s    	    c                 p    	 | j         |         S # t          $ r t          d| j         d|           d w xY w)NzModule z has no member called )r9   KeyErrorRuntimeErrorr8   r:   r8   s     r;   __getattr__zModule.__getattr__K   sY    	<%% 	 	 	A$)AA4AA 	s    &5N)__name__
__module____qualname__r<   rB    r=   r;   r5   r5   F   s2              r=   r5   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+   )
rI   rJ   rK   r+   r)   r   r*   r,   r    Awaitc                 |    || _         t          j        j                                        rt
          | j        d<   d S d S )Nr2   )rcbrI   distributedrpcis_availabler2   env)r:   rN   s     r;   r<   zEvalEnv.__init__b   s?     --// 	$#DHV	$ 	$r=   c                     || j         v r| j         |         S | j        |                     |          S t          t          |d           S r7   )rR   rN   getattrbuiltinsrA   s     r;   __getitem__zEvalEnv.__getitem__g   sE    488D>!888D>>!xt,,,r=   N)rC   rD   rE   r5   rI   rJ   r+   r)   r   r*   r,   r    r   rR   r<   rV   rF   r=   r;   rH   rH   T   s        (EL!9::,&GU#344 C$ $ $
- - - - -r=   rH   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   )

isinstancer3   try_real_annotationsopr   joinr-   get_type_line	TypeErrorparse_type_line)	fnrN   loc	is_method	signatureparam_typesreturn_type	type_linesources	            r;   get_signaturerh   o   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 r7   )inspect
isfunctionismethodthe_callables    r;   is_function_or_methodro      s%     l++Mw/?/M/MMr=   c                     t          |           st          |           r| j        } t          |           rt          j        |           j        d uS dS )NF)ro   callable__call__rj   getfullargspecvarargsrm   s    r;   	is_varargru      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 rF   )str).0is     r;   
<listcomp>z#get_param_names.<locals>.<listcomp>   s    ...1A...r=   )rY   r3   r[   ro   rq   rr   r$   rj   unwraprs   argsrange)r`   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 )NrX   r   r.   zCannot instantiate class 'z' in a script functionz$Expected a single top-level function)r   r\   r-   OSErrorr^   astparselenbodyrY   ClassDefrI   jitfrontendFrontendErrorr8   FunctionDef)r`   ra   rg   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.rX   eval)modeCALLz/Type annotation should not contain calls, but 'z' does)compiledisget_instructionsopnamer@   r   )stmtglobra   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 rF   )ann_to_type)ry   annra   s     r;   r{   z#parse_type_line.<locals>.<listcomp>   s#    :::3S#&&:::r=   )	split_type_liner   rH   	NameErrorSyntaxErrorr@   rY   tupler   )	rf   rN   ra   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.   rF   )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.   rF   )ry   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 r7   )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   r@   rx   r   appendr\   mapreplace)rg   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
ValueErrorr@   r   )rf   start_offset	arrow_poss      r;   r   r   5  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 rF   )
annotation)ry   ps     r;   r{   z(try_real_annotations.<locals>.<listcomp>S  s'     , , ,, , ,r=   c              3   *   K   | ]}|j         u V  d S r7   )empty)ry   r   sigs     r;   	<genexpr>z'try_real_annotations.<locals>.<genexpr>V  s*      
2
23#)
2
2
2
2
2
2r=   c                 :    g | ]}t          |j                  S rF   )r   r   )ry   r   ra   s     r;   r{   z(try_real_annotations.<locals>.<listcomp>Y  s%    QQQAQ\3//QQQr=   )rj   rc   r   return_annotation
parametersvaluesallr   )r`   ra   
all_annotsr   re   r   s    `   @r;   rZ   rZ   I  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 rF   )typevalue)ry   vs     r;   	<setcomp>z&get_enum_value_type.<locals>.<setcomp>e  s     000qT!']]000r=   c                 0    g | ]}t          |          S rF   try_ann_to_type)ry   tra   s     r;   r{   z'get_enum_value_type.<locals>.<listcomp>f  s#    777A3''777r=   )r   r   	__class__rI   _Cunify_type_listr   get)r   ra   enum_valuesr   ir_typesress    `    r;   get_enum_value_typer   `  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)
issubclassrI   rJ   
LongTensorDoubleTensorFloatTensor	IntTensorShortTensor
HalfTensor
CharTensor
ByteTensor
BoolTensorwarningswarn)r   s    r;   	is_tensorr  r  s    #u|$$ tO
	
   	H	
 	
 	

 t5r=   c                     d S r7   rF   )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 | tF          jA        u rtc          j                    S t          j	        |           rt-          | t          jC                  rt          |           :tF          jE        jF        G                    |           }|H                                }nt          |           }t          |t          |           t          |                     S t          j	        |           rWt          |           }||S tF          jM        N                    |           r%tF          jE        jF        G                    |           S |t          }tF          jP        Q                    | |          S )	Nr.   r   rF   c                 0    g | ]}t          |          S rF   r   )ry   ara   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__)RrK   get_argsrj   	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   rI   rO   rP   rQ   r1   r0   r#   r   r!   r   r   r   r   SymIntr   rx   r   boolr   r   hasattrr   r
  devicer	   	Generatorr   Streamr   dtypeqschemeenumEnumr/   r   _script_recursive_compile_classqualified_namer   r   r   r   _jit_internalcan_compile_classr  r   _resolve_type_from_object)r   ra   rN   ann_args	elem_typekeyr   	contained
valid_typemsginnerr  
maybe_typeelementTypescripted_classr8   maybe_script_classs    `               r;   r   r     s\   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{}}
em{}}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   ra   rN   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   r5   rh   r   r   r_   r]   r   rZ   r   r   r7   )Vr   rU   r   r  rj   r   rK   r   textwrapr   rI   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-   _stater/   rO   rP   rQ   r0   r1   r2   
torch._opsr3   r5   rH   rh   ro   ru   r   r   r   r_   r]   r   rZ   r   r  r   r  r  r   r   __all__rF   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  k= k= k= k=\O O O O" " "r=   