
    YTh                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
r
S SKr
S SK
Jr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>  S SK?J@r@JArAJBrBJCrD  S SKEJFrF  S S	KGJHrHJIrI  S
rJ S SKKrKSrJSrMS1rN\O" \R                  \R                  -   \R                  -   5      rSS rT\ R                  S\ RB                  S\ R4                  S\ R*                  S\ Rp                  S\ RT                  S\ R                  S\ R                  S\ R                  S\ R                  S\ R(                  S\ R.                  S0rY\ R                  S\ RB                  S\ R4                  S\ R*                  S\ Rp                  S\ RT                  S\ R                  S \ R                  S!\ R                  S"\ R                  S#\ R(                  S$\ R.                  S%0rZ\YR                  \ R                  S&\ R                  S'\ R                  S(\ R                  S)\ R                  S*05        \ZR                  \ R                  S+\ R                  S,\ R                  S-\ R                  S.\ R                  S/05        \YR                  \ R                  S005         " S1 S2\b5      rc " S3 S4\c5      rd " S5 S6\d5      re " S7 S8\c5      rfS9 rgS: rhS; riS< rjS= rkSQS> jrlS? rm " S@ SA5      rnSB roSRSC jrpSDrqSSSE jrrSSSF jrsSG rtSH ruSI rv " SJ SK\n5      rw " SL SM\n5      rx " SN SO\n5      ry\y" 5       rz\x" 5       r{\w" 5       r|STSP jr}g! \L a     GNf = f)U    N)
namedtuple)dedent)_jit_internal),ApplyAssertAssign	Attribute	AugAssignBinOpBreakClassDefConstContinueDeclDefDeleteDictCompDictLiteralDotsEmptyTypeAnnotationExprStmtFalseLiteralForIdentIfListCompListLiteralNoneLiteralParamPassPropertyRaiseReturnSelect	SliceExprStarredStmtStringLiteral	Subscript	TernaryIfTrueLiteralTupleLiteralUnaryOpVarWhileWithWithItem)_is_drop_fnFunctionModifiersis_static_fnshould_drop)get_source_lines_and_filemake_source_context	parse_def	ParsedDef)DATACLASS_MAGIC_METHODS)get_qualified_namemonkeytype_traceFT__jitprintc                 L    U R                  [        5      =(       d	    U [        ;   $ N)
startswith_reserved_prefix_reserved_names)names    J/var/www/auris/envauris/lib/python3.13/site-packages/torch/jit/frontend.pyis_reserved_namerF   \   s    ??+,G0GG    zfunction definitionsz	for loopszdel statementszclass definitionszwith statementszraise statements
assertionszimport statementszglobal variableszbreak statementszcontinue statementsdeffordelclasswithraiseassertimportfromglobalbreakcontinuezasync function definitionszasync for loopszasync with statementsz
try blocksznonlocal variablesz	async defz	async forz
async withtrynonlocalzannotated assignmentsc                        \ rS rSrS rS rSrg)FrontendError   c                 x    Xl         X l        [        R                  R	                  U R                   5      U l        g r@   )source_rangemsgtorch_CErrorReporterror_report)selfr[   r\   s      rE   __init__FrontendError.__init__   s,    ( "HH001B1BCrG   c                 l    U R                   U R                  R                  5       R                  5       -   $ r@   )r\   r`   whatlstrip)ra   s    rE   __str__FrontendError.__str__   s)    xx$++00299;;;rG   )r`   r\   r[   N)__name__
__module____qualname____firstlineno__rb   rg   __static_attributes__ rG   rE   rX   rX      s    D<rG   rX   c                       \ rS rSrSrg)NotSupportedError   rn   Nri   rj   rk   rl   rm   rn   rG   rE   rp   rp          rG   rp   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )UnsupportedNodeError   c                 F  > [        U5      n[        [        R                  US5      5      nUR	                  UR
                  UR                  UR                  U-   5      n[        R                  XDR                  5      nU SU(       a  US-   OS S3n[        T	U ])  Xh5        g )N  zaren't supported)typelennode_start_tokensget
make_rangelineno
col_offsetpretty_node_namesri   superrb   )
ra   ctxoffending_nodereason	node_type	range_lenr[   feature_namer\   	__class__s
            rE   rb   UnsupportedNodeError.__init__   s    (	)--i=>	~~!!%%%%	1

 ),,Y8J8JKaB??OP+rG   rn   )ry   )ri   rj   rk   rl   rb   rm   __classcell__)r   s   @rE   ru   ru      s    , ,rG   ru   c                       \ rS rSrSrg)FrontendTypeError   rn   Nrr   rn   rG   rE   r   r      rs   rG   r   c                 X    U Vs/ s H  n[        X5      PM     nn[        U5      $ s  snf r@   )build_withitemlist)r   itemsis      rE   build_withitemsr      s*    -23U^C#UE3; 4s   'c                 l    U Vs/ s H  n[        X5      PM     nn[        [        S U5      5      $ s  snf r@   )
