
    sgE                     N   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jv                  jx                  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j                     fdZPd ZQd ZRd!dZSd!dZTg d ZUy)"    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y)Modulec                      || _         || _        y N)namemembers)selfr9   r:   s      H/var/www/html/venv/lib/python3.12/site-packages/torch/jit/annotations.py__init__zModule.__init__H   s    	    c                 t    	 | 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   sJ    	<<%% 	$))$:4&A	s    &7N)__name__
__module____qualname__r=   rC    r>   r<   r6   r6   G   s    r>   r6   c                   ~    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y)	EvalEnvtorchTensortypingr,   )
rJ   rK   rL   r,   r*   r    r+   r-   r!   Awaitc                     || _         t        j                  j                  j	                         rt
        | j                  d<   y y )Nr3   )rcbrJ   distributedrpcis_availabler3   env)r;   rO   s     r<   r=   zEvalEnv.__init__c   s4      --/#DHHV 0r>   c                     || j                   v r| j                   |   S | j                  | j                  |      S t        t        |d       S r8   )rS   rO   getattrbuiltinsrB   s     r<   __getitem__zEvalEnv.__getitem__h   sC    48888D>!88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   sQ    (ELL!9:,,GU#34C$
-r>   rI   c                 >   t        | t              rt        | j                  |      }nt        | |      }||r|\  }}|dd  }||f}|Fd\  }}	 t	        dj                  t        |       d               }t        |      }|t        |||      }|S # t        $ r Y w xY w)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    "&'(4	(S1	
 $- [!!"o +.	&	6	BGG$=b$A!$DEFF%f-I
  '	3<I  		s   1B 	BBc                 Z    t        j                  |       xs t        j                  |       S r8   )inspect
isfunctionismethodthe_callables    r<   is_function_or_methodrp      s%     l+Mw/?/?/MMr>   c                     t        |       st        |       r| j                  } t        |       r!t        j                  |       j
                  d uS y)NF)rp   callable__call__rk   getfullargspecvarargsrn   s    r<   	is_varargrv      sE     .8L3I $,,\*%%l3;;4GGr>   c                    t        | t              r| j                  } t        |       s,t	        |       r!t        | j
                        r| j
                  } t        |       r?t        |       rt        j                  |       } t        j                  |       j                  S t        |      D cg c]  }t        |       c}S c c}w r8   )rZ   r4   r\   rp   rr   rs   r%   rk   unwraprt   argsrangestr)ra   n_argsis      r<   get_param_namesr~      s    "&'UU ""%RL!"++. [[R #B%%b)... !&f.1A...s   +C c                    	 t        dj                  t        |       d               }|y t        j                  |      }t        |j                        dk(  rlt        |j                  d   t
        j                        rEt        j                  j                  j                  |d|j                  d   j                   d      t        |j                        dk7  s't        |j                  d   t
        j                         s*t        j                  j                  j                  |d      y # t        t        f$ r Y y w xY w)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B ~YYvF
6;;1FKKNCLL!Iii  ..(Q)<)<(==ST
 	
 6;;1Jv{{1~s$Oii  ..7
 	
 %P Y s   &D. .E ?E c                     t        | dd      }t        j                  |      D ]  }d|j                  v s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      s`    tRf-H$$X. T[[ A$vN 
 $$$r>   c                    t        |       \  }}	 t        |i t        |            }t        |t              s|f}	 t        |i t        |            }|D cg c]  }t        ||       }	}|	t        ||      fS # t        t        f$ r}t        d      |d}~ww xY w# t        t        f$ r}t        d      |d}~ww xY wc c}w )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 annotation)	split_type_liner   rI   	NameErrorSyntaxErrorrA   rZ   tupleann_to_type)
rg   rO   rb   arg_ann_strret_ann_strarg_anneret_annann	arg_typess
             r<   r`   r`      s      /y9KR> gu%*R> 3::3S#&:I:k'3///! {# D
	 {# B
	
 ;s4   A7 B B=7BBBB:)B55B:c           
      B   d| j                  d      }t        t        |            }t        t        fd|            }t	        j
                  d      t        t        fd|            }t        |      dk(  rbt	        j
                  d      t        t        fd|            }t        |      dkD  r&t        d	t        |d   d         z   d
z   dz   dz         yt        |      dk(  r|d   d   j                         S d}g }|D ]%  \  }}d|v r||f} n|v s|j                  |       ' |1t        ddj                  |D cg c]  }|d   	 c}      z   dz         fd}t        ||      }	dj                  |	      }
|d   j                  d|
      S c c}w )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                 .    j                  | d          S r   search)r   type_patterns    r<   r   zget_type_line.<locals>.<lambda>  s    l.A.A$q'.J*J r>   r   z&#[	 ]*type[	 ]*(?!: ignore(\[.*\])?$):c                 ,    j                  | d         S r   r   )r   wrong_type_patterns    r<   r   zget_type_line.<locals>.<lambda>  s     2 9 9$q' 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:
zl
(See PEP 484 https://www.python.org/dev/peps/pep-0484/#suggested-syntax-for-python-2-7-and-straddling-code)c                 d    | | j                        t              z   d  }|j                         S r8   )findr   strip)r   	item_typer   s     r<   get_parameter_typez)get_type_line.<locals>.get_parameter_type,  s0    <03|3DDFG	  r>   z, z...)splitlist	enumeratefilterrer   r   rA   r{   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^      s   LLLE5!"EfA5IJJ ::DELfJJWXJ
:!ZZ(TUBEJ
  1$0&q)!,-.?@ BB #	#  	ZA	!}Q%%'' K$ .$$&#T*KT! ''-. 1iiZ8Ta89: ~~
 	
! "$89Eii&Oq>!!%99 9s   	Fc                     t        d      }	 | j                  d      }| || j	                         | |dz   d j	                         fS # t        $ r t        d      dw xY w)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  su     y>LOOD)	
 \),224i	A6P6V6V6XXX	  B
	s   A Ac                    	 t        j                  |       j                  gj                  j                         D cg c]  }|j                   c}z   }t        fd|D              ryj                  j                         D cg c]  }t        |j                  |       }}t        j                  |      }||fS # t        $ r Y yw xY wc c}w c c}w )z8Try to use the Py3.5+ annotation syntax to get the type.Nc              3   :   K   | ]  }|j                   u   y wr8   )empty).0r   sigs     r<   	<genexpr>z'try_real_annotations.<locals>.<genexpr>W  s     
23#))
2s   )	rk   rd   r   return_annotation
parametersvalues
annotationallr   )ra   rb   p
all_annotsr   rf   r   s         @r<   r[   r[   J  s     # ''(!nn335,, J 
2z
229<9N9N9PQAQ\\3/QIQc33S9Kk!!  , Rs   C  C	C	CCr   c                 F   t        |       }|st        d| j                   d      |D ch c]  }t        |j                         }}|D cg c]  }t        ||       }}t        j                  j                  |      }|st        j                         S |S c c}w c c}w )NzNo enum values defined for: '')r   r   	__class__typevaluetry_ann_to_typerJ   _Cunify_type_listr   get)r   rb   enum_valuesvr   tir_typesress           r<   get_enum_value_typer   a  s    #'7K8QGHH$/0qT!'']0E0167A3'7H7 ((
"
"8
,C{{}J 17s   BBc                    t        | t        j                        ryt        | t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f	      rt        j                  d       yy)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||$OO
	
 	H	

 r>   c                      y r8   rG   )inps    r<   	_fake_rcbr     s    r>   c           	         t        j                  |       }| t        j                  j                  u rt        j                         S | t        j                         S t        j                  |       rt        |       rt        j                         S t        |       rDt        |      dk(  r|d   dk(  rt        g       S t        |D cg c]  }t        ||       c}      S t        |       rt        |d   |      }|rt!        |      S t#        |       rrt        |d   |      }t        |d   |      }|"t%        d|d    d|j'                                |"t%        d|d    d|j'                                t)        ||      S t+        |       rqt-        |d   t/        d             r|d   }n|d   }t        ||      }	d}
|	s3J |
j1                  t3        |       t3        |      t3        |                   t5        |	      S t7        |       rt9        |      t:        t<        t>        hk(  rtA        j                         S g }t        j                  |       D ]{  }|#|jC                  t        j                                t        ||      }d}
|s3J |
j1                  t3        |       t3        |      t3        |                   |jC                  |       } tE        |      S tF        jH                  jJ                  jM                         r#tO        |       rtQ        t        |d   |            S tS        |       rtU        t        |d   |            S tW        |       r0|rt        |d   |      ntY        j                         }t[        |      S | t<        u rt]        j                         S | t>        u rt_        j                         S | t:        u s| tF        j`                  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        | jr                        S | tF        jt                  u rtw        j                         S | tF        jx                  u rt{        j                         S | tF        j|                  u rt        j                         S | tF        j                  u rtc        j                         S t        j                  |       rt-        | t        j                        rqt        |       ;tF        j                  j                  j                  | |      }|j                         }nt        |       }t        |t        | |      t        |             S t        j                  |       rXt        |       }||S tF        j                  j                  |       r*tF        j                  j                  j                  | |      S |t        }tF        j                  j                  | ||      S c c}w )Nr/   r   rG   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   r{   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a	elem_typekeyr   	contained
valid_typemsginner
maybe_typeelementTypescripted_classr9   maybe_script_classs                    r<   r   r     s   s#H
g%%%%%''
{||~s	#~~}x=A(1+"3R= 8Da/!S1DEEs|#HQK5	I&&s|hqk3/S1;,Xa[Ms}}>OP  =,Xa[Ms}}>OP  U##3hqk4:. I I$Y4
hL3::d3ii$s)LLzJ''}x=S%11>>## % 	%AyX\\^,(C0JlCQszz$s)T*5EtCyQQ:LL$	% ))+S9::~/(1+s;<<};Cohqk37%%
e|}}
g~  
czSELL({{}
cz~~
d{||~
cz{{}
d4j||~s-I JS;;<<
ell  ""
eoo!!##
ell  ""
ekk{{}s
3		 :S!)"YY..GGSQN!002D"3'D1#s;T#YGGs.s3)%%00599$$==c3GG {88--c3<<w Es   Y#c                 b    t        | ||      }||S t        d|  d|j                                )Nr   r   )r   r   r  )r   rb   rO   the_types       r<   r   r     s;    sC-H
1#eCMMO;LM
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 % 	%%'!1 ' - -6:N	/,
*%0<@:FY(".4		? $8h=VO"r>   