
    m
qiSF                     J   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!dZHd ZId ZJd ZKd ZLd ZMdeNejO                 fdZPdeQfdZRd!dZSd"dZTd"dZUg d ZVd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dZd ZdS )ModulereturnNc                 "    || _         || _        d S N)namemembers)selfr9   r:   s      u/var/www/html/bestrading.cuttalo.com/services/ml-inference/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 )r:   KeyErrorRuntimeErrorr9   r;   r9   s     r<   __getattr__zModule.__getattr__K   sY    	<%% 	 	 	A$)AA4AA 	s    &5r6   N)__name__
__module____qualname__r=   rC    r>   r<   r5   r5   F   s7               r>   r5   c                   z    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
dZd	 ZdS )EvalEnvtorchTensortypingr+   )
rK   rL   rM   r+   r)   r   r*   r,   r    Awaitr6   Nc                 |    || _         t          j        j                                        rt
          | j        d<   d S d S )Nr2   )rcbrK   distributedrpcis_availabler2   env)r;   rP   s     r<   r=   zEvalEnv.__init__b   s?     --// 	$#DHV	$ 	$r>   c                     || j         v r| j         |         S | j        |                     |          S t          t          |d           S r8   )rT   rP   getattrbuiltinsrB   s     r<   __getitem__zEvalEnv.__getitem__h   sE    488D>!888D>>!xt,,,r>   rD   )rE   rF   rG   r5   rK   rL   r+   r)   r   r*   r,   r    r   rT   r=   rX   rH   r>   r<   rJ   rJ   T   s        (EL!9::,&GU#344 C$ $ $ $- - - - -r>   rJ   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)	fnrP   loc	is_method	signatureparam_typesreturn_type	type_linesources	            r<   get_signaturerj   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_methodrq      s%     l++Mw/?/M/MMr>   c                     t          |           st          |           r| j        } t          |           rt          j        |           j        d uS dS )NF)rq   callable__call__rl   getfullargspecvarargsro   s    r<   	is_varargrw      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 rH   )str).0is     r<   
<listcomp>z#get_param_names.<locals>.<listcomp>   s    ...1A...r>   )r[   r3   r]   rq   rs   rt   r$   rl   unwrapru   argsrange)rb   n_argss     r<   get_param_namesr      s    "&'' U ""%%RLL ""+.. [R   / 	$##B%b)).. /.f....r>   r6   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 )NrZ   r   r.   zCannot instantiate class 'z' in a script functionz$Expected a single top-level function)r   r^   r-   OSErrorr`   astparselenbodyr[   ClassDefrK   jitfrontendFrontendErrorr9   FunctionDef)rb   rc   ri   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.rZ   eval)modeCALLz/Type annotation should not contain calls, but 'z' does)compiledisget_instructionsopnamerA   r   )stmtglobrc   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 rH   )ann_to_type)r{   annrc   s     r<   r}   z#parse_type_line.<locals>.<listcomp>   s#    :::3S#&&:::r>   )	split_type_liner   rJ   	NameErrorSyntaxErrorrA   r[   tupler   )	rh   rP   rc   arg_ann_strret_ann_strarg_anneret_ann	arg_typess	     `      r<   ra   ra      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.   rH   )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.   rH   )r{   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   rz   r   appendr^   mapreplace)ri   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   )rh   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 rH   )
annotation)r{   ps     r<   r}   z(try_real_annotations.<locals>.<listcomp>T  s'     , , ,, , ,r>   c              3   *   K   | ]}|j         u V  d S r8   )empty)r{   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 rH   )r   r   )r{   r   rc   s     r<   r}   z(try_real_annotations.<locals>.<listcomp>Z  s%    QQQAQ\3//QQQr>   )rl   re   r   return_annotation
parametersvaluesallr   )rb   rc   
all_annotsr   rg   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 rH   )typevalue)r{   vs     r<   	<setcomp>z&get_enum_value_type.<locals>.<setcomp>f  s     000qT!']]000r>   c                 0    g | ]}t          |          S rH   try_ann_to_type)r{   trc   s     r<   r}   z'get_enum_value_type.<locals>.<listcomp>g  s#    777A3''777r>   )r   r   	__class__rK   _Cunify_type_listr   get)r   rc   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                 T   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           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.r   )
stacklevelF)
issubclassrK   rL   
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   rH   )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   rH   c                 0    g | ]}t          |          S rH   r   )r{   arc   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__)RrM   get_argsrl   	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   rK   rQ   rR   rS   r1   r0   r#   r   r!   r   r   r   r   SymIntr   rz   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   rc   rP   ann_args	elem_typekeyr   	contained
valid_typemsginnerr
  
maybe_typeelementTypescripted_classr9   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   rc   rP   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   rj   r   r   ra   r_   r   r\   r   r   rD   r8   )Wr   rW   r   r!  rl   r   rM   r  textwrapr   rK   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/   rQ   rR   rS   r0   r1   r2   
torch._opsr3   r5   rJ   rj   rq   rw   r   r   r   ra   r_   r   r\   r   r"  r   r  r  r  r   r   __all__rH   r>   r<   <module>r=     s3   



  



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