build_stmtr   filter)r   stmtsss      rE   build_stmtsr      s2    )./AZE/tU#$$ 0s   1c                    [         R                  " U S S9n[        U S/ 5      n/ nU H  nUS   U;  d  M  [        US   R                  5      (       a  M-  [        US   R                  SUS    S3US9nUS   R                  (       a  [        US   R                  SUS    S	3US9OS
nUR                  [        UR                  5       [        UR                  5       US   5      Xg5      5        M     U$ )aJ  
Get a list of Property objects representing the properties of a class.

Args:
    cls:  The class to get properties of.
    self_name: The name of the class that the properties should belong to.
Returns:
    A list of Property objects corresponding to the properties of cls. Property
    here refers to the subclass of TreeView.
c                 "    [        U [        5      $ r@   )
isinstanceproperty)ms    rE   <lambda>&get_class_properties.<locals>.<lambda>   s    
1h8OrG   	predicate__jit_unused_properties__r      ___getter)	self_name_setterN)inspect
getmembersgetattrr5   fgetget_jit_deffsetappendr!   ranger   )clsr   propsunused_properties
propertiespropgettersetters           rE   get_class_propertiesr      s     s.OPE%@"E J7++KQ4M4M Q47)73yF
 7<< DGLLBtAwiw*?9U 
 v||~tAw)GX  rG   c                 "  ^ ^ / mUU 4S jnUR                    Hs  n[        U[        R                  5      (       a  U" [        R
                  U5        M;  [        U[        R                  5      (       d  M\  U" [        R                  U5        Mu     T$ )Nc                 X   >  TR                  U " TU5      5        g ! [         a     g f = fr@   )r   rp   )builderentryassignsr   s     rE   maybe_build_assign-get_class_assigns.<locals>.maybe_build_assign   s-    	NN73./  		s    
)))bodyr   astr   StmtBuilderbuild_Assign	AnnAssignbuild_AnnAssign)r   cls_astr   r   r   s   `   @rE   get_class_assignsr      sf    G eSZZ(({77?s}}--{::EB	 
 NrG   c                   ^  [         R                  " T U 4S jS9nU 4S jn[        T [        R                  R
                  R                  5       5      u  pEnSR                  U5      n[        U5      n[        R                  " U5      n	U	R                  S   n
[        U
[        R                  5      (       d   e[        R                  " T 5      (       a  U
R                   Vs1 s HF  n[        U[        R                   5      (       d  M$  UR"                  [$        ;   d  M:  UR"                  iMH     nn['        U5       Hr  u  nu  p[$        R(                  " U5      nU(       d  M'  X;  d  M.  U" T 5      nUU4X-'   [+        T U5      n[,        R.                  R1                  UUR2                  5        Mt     U VVs/ s H  u  nn[5        UXU" U5      S9PM     nnn[7        T U5      n[9        UR;                  SS5      S   5      [9        UR;                  SS5      S   5      -
  n[=        XvUUS	5      n[?        UU
5      n[A        UU
UUUU5      $ s  snf s  snnf )
aT  Get definitions for each method within the current class independently.

Args:
    cls: The class to get definition of.
    self_name: The name of the class that the properties should belong to.

Returns:
    torch._C._jit_tree_views.ClassDef: A representation of the class,
        the methods in the class and their definition as a tree.
c                   > [         R                  " U 5      =(       d    [         R                  " U 5      =(       aR    [        TU R                  5      (       + =(       a0    U R                  TR
                  ;   =(       a    [        U 5      (       + $ r@   )r   ismethod
isfunctionr4   ri   __dict__r2   r   r   s    rE   r   #get_jit_class_def.<locals>.<lambda>
  sa    W--a0IG4F4Fq4I S!**--JJ#,,& ArG   r   c                 ^   > [         R                  " U 5      =(       a    [        U SS 5      T:H  $ )N__self__)r   r   r   )fnr   s    rE   is_classmethod)get_jit_class_def.<locals>.is_classmethod  s'    #LJ(E(LLrG   ry   r   )r   r   
r   F)!r   r   r6   r]   r^   r_   
call_stackjoinr   r   parser   r   r   dataclassesis_dataclassFunctionDefrD   r:   	enumerater}   r   r   loadercachesourcer   r   r{   splitr7   r   build_class_def)r   r   methodsr   sourcelinesfile_linenofilenamer   
dedent_srcpy_ast	class_astmethod	overridesr   rD   _synthesizer_fn
parsed_deffuncobjmethod_defsr   leading_whitespace_lenr   r   s   `                        rE   get_jit_class_defr      s*      GM *CUXX!!,,.*&Kh WW[!FJYYz"FAIi.... $$
 $..
(&#//2  66 FKK( 	 
 &g.LAy488>N~$"7+C0
!:-
sD)$$**41B1BC / #"KT3 	C>RUCVW"   &c95J dA!6q!9:Sq!!$>  +'=uC  Y/G3	;
IwWW;
s   !#I
I
I
6Ic           	      P   [        U [        5      (       d  [        U 5      OU n[        R                  R
                  R                  UR                  5      nUR                  R                  S   nU(       ag  UR                  R                  S   R                  n[        R                  " U SU 35      R                  S   nUR                  R                  SU5        [        U 5      (       Ga<  [        R                  " S5      n	[        U	R                  5      S:w  d,  [        U	R                  S   [        R                   5      (       d%  [#        SUR$                   SUR&                   35      eU	R                  S   n
U
R                  Ul	        S=UR                  l        UR                  l        UR                  R                  UR                  R,                  -    H+  nU
R                  R                  S   R.                  Ul        M-     [1        U 5      (       a  SUl        SUl        [        R                  R6                  R9                  5       nSn[:        (       a1  [        U [        5      (       d  [=        U 5      nUR?                  U5      n[A        URB                  UUUUUS9$ )	a6  
Build a JIT AST (TreeView) from the given function.

Args:
    fn: A function object to compile or a pre-parsed ParsedDef object
    def_name: The name to give to the resulting AST object. This is not
        always the same as `fn.__name__`, for example:
            def _forward(self):
                ...
            forward = _forward
        In this case, the `__name__` attribute of the function object is "_forward",
        but we want the result AST to have the name "forward".
    self_name: If this function is a method, what the type name of `self` is.
r    = zLdef unused_fn(self: Any):
	raise RuntimeError("Cannot call @unused methods")r   z&Expected a single top-level function: :N)r   pdt_arg_types)"r   
_ParsedDefr8   r]   jitannotationsget_type_liner   r   r   argsargr   insertr5   r{   r   RuntimeErrorr   r   kwargvararg
kwonlyargs
annotationr2   returnstype_comment_script_get_type_trace_dbr<   r;   get_args_types	build_defr   )r   def_namer   r   r   	type_linefn_defarg_nameassign_stmtunused_fn_def
unused_defr   type_trace_dbr   qualnames                  rE   r   r   F  s    '1Z&@&@2bJ		%%33J4E4EFI^^  #F;;##A&**ii8*C	{ ;<AA!D1k* 2		\
 }!!"a'zq!3??0
 0
 89L9L8MQzOeOeNfg  #''*
 oo155FKK.;;##fkk&<&<<C'__11!4??CN = r??!FN"&F II%%88:MM
2z : :%b)%44X># rG   c                    [        U R                  S   R                  [        R                  5      (       a  U R                  S   R                  R
                  n[        U[        R                  5      (       a  UR                  nUR                  nUS:X  as  [        U[        R                  5      (       aT  UR                  S:X  aD  [        UR                  [        R                  5      (       a  UR                  R                  S:X  a  gg)Nr   _IgnoreContextManagerr   r]   TF)r   r   context_exprr   Callr   r	   attrvalueNameid)stmtfunction	attr_name
attr_values       rE   #is_torch_jit_ignore_context_managerr    s    $**Q-,,chh77::a=--22h.. I!J33
CMM9 9 ??e+
:;K;KSXX0V0V!''**g5#rG   c                       \ rS rSrS rSrg)Builderi  c                 v    [        U SUR                  R                  -   S 5      nUc  [        X5      eU" X5      $ )Nbuild_)r   r   ri   ru   )ra   r   noder   s       rE   __call__Builder.__call__  s:    x$..*A*AA4H>&s11c  rG   rn   N)ri   rj   rk   rl   r$  rm   rn   rG   rE   r   r     s    !rG   r   c           	          U R                  UR                  UR                  UR                  [        S5      -   5      n[	        [        Xd5      U Vs/ s H  n[        U5      PM     snX55      $ s  snf )NrL   )r~   r   r   r{   r   r   r'   )r   py_defr   r   r   r   rr   s           rE   r   r     sa    v((&*;*;c'l*J	A aAvd6lA: As   A.
c                    UR                   nU R                  UR                  UR                  UR                  [	        S5      -   5      n[        XR                  XE5      nS n	[        USS 5      b  [        XR                  5      n	[        XxU	5      n
US LnUb?  [        R                  R                  U5      n[        R                  R                  XU5      n
[        [!        Xs5      U
[#        X5      5      $ )NrI   r  )r   r~   r   r   r{   build_param_listr   r   
build_exprr  r   r]   r^   parse_type_commentmerge_type_from_type_commentr   r   r   )r   r'  r
  r	  r   r   r   r(  
param_listreturn_typedecl	is_methodtype_comment_decls                rE   r  r    s    ;;Dv}}f&7&79J9JSQVZ9WXA!#{{IMJKvy$'3 nn5{+D%I!HH77	Bxx44TiXuQ!4S)?@@rG   zfCompiled functions can't take variable number of arguments or use keyword-only arguments with defaultsc                 r   UR                   bf  UR                   nU R                  UR                  UR                  S-
  UR                  [	        UR
                  5      -   5      n[        U[        5      eUR                  bf  UR                  nU R                  UR                  UR                  S-
  UR                  [	        UR
                  5      -   5      n[        U[        5      e[	        UR                  5      S:  a?  UR                   H/  nUc  M  [        X5      R                  5       n[        U[        5      e   UR                   Vs/ s H8  nUU(       a*  [        X6R
                     5      (       a  X6R
                     OS 4PM:     nnUR                   Vs/ s H8  nUU(       a*  [        X6R
                     5      (       a  X6R
                     OS 4PM:     nnU VV	s/ s H  u  pi[        XUSU	S9PM     n
nn	U
U VV	s/ s H  u  pi[        XUSU	S9PM     sn	n-  n
U
$ s  snf s  snf s  sn	nf s  sn	nf )Nr   r   F)
kwarg_onlypdt_arg_typeT)r   r~   r   r   r{   r   rp   _vararg_kwarg_errr   kw_defaultsr+  r   r   boolr  build_param)r   py_argsr   r   expr	ctx_ranger   arg_and_typesarg_and_types_kwonlyargsarg_typeresults              rE   r*  r*    s   }} }}NNKK1,dooDHH.M
	  	+<==~~!~~NNKK1,dooDHH.M
	  	+<==
7!# &&C&s0668	'	3DEE ' <<  C mGG&<!=!= ''"		
      %%  &C mGG&<!=!= ''"		
 &    +*MC 	CiEQ*   55MC 	CiDxP5 F M7 s   ?H#?H("H-H3c                    UR                   nU R                  UR                  UR                  UR                  [	        U5      -   5      n[        USS 5      b  [        XR                  5      nOEU(       a  [        [        Xd5      5      nO)Ub  US:X  a  [        [        Xb5      5      nO[        U5      n[        U[        Xe5      U5      $ )Nr  ra   )r   r~   r   r   r{   r   r+  r  r.   r   r   r   )r   py_argr   r4  r5  rD   r(  annotation_exprs           rE   r9  r9    s    ::Dv}}f&7&79J9JSQUY9VWAv|T*6$S*;*;<	eA45		46>eA12-a0%.*==rG   c           	        ^^ [        SSS/5      m[        SSS/5      mUU4S jnS nS nS nU" UR                  S	   R                  R                  5      u  pgS
U" X5      -   nSU-   n	U	SSR	                  U V
s/ s H  oR
                  S-   U
R                  -   PM      sn
5      -   S-   -  n	U" U5      u  pXS-   -  n	[        R                  " U	5      R                  S	   nUR                  Ul	        [        R                  " U5      R                  S	   nUR                  R                  U5        S[        R                  " U5       S3n[        R                  " [        5       5      n[        X5        X   [        5       U'   U" U5      nSU S3U" U5      -   S-   n[!        U5      S	:  a	  US-   U-   nOUn[        R                  " U5      R                  S	   nU$ s  sn
f )N	InputTyperD   ann
OutputTypec                   > / n/ nU  Ht  nUR                   nUR                  R                  nUR                  S5      u  peUS:X  a  UR                  T" XE5      5        US:X  d  M]  UR                  T" XE5      5        Mv     X4$ )Nr   inpout)r   r  r   r   )	r   inputsoutputsr   var_namevar_annvar_decl_typerE  rG  s	          rE   process_ins_outs6build_ignore_context_manager.<locals>.process_ins_outs  s|     CwwHiiooG%,]]3%7"M%i:;%z(<=  rG   c                 h    [         R                  " SSU R                  5      nU SUR                   3$ )Nz[^a-zA-Z0-9_]r   )resubr   r   )r   r  r   s      rE   create_unique_name_ext<build_ignore_context_manager.<locals>.create_unique_name_ext  s0     VV$c3<<8Qt{{m$$rG   c                    SnSn[        U 5      S:X  a  US-  n[        U 5      S:X  a#  SU S   R                  -   nX S   R                  -  n[        U 5      S:  ad  SnUSS	R                  U  Vs/ s H  o3R                  PM     sn5      -   S
-   -  nUS	R                  U  Vs/ s H  o3R                  PM     sn5      -  nX4$ s  snf s  snf )Nry   zreturn r   z -> Noner   z -> z	 -> tuple[, ])r{   rF  rD   r   )rL  return_type_annreturn_statement_strvars       rE   build_return_ann_stmt;build_ignore_context_manager.<locals>.build_return_ann_stmt!  s    (w<1z)Ow<1$wqz~~5O AJOO3 w<!)OsTYY7/K7C7/K%LLsRRO DII7.K7Cxx7.K$LL 44 0L.Ks   -C C
c                 b    SR                  U  Vs/ s H  oR                  PM     sn5      $ s  snf )NrY  )r   rD   )r   r   s     rE   
build_args0build_ignore_context_manager.<locals>.build_args/  s%    yyd3ds((d3443s   ,r   func_ignore_z
def (rY  z :)z: passz# Backward compat: These used to be imported into the outer global scope so some
# code may still expect them.
from typing import List, Dict, Tuple

@torch.jit.ignore
r   ztorch.jit.frontend.r   )r   r   r  keywordsr   rD   rF  r   r   r   r   
astunparseunparsecopyglobalsexecr{   )r   r  rP  rU  r^  ra  rK  rL  ignore_function_nameignore_function_strr]  
return_annreturn_stmtignore_functionignore_func_strgassign_str_lhsassign_str_rhs
assign_str
assign_astrE  rG  s                       @@rE   build_ignore_context_managerrw    s   ;8IL65/:J %55 'tzz!}'A'A'J'JKOF *,B3,MM"%99diifEfsD3772fEFFL 4G<J00 ii 3499!<O  99O ))K(--a0K, O$ % &O 			')A&'&=GI"#  (N 2315
68JJSP  7|a#e+n<
#
:&++A.JU Fs   ;%Gc                    U c  0 $ [         R                  " U 5      nUR                  R                  5        VVs0 s H:  u  p#UR                  [         R
                  R                  Ld  M.  X#R                  _M<     snn$ s  snnf )a  
Get a dictionary of default arguments for a function.

Args:
    fn: Callable - The function to inspect for default arguments.
Returns:
    (Dict[str, Any]): mapping argument names to their default values if
    :attr:`fn` is not None, else empty dictionary.
)r   	signature
parametersr   default	Parameterempty)r   ry  kvs       rE   get_default_argsr  e  sv     
z	!!"%I ((..00DA99G--333 	990  s   -A>*A>c                    ^  [         R                  " T U 4S jS9nU VVs0 s H  u  p#U[        U5      _M     nnnU$ s  snnf )a'  
Get default arguments for all methods in a class (except for static methods).

Args:
    cls: type - The class type to inspect for default arguments.
Returns:
    A Dict[str, Dict[str, Any]] which maps each method name to a Dict[str, Any]
    that maps each argument name to its default value.
c                    > [         R                  " U 5      =(       d    [         R                  " U 5      =(       a;    [        TU R                  5      (       + =(       a    U R                  TR
                  ;   $ r@   )r   r   r   r4   ri   r   r   s    rE   r   ,get_default_args_for_class.<locals>.<lambda>  sP    W--a0IG4F4Fq4I 'S!**--'JJ#,,&'rG   r   )r   r   r  )r   r   method_namemethod_impldefaultss   `    rE   get_default_args_for_classr  {  sY       'G )0(/$K 	%k22(/  
 Os   =c                   $    \ rS rSr\S 5       rSrg)WithItemBuilderi  c                 H   UR                   R                  nUR                   R                  nU[        [        [
        R                     5      -   nUR                  nU R                  X#U5      n[        U[        XR                   5      U(       a  [        X5      5      $ S 5      $ r@   )r  r   r   r{   r   r   r0   optional_varsr~   r1   r+  )r   itemr   startendop_varsr(  s          rE   r   WithItemBuilder.build_withitem  s    ""))!!,,c+CHH566$$NN6#.s--.(/Js$
 	
 6:
 	
rG   rn   N)ri   rj   rk   rl   staticmethodr   rm   rn   rG   rE   r  r    s    
 
rG   r  c                       \ rS rSr\R
                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S	\R                  S
\R                  S\R                  S0r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!Sr"g)r   i  +-*/%|&^<<>>**c                 x    UR                   nUR                  R                  S:X  a  g [        [	        X5      5      $ )NStr)r  r   ri   r   r+  )r   r  r  s      rE   
build_ExprStmtBuilder.build_Expr  s2    

??##u, Js233rG   c                     [        XR                  5      nUR                   Vs/ s H  n[        X5      PM     nn[        XB5      $ s  snf r@   )r+  r  targetsr   )r   r  rhsxlhss        rE   r   StmtBuilder.build_Assign  s=    jj)+/<<8<az#!<8c 9s   Ac                    UR                   c
  [        XSS9e[        UR                  5      [        R
                  :X  a  UR                  R                   R                  S:X  a  U R                  S:w  a  UR                  nU[        SUR                  R                   35      -   n[        UR                  S5      (       a%  U[        SUR                  R                   35      -  nU R                  UR                  X#5      n[        SU R                   S	U 35      e[!        XR                   5      n[!        XR                  5      n[!        XR                  5      n[#        U/XW5      $ )
Nzwithout assigned value)r   ra   rb   zself.r  z: zKType annotations on instance attributes must be declared in __init__, not 'z': )r  ru   rz   targetr   r	   r  funcnamer   r{   r  hasattrr  r~   r   
ValueErrorr+  r   )r   r  r  r  srr  r  the_types           rE   r   StmtBuilder.build_AnnAssign  s&   ::&s9QRR .!!$$.
*OOE#dkk&6&6%7899Ct--sR 2 23455U8B""%,,s2$8 
 jj)kk*c??3seS++rG   c           
          U R                  UR                  UR                  UR                  [        S5      -   5      n[	        X!R
                   Vs/ s H  n[        X5      PM     sn5      $ s  snf )NrK   )r~   r   r   r{   r   r  r+  )r   r  r(  r  s       rE   build_DeleteStmtBuilder.build_Delete  sO    NN4;;3u:9UVaMf*S1MNNMs   A-
c                     U R                  UR                  UR                  UR                  [        S5      -   5      n[	        X!R
                  c  S 5      $ [        XR
                  5      5      $ )Nreturn)r~   r   r   r{   r#   r  r+  r   r  r(  s      rE   build_ReturnStmtBuilder.build_Return  sS    NNKK$//CM*I
 a!3UUC9TUUrG   c                     U R                  UR                  UR                  UR                  [        S5      -   5      n[	        XR
                  5      n[        X#5      $ )NrN   )r~   r   r   r{   r+  excr"   )r   r  r(  r;  s       rE   build_RaiseStmtBuilder.build_Raise  sA    NN4;;3w<9WX#xx(Q~rG   c                    U R                  UR                  UR                  UR                  [        S5      -   5      n[	        XR
                  5      nUR                  b  [	        XR                  5      OS n[        X#U5      $ )NrO   )r~   r   r   r{   r+  testr\   r   )r   r  r(  r  r\   s        rE   build_AssertStmtBuilder.build_Assert  sb    NNKK$//CM*I
 #yy)+/88+?jhh'Tas##rG   c           	      \   [        XR                  5      n[        XR                  5      n[        UR                  5      nU[
        R                  ;   a  [
        R                  U   nO:[        [        XR                  5       R                  SSS9SUR                  -   5      e[        X%U5      $ )N=)r   )offsetsz*unsupported kind of augmented assignment: )r+  r  r  rz   opr   augassign_maprp   find_beforer   r  ri   r
   )r   r  r  r  r  op_tokens         rE   build_AugAssignStmtBuilder.build_AugAssign  s    kk*jj)$'']***"004H#C!2!2CI<r{{J  ,,rG   c                    UR                   (       a  [        S S5      eU R                  UR                  UR                  UR                  [        S5      -   5      n[        U[        XR                  5      [        XR                  5      5      $ )Nz-else branches of while loops aren't supportedwhile)orelserp   r~   r   r   r{   r/   r+  r  r   r   r  s      rE   build_WhileStmtBuilder.build_While  sh    ;; $E  NN4;;3w<9WXQ
3		2KYY4OPPrG   c           	      H   U R                  UR                  UR                  UR                  [        S5      -   5      nUR                  (       a  [        US5      e[        U[        XR                  5      /[        XR                  5      /[        XR                  5      5      $ )NrJ   z+else branches of for loops aren't supported)r~   r   r   r{   r  rp   r   r+  r  iterr   r   r  s      rE   	build_ForStmtBuilder.build_For  sx    NN4;;3u:9UV;;#A'TUU[[)*YY'(YY'	
 	
rG   c           	      
   U R                  UR                  UR                  UR                  [        S5      -   5      n[	        U[        XR                  5      [        XR                  5      [        XR                  5      5      $ )Nif)
r~   r   r   r{   r   r+  r  r   r   r  r  s      rE   build_IfStmtBuilder.build_If#  s]    NN4;;3t99TUsII&YY'[[)	
 	
rG   c           
      \   U R                  UR                  UR                  UR                  [        S5      -   5      nUR                  (       a  [        US5      eUR                   Vs/ s H  n[        X5      PM     nn[        [        [        [        US5      5      U/ 5      5      $ s  snf )Nr>   z?print statements with non-default destinations aren't supported)r~   r   r   r{   destrp   valuesr+  r   r   r.   r   )r   r  r(  valr   s        rE   build_PrintStmtBuilder.build_Print-  s    NN4;;3w<9WX99#T  15<
3$<c%7"34dB?@@ =s   )B)c                     U R                  UR                  UR                  UR                  [        S5      -   5      n[	        U5      $ )Npass)r~   r   r   r{   r    r  s      rE   
build_PassStmtBuilder.build_Pass7  s2    NN4;;3v;9VWAwrG   c                     U R                  UR                  UR                  UR                  [        S5      -   5      n[	        U5      $ )NrS   )r~   r   r   r{   r   r  s      rE   build_BreakStmtBuilder.build_Break<  s2    NN4;;3w<9WXQxrG   c                     U R                  UR                  UR                  UR                  [        S5      -   5      n[	        U5      $ )NrT   )r~   r   r   r{   r   r  s      rE   build_ContinueStmtBuilder.build_ContinueA  s8    NNKK$//C
O*K
 {rG   c                 Z   U R                  UR                  UR                  UR                  [        S5      -   5      n[	        U5      (       a,  [
        (       d  [        S5      e[        X5      n[        X5      $ [        U[        XR                  5      [        XR                  5      5      $ )NrM   ztorch.jit._IgnoreContextManager requires installing Python library `astunparse`,                                    please install it in your Python environment)r~   r   r   r{   r  _IS_ASTUNPARSE_INSTALLEDr   rw  r   r0   r   r   r   r   )r   r  r(  rv  s       rE   
build_WithStmtBuilder.build_WithH  s    NN4;;3v;9VW.t44++"Q  6c@Jc..AsJJ7S))9TUUrG   rn   N)#ri   rj   rk   rl   r   AddSubMultDivModBitOrBitAndBitXorLShiftRShiftPowr  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  rm   rn   rG   rE   r   r     s   #		3

C

C

D

DM 4 4    
 , ,2 O O
 V V  
 $ $ - - Q Q 

 

 
 
 A A       V VrG   r   c                   *   \ rS rSr\R
                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S	\R                  S
\R                  S\R                  S\R                   S0rS\\R$                  '   \R&                  S\R(                  S\R*                  S0r\R.                  S\R0                  S0r\R4                  S\R6                  S\R8                  S\R:                  S\R<                  S\R>                  S\R@                  S\RB                  S\RD                  S\RF                  S0
r$\%S 5       r&\%S 5       r'\%S 5       r(\%S  5       r)\%S! 5       r*\%S" 5       r+\%S# 5       r,\%S$ 5       r-\%S% 5       r.\%S& 5       r/\%S' 5       r0\%S( 5       r1\%S) 5       r2\%S* 5       r3\%S+ 5       r4\%S, 5       r5\%S- 5       r6\%S. 5       r7\%S/ 5       r8\%S0 5       r9\%S1 5       r:\%S2 5       r;S3r<g4)5ExprBuilderiW  r  r  r  r  r  r  z//r  r  r  r  r  @not~andorz==z!=z<=<z>=>iszis notinznot inc                   ^ [        XR                  5      nU R                  R                  S5      mU4S jnUR	                  5       R
                  S-   nU" U5      [        R                  ;   a!  US-  nU" U5      [        R                  ;   a  M!  U[        UR                  5      -   nU R                  XE5      n[        U[        XaR                  5      5      $ )Nzutf-8c                     > [        TU    5      $ r@   )chr)indexr   s    rE   get_char-ExprBuilder.build_Attribute.<locals>.get_char  s    ve}%%rG   r   )r+  r  r   encoder   r  string
whitespacer{   r  make_raw_ranger$   r   )r   r;  baser  	start_posend_pos
name_ranger   s          @rE   build_AttributeExprBuilder.build_Attribute  s    #zz* ""7+	& JJL$$q(	y!V%6%66NI y!V%6%66c$))n,''	;
dE*ii899rG   c           	      f   [        XR                  5      nUR                   Vs/ s H  n[        X5      PM     nn[        US5      (       aD  UR                  (       a3  [        XR                  5      nU[        UR                  5       U5      /-  n/ nUR                   H  n[        XR                  5      nUR                  (       d  [        UR                  5       S5      eUR                  [        [        UR                  5       UR                  5      U5      5        M     [        X$U5      $ s  snf )Nstarargsz&keyword-arg expansion is not supported)r+  r   r   r  r  r&   r   rf  r  r   rp   r   r	   r   r   )	r   r;  r   rB  r   stararg_exprkwargskwkw_exprs	            rE   
build_CallExprBuilder.build_Call  s    #yy)6:ii@iF
3'i@4$$%c==9LW\//1<@AAD--B hh/G66'MMO%M  MM)E'--/266$BGLM   T(( As   D.c                     U R                  UR                  UR                  UR                  S-   5      n[        U5      $ )N   )r~   r   r   r   r   r;  r(  s      rE   build_EllipsisExprBuilder.build_Ellipsis  s3    NNKK$//A*=
 AwrG   c                    U R                  UR                  UR                  UR                  [        UR                  5      -   5      nUR                  R                  [        5      (       a  [        US[        -   5      eUR                  S:X  a  [        U5      $ UR                  S:X  a  [        U5      $ UR                  S:X  a  [        U5      $ UR                  S:X  a  [        U5      $ [        [        X!R                  5      5      $ )Nz=names of variables used in JIT-ed functions can't start with TrueFalseNoneEllipsis)r~   r   r   r{   r  rA   rB   rp   r+   r   r   r   r.   r   r  s      rE   
build_NameExprBuilder.build_Name  s    NN4;;3tww<9WX77.//#$&67 
 77fq>!WW?"WWq>!WW
"7N5GG$%%rG   c           
         U R                  UR                  UR                  UR                  [        [	        UR
                  5      5      -   5      nUR
                  SL a  [        U5      $ UR
                  SL a  [        U5      $ UR
                  c  [        U5      $ UR
                  [        :X  a  [        U5      $ [        S[	        UR
                  5      -   5      e)NTFz!Name constant value unsupported: )r~   r   r   r{   strr  r+   r   r   r"  r   r  r  s      rE   build_NameConstantExprBuilder.build_NameConstant  s    NNKK$//CDJJ<P*P
 ::q>!ZZ5 ?"ZZq>!ZZ8#7N@3tzz?RSSrG   c                 x   [        XR                  5      n[        XR                  5      n[        UR                  5      nU[
        R                  :X  a_  U R                  (       dN  U R                  UR                  5       R                  UR                  5       R                  5      n[        US5      e[        R                  R                  U5      nUc[  U R                  UR                  5       R                  UR                  5       R                  5      n[!        USUR"                  -   5      e[%        XbU5      $ )NzDivision of ints in TorchScript uses Python 3 true division semantics. Please put `from __future__ import division` at the top of your filezunsupported binary operator: )r+  leftrightrz   r  r   r  uses_true_divisionr
  r   r  r  rX   r  	binop_mapr}   rp   ri   r   )r   r;  r  r  r  	err_ranger  s          rE   build_BinOpExprBuilder.build_BinOp  s    ii(jj)$'']=!7!7**399;??CIIK<M<MNI;  ((,,R0**399;??CIIK<M<MNI#:R[[H  XC((rG   c                 z   [        XR                  5      n[        UR                  5      n[        R
                  R                  U5      nUc'  [        UR                  5       SUR                  -   5      eU R                  UR                  UR                  UR                  [        U5      -   5      n[        XTU5      $ )Nzunsupported unary operator: )r+  operandrz   r  r  unop_mapr}   rp   r   ri   r~   r   r   r{   r-   )r   r;  sub_exprr  r  r(  s         rE   build_UnaryOpExprBuilder.build_UnaryOp  s    c<<0$'']''++B/#

<r{{J  NNKK$//CM*I
 qH--rG   c                 J   [        UR                  5      S:  a*  [        S[        [        UR                  5      5      -   5      eUR                   Vs/ s H  n[	        X5      PM     nn[        UR                  5      n[        R                  R                  U5      nUca  U R                  US   R                  5       R                  US   R                  5       R                  5      n[        USUR                  -   5      eUS   nUSS   H  n[!        XWU5      nM     U$ s  snf )N   z.expected at least 2 values in BoolOp, but got r   r   zunsupported boolean operator: )r{   r  AssertionErrorr&  r+  rz   r  r  
boolop_mapr}   r
  r   r  r  rp   ri   r   )	r   r;  r4  	sub_exprsr  r  r.  r  r  s	            rE   build_BoolOpExprBuilder.build_BoolOp  s   t{{a @3s4;;GWCXX  @D{{K{8Z.{	K$'']))--b1**!""$(()A,*<*<*>*D*DI $;bkkI  lQR=Cs+C !
 Ls   D c                     [        [        XR                  5      [        XR                  5      [        XR                  5      5      $ r@   )r*   r+  r  r   r  )r   r;  s     rE   build_IfExpExprBuilder.build_IfExp  s3    sII&sII&sKK(
 	
rG   c                 |   UR                   /[        UR                  5      -    Vs/ s H  n[        X5      PM     nnS n[	        X1R
                  USS  5       H  u  pVn[        U5      n[        R                  R                  U5      n	U R                  UR                  5       R                  UR                  5       R                  5      n
U	c  [        U
SUR                  -   5      eU[         R"                  :X  a  [%        SXW5      n['        U
SU5      nO[%        XU5      nUc  UnM  [%        SXL5      nM     U$ s  snf )Nr   z!unsupported comparison operator: r   r  r  )r*  r   comparatorsr+  zipopsrz   r  	cmpop_mapr}   r
  r   r  r  rp   ri   r   NotInr   r-   )r   r;  eoperandsr@  r  op_r  r  r  r(  in_exprcmp_exprs                rE   build_CompareExprBuilder.build_Compare  s   15d4CSCS>T0TU0T1Js&0TU 88Xab\BMCccB",,004H""399;??CIIK4E4EFA':R[[H  SYY  c/"1eW5 4~!uf7) C* / Vs   D9c                   ^	^
 S m
S m	U	U
4S jn[        XR                  5      n[        UR                  5      nU[        R
                  L Ga!  [        UR                  R                  [        R                  5      (       a  UR                  R                  R                   Vs/ s H  n[        X5      PM     nnU(       dy  U R                  UR                  UR                  R                  R                  UR                  R                  R                  S-   5      n[        U/ 5      nUR                  U5        [        X65      $ [        U[        XR                  R                  5      /5      $ U[        R                  L a  [        UT
" XUR                  5      /5      $ U[        R                   L a  [        X2" XUR                  5      5      $ U[        R                  L a  / nUR                  R                   HV  n[        U[        R                  5      (       a  UR                  T
" XU5      5        M<  UR                  [        X5      5        MX     U(       de  U R                  UR                  UR                  R                  UR                  R                  S-   5      n[        U/ 5      nUR                  U5        [        X65      $ [        U[        XR                  5      /5      $ s  snf )Nc                    UR                   b  [        XR                   5      OS nUR                  b  [        XR                  5      OS nUR                  b  [        XR                  5      OS n[	        UR                  5       X4U5      $ r@   )lowerr+  upperstepr%   r   )r   r  
slice_exprrP  rQ  rR  s         rE   build_SliceExpr4ExprBuilder.build_Subscript.<locals>.build_SliceExpr,  s     ##/ 3 0 01  ##/ 3 0 01  ??. 30 
 TZZ\5>>rG   c                     [        UR                  [        R                  5      (       a  [	        UR                  5       S5      e[        XR                  5      $ )Nz9slicing multiple dimensions with tuples not supported yet)r   r  r   Tuplerp   r   r+  )r   r  
index_exprs      rE   build_Index0ExprBuilder.build_Subscript.<locals>.build_Index>  sE    ***CII66'JJLO  c#3#344rG   c                   > / nUR                    H  n[        U5      nU[        R                  L a  UR	                  T" XU5      5        M;  U[        R
                  L a  UR	                  T" XU5      5        Mh  U[        R                  L a=  UR                  [        L a*  UR	                  [        UR                  5       5      5        M  [        UR                  5       SU S35      e   U$ )Nz!slicing multiple dimensions with z not supported)dimsrz   r   Indexr   SliceConstantr  r"  r   r   rp   )r   r  extslicer;  r;  sub_typerY  rT  s         rE   build_ExtSlice3ExprBuilder.build_Subscript.<locals>.build_ExtSliceF  s    I :syy($$[D%AB*$$_S%EF-$**2H$$T$**,%78+

;H:^T  & rG   r8  )r+  r  rz   slicer   r]  r   rW  eltsr~   r   r   r,   r   r)   r^  ExtSlice)r   r;  rb  r  ra  rX  indicesr(  tuprY  rT  s            @@rE   build_SubscriptExprBuilder.build_Subscript*  s7   	?$	5	" #zz*

#syy $****CII66 CG**BRBRBWBWBWJJs/BW    

((33

((33a7A
 'q"-CNN3' // 
3

8H8H(I'JKK"TOCtzz$J#KLL%T>#TZZ#HII399$"&**//J!*cii88s*'MNz#'BC	 #2 TZZ%:%:DJJ<Q<QTU<UA 'q"-CNN3' //TJsJJ$?#@AAOs   #K+c           
          [        U R                  UR                  UR                  UR                  S-   5      UR                   Vs/ s H  n[        X5      PM     sn5      $ s  snf Nr   )r   r~   r   r   re  r+  r   r;  rG  s      rE   
build_ListExprBuilder.build_List  sN    NN4;;19LM)-3AZ3
 	
3   A#
c           
          [        U R                  UR                  UR                  UR                  S-   5      UR                   Vs/ s H  n[        X5      PM     sn5      $ s  snf rl  )r,   r~   r   r   re  r+  rm  s      rE   build_TupleExprBuilder.build_Tuple  sN    NN4;;19LM)-3AZ3
 	
3rp  c                    U R                  UR                  UR                  UR                  S-   5      nUR                  (       a   UR                  S   (       d  [	        US5      e[        UUR                   Vs/ s H  n[        X5      PM     snUR                   Vs/ s H  n[        X5      PM     sn5      $ s  snf s  snf )Nr   r   z1Dict expansion (e.g. `{**dict}`) is not supported)r~   r   r   keysrp   r   r+  r  )r   r;  r   rG  s       rE   
build_DictExprBuilder.build_Dict  s    t{{DOOT__q=PQ99TYYq\#J  )-3AZ3)-5AZ5
 	
35s   :B;
C c                     [        UR                  5      nU R                  UR                  UR                  UR                  [        U5      -   5      n[        X25      $ r@   )r&  r  r~   r   r   r{   r   r   r;  r  r(  s       rE   	build_NumExprBuilder.build_Num  s@    DJJNN4;;3u:9UVQrG   c           
      <   UR                   nUb  [        U[        5      (       a  [        R	                  X5      $ [        U[
        [        [        45      (       a  [        R                  X5      $ [        U[        5      (       a  [        R                  X5      $ [        U[        [        5      5      (       a  [        R                  X5      $ U R                  UR                  UR                   UR                   [#        [        U5      5      -   5      n[%        US5      e)Nz Unknown Constant expression type)r  r   r8  r  r'  intfloatcomplexrz  r&  	build_Strrz   r"  r  r~   r   r   r{   rX   )r   r;  r  error_ranges       rE   build_ConstantExprBuilder.build_Constant  s    

=Jud33 11#<<ec5'233((33s##((33tH~..--c88..T__dooCJ.OK  -OPPrG   c                     [        UR                  5      nU R                  UR                  UR                  UR                  [        U5      -   S-   5      n[        X25      $ rl  )r&  r  r~   r   r   r{   r(   ry  s       rE   r  ExprBuilder.build_Str  sK    DJJNNKK$//CJ*F*J
 Q&&rG   c           	         Sn/ nUR                    H  nU R                  UR                  UR                  UR                  S-   5      n[	        U[
        R                  5      (       a`  UR                  S:w  a  [        US5      eUR                  b  [        US5      eUS-  nUR                  [        XR                  5      5        M  [	        U[
        R                  5      (       a  X$R                  -  nM  [        US5      e   U R                  UR                  UR                  UR                  S-   5      n[        [        [!        XR5      [#        US5      5      U/ 5      $ )	Nry   r   r  z%Don't support conversion in JoinedStrz%Don't support formatting in JoinedStrz{}zUnsupported value in JoinedStrformat)r  r~   r   r   r   r   FormattedValue
conversionrp   format_specr   r+  r  r_  r   r$   r(   r   )r   r;  r   r   r  r(  s         rE   build_JoinedStrExprBuilder.build_JoinedStr  s   [[Eu||U-=-=u?O?ORS?STA%!3!344##r)+A/VWW$$0+A/VWWT	JsKK89E3<<00[[ '+KLL ! NN4;;19LMVM!/q(1CDdBOOrG   c                    U R                  UR                  UR                  UR                  5      n[        UR                  5      S:w  a  [        US5      e[        UR                  S   R                  5      S:w  a  [        US5      e[        XR                  5      n[        XR                  S   R                  5      n[        XR                  S   R                  5      n[        X#XE5      $ Nr   z.Only a single generator is currently supportedr   z'Comprehension ifs are not supported yet)r~   r   r   r{   
generatorsrp   ifsr+  eltr  r  r   )r   r  r(  elt_exprtarget_expr	iter_exprs         rE   build_ListCompExprBuilder.build_ListComp  s    NN4;;It1$#A'WXXtq!%%&!+#A'PQQc88, ooa&8&?&?@sOOA$6$;$;<	[<<rG   c                 ,    [         R                  X5      $ r@   )r  r  )r   r  s     rE   build_GeneratorExpExprBuilder.build_GeneratorExp  s     ))#44rG   c                    U R                  UR                  UR                  UR                  5      n[        UR                  5      S:w  a  [        US5      e[        UR                  S   R                  5      S:w  a  [        US5      e[        XR                  5      n[        XR                  5      n[        XR                  S   R                  5      n[        XR                  S   R                  5      n[        X#XEU5      $ r  )r~   r   r   r{   r  rp   r  r+  keyr  r  r  r   )r   r  r(  key_expr
value_exprr  r  s          rE   build_DictCompExprBuilder.build_DictComp  s    NN4;;It1$#A'WXXtq!%%&!+#A'PQQc88,ZZ0
 ooa&8&?&?@sOOA$6$;$;<	ZiHHrG   c                     U R                  UR                  UR                  UR                  S-   5      n[        U[	        XR
                  5      5      $ rl  )r~   r   r   r&   r+  r  r  s      rE   build_StarredExprBuilder.build_Starred  s;    NN4;;19LMq*S**566rG   rn   N)=ri   rj   rk   rl   r   r  r  r  r  r  r  FloorDivr  r  r  r  r  r-  MatMultNotUSubInvertr3  AndOrr:  EqNotEqLtELtGtEGtIsIsNotInrF  rE  r  r  r  r  r#  r'  r/  r5  r<  r?  rL  ri  rn  rr  rv  rz  r  r  r  r  r  r  r  rm   rn   rG   rE   r  r  W  s   #d

C

C		3

D

DI !Ickk 	#

CH 	J 			4		8		8I : :  ) )"   & &$ T T ) )* . .  ( 
 
  4 YB YBv 
 
 
 
 

 

  
 Q Q$ ' ' P P( = = 5 5 I I 7 7rG   r  c                     U R                   S U R                  U5      nU R                  XCS   -   U[        U5      -   US   -   5      $ )Nr   r   )r   rindexr
  r{   )r   possubstrr  new_poss        rE   r  r    sJ    jj#%%f-Gg
2Gc&k4IGTUJ4VWWrG   )NF)NNr@   ))r   r   )~r   ri  r   r   rS  r  collectionsr   textwrapr   r]   torch.jit.annotationsr   torch._C._jit_tree_viewsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   torch._jit_internalr2   r3   r4   r5   torch._sourcesr6   r7   r8   r9   r   torch.jit._dataclass_implsr:   torch.jit._monkeytype_configr;   r<   r  rg  ImportErrorrB   rC   setascii_lowercaseascii_uppercasedigits_identifier_charsrF   r   Import
ImportFromGlobalr   r|   updateAsyncFunctionDefAsyncFor	AsyncWithTryNonlocalr   	ExceptionrX   rp   ru   r   r   r   r   r   r   r   r  r   r   r  r6  r*  r9  rw  r  r  r  r   r  r+  r   r   r  rn   rG   rE   <module>r     sc   
    	  "    - - - - - - - - - - - -\   ? M ! 	#  )..1G1GG&--WX H
 OO+GG[JJ LL%HHII!JJJJ#NN'JJ"II!LL'   OOUGGUJJLL'HHfIIwJJJJNNFJJIIwLL*    :'.*   kk|j   .
<I 
<	 	,, ,	 	
%
D$GXT?F$! !A&2 1h>[|,:
g 
 lV' lV^g7' g7T ]
]
 "Xk%  		s   8M3 3M=<M=