+
    :i                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHt ^ RIHtHtHtHt ^ R	IHt ]P>                  ! 4       t  ! R
 R]!4      t"]"! R^ ^ 4      t#] ! R R]!4      4       t$] ! R R]!4      4       t% ! R R]!4      t& ! R R]!4      t' ! R R]%]'4      t( ! R R](4      t) ! R R])4      t* ! R R](4      t+ ! R R])4      t, ! R R ])4      t- ! R! R"])4      t. ! R# R$])4      t/ ! R% R&])4      t0 ! R' R(])4      t1 ! R) R*])4      t2 ! R+ R,]*4      t3 ! R- R.]*4      t4 ! R/ R0]*4      t5 ! R1 R2])4      t6 ! R3 R4])4      t7 ! R5 R6])4      t8 ! R7 R8]*4      t9 ! R9 R:]*4      t: ! R; R<]*4      t; ! R= R>])4      t< ! R? R@])4      t= ! RA RB](4      t> ! RC RD])4      t? ! RE RF])4      t@ ! RG RH]%]'4      tA ! RI RJ]%]'4      tB ! RK RL]%]'4      tC ! RM RN]%]'4      tD ! RO RP]%]'4      tE ! RQ RR]%4      tF ! RS RT]%4      tG ! RU RV]$4      tH ! RW RX]$4      tI ! RY RZ]!4      tJ ! R[ R\]%4      tK]K! 4       tLR# )]    )defaultdictN)FunctionTypeBuiltinFunctionType)total_ordering)StringIO)errorsconfig)BINOPS_TO_OPERATORSINPLACE_BINOPS_TO_OPERATORSUNARY_BUITINS_TO_OPERATORSOPERATORS_TO_BUILTINS)NotDefinedErrorRedefinedErrorVerificationErrorConstantInferenceError)constsc                      a  ] tR t^t o Rt]P                  ! R4      tRR ltR t	R t
]R 4       tR tR	 tR
 tR tR tR tRR ltRR ltR tRtV tR# )LoczSource location

    zdef\s+(\w+)Nc                D    Wn         W n        W0n        RV n        W@n        R# )zArguments:
filename - name of the file
line - line in file
col - column
maybe_decorator - Set to True if location is likely a jit decorator
N)filenamelinecollinesmaybe_decorator)selfr   r   r   r   s   &&&&&K/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/core/ir.py__init__Loc.__init__   s      !	
.    c                    \        V 4      \        V4      Jd   R # V P                  VP                  8w  d   R # V P                  VP                  8w  d   R # V P                  VP                  8w  d   R # R# FT)typer   r   r   r   others   &&r   __eq__
Loc.__eq__,   sM    :T%[(==ENN*599

"588uyy r   c                .    V P                  V4      '       * # Nr%   r#   s   &&r   __ne__
Loc.__ne__4       ;;u%%%r   c                @    V ! VP                   VP                  R R7      # )T)r   )r   firstlineno)clsfunc_ids   &&r   from_function_idLoc.from_function_id7   s    7##W%8%8$OOr   c                \    R V P                   : RV P                  : RV P                  : R2# )zLoc(filename=z, line=z, col=))r   r   r   r   s   &r   __repr__Loc.__repr__;   s"    6:mm6:iiK 	Kr   c                    V P                   e-   V P                  : RV P                  : RV P                   : R2# V P                  : RV P                  : R2# )Nz (:r4   )r   r   r   r5   s   &r   __str__Loc.__str__?   s8    88#'==$))TXXFF $tyy99r   c                    R pV P                  4       p\        VR V P                  ^,
           4       F-  pVP                  4       P	                  R4      '       g   K*  Tp V# 	  V# )Ndef )	get_linesreversedr   strip
startswith)r   fn_namer   xs   &   r   _find_definitionLoc._find_definitionE   s^     %Q/0A wwy##F++ 1 r   c                    V P                  4       pV'       dI   V P                  P                  VP                  4       4      pV'       d   VP	                  4       ^ ,          # R# r   N)rD   _defmatchermatchr@   groups)r   defnms   &  r   _raw_function_nameLoc._raw_function_nameR   sE    $$&  &&tzz|4Axxz!}$r   c                    V P                   f6   V P                  4       pVR8X  d   . M\        P                  ! V4      pW n         V P                   # )Nz<string>)r   	_get_path	linecachegetlines)r   pathlnss   &  r   r>   Loc.get_lines[   sB    ::>>#D 
*"	0B0B40HCJzzr   c                    R p \         P                  P                  V P                  4      pV#   \         d.    \         P                  P                  T P                  4      p T# i ; ir(   )osrS   relpathr   
ValueErrorabspath)r   rS   s   & r   rP   Loc._get_pathe   sY    	2 77??4==1D   	2 77??4==1D	2s   )/ 4A'&A'c                   V P                  4       pV P                  pV P                  '       dj   R .V,           pV'       dX   V'       dP   RWC,          9  dC   \        ^ V4      pV^
,           pWEV p^ p\	        V4       F  w  rRV
9   g   K  T	p M	  W8,           p. pV'       Ed7   V^ 8  Ed/   R pV\        ^ W1,
          4      V pRpV F  p
RV
9   g   K  RpK  	  V'       gq   Rp\        VRV^,
           4       F  p
RV
9   g   K  T
p M	  V'       d@   VP                  V4       V! X
4      pVP                  R^V,           ,          R,           4       V'       d   VP                  VRR 4       VP                  \        P                  VR,          4      4       V! VR,          4      pVP                  RV,          \        P                  R4      ,           4       V'       g   V'       g   R	pM	V^ 8:  d   R
p\        P                  R4      R,           pVV P                  4       V\        P                  R P                  V4      4      3,          pV# ) r=   c                     ^ p\         P                  ! \        P                  \        V 4      4       F  pV^,          pK  	  V# )r   )	itertools	takewhilestrisspace)stringspacesrC   s   &  r   count_spaces#Loc.strformat.<locals>.count_spaces   s5    ",,S[[#f+FAaKF Gr   FTN z<source elided>
^z#<source missing, REPL/exec in use?>z<source line number missing>z
File "%s", line %d:z
%s)r>   r   r   max	enumerater?   appendextend
_termcolor	highlightindicater   rP   codejoin)r   	nlines_upr   use_linetmplinesmin_linemax_lineselectedindexidxrC   retre   	def_foundrB   rd   errtmps   &&                r   	strformatLoc.strformats   s    99 te|HfH4F&F q(+#b=#x8'1FC{ # 2 $+ 5X\ SH$89(CH IQ; $I 
 !%A"67A{"# 8 JJw')!_FJJsAJ/2EEF

8CR=)

://=> &hrl3

3<**=*=c*BBC ;Q4 !!"9:6AT^^%x1NOO
r   c                :    \        V 4      ! V P                  W4      # )z)
Return a new Loc with this line number.
)r"   r   )r   r   r   s   &&&r   with_linenoLoc.with_lineno   s     Dz$--33r   c                z    \         P                  P                  V P                  4      pV: RV P                  : 2# )z
Returns a short string
r9   )rW   rS   basenamer   r   )r   shortfilenames   & r   short	Loc.short   s+     ((7'33r   )r   r   r   r   r   )NF)   r(   )__name__
__module____qualname____firstlineno____doc__recompilerH   r   r%   r*   classmethodr1   r6   r:   rD   rM   r>   rP   r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      st      **^,K/& P PK:Qf44 4r   r   zunknown locationc                   @   a  ] tR t^t o ]! 4       tR tR tR tRt	V t
R# )SlotEqualityCheckMixinc                    \        V 4      \        V4      J d2   V P                   F  p\        W4      \        W4      8w  g   K   R # 	  R# R # r!   )r"   	__slots__getattr)r   r$   names   && r   r%   SlotEqualityCheckMixin.__eq__   s=    :e$4&'%*>>  ' r   c                0    \        V 4      \        V4      8*  # r(   ra   r#   s   &&r   __le__SlotEqualityCheckMixin.__le__   s    4yCJ&&r   c                    \        V 4      # r(   idr5   s   &r   __hash__SlotEqualityCheckMixin.__hash__       $xr    N)r   r   r   r   tupler   r%   r   r   r   r   r   s   @r   r   r      s"      I' r   r   c                   6   a  ] tR t^t o RtR tR tR tRtV t	R# )EqualityCheckMixinz"Mixin for basic equality checking c                    \        V 4      \        V4      J d0   R  pV! V P                  4      pV! VP                  4      pW48X  d   R# R# )c                 V    Rp\        V 4      pV F  pVP                  VR4       K  	  V# )locN)r   scope)dictpop)adictbaddrC   s   &   r   fixup(EqualityCheckMixin.__eq__.<locals>.fixup   s,    &KAEE!TN r   TF)r"   __dict__)r   r$   r   d1d2s   &&   r   r%   EqualityCheckMixin.__eq__   s@    :e$ t}}%Bu~~&Bxr   c                0    \        V 4      \        V4      8  # r(   r   r#   s   &&r   r   EqualityCheckMixin.__le__   s    4y3u:%%r   c                    \        V 4      # r(   r   r5   s   &r   r   EqualityCheckMixin.__hash__  r   r   r   N)
r   r   r   r   r   r%   r   r   r   r   r   s   @r   r   r      s     -& r   r   c                   \   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )VarMapi  c                    / V n         R # r(   _conr5   s   &r   r   VarMap.__init__  s	    	r   c                X    WP                   9   d   \        V4      hW P                   V&   R # r(   )r   r   )r   r   vars   &&&r   defineVarMap.define  s"    99 &&!IIdOr   c                ^     V P                   V,          #   \         d    \        T4      hi ; ir(   )r   KeyErrorr   r   r   s   &&r   get
VarMap.get  s/    	(99T?" 	(!$''	(s    ,c                    WP                   9   # r(   r   r   s   &&r   __contains__VarMap.__contains__  s    yy  r   c                ,    \        V P                  4      # r(   )lenr   r5   s   &r   __len__VarMap.__len__  s    499~r   c                B    \         P                  ! V P                  4      # r(   )pprintpformatr   r5   s   &r   r6   VarMap.__repr__  s    ~~dii((r   c                ,    \        V P                  4      # r(   )hashr   r5   s   &r   r   VarMap.__hash__   s    DIIr   c                6    V P                   P                  4       # r(   )r   iterkeysr5   s   &r   __iter__VarMap.__iter__#  s    yy!!##r   c                    \        V 4      \        V4      J d6   V P                  P                  4       VP                  P                  4       8H  # R # F)r"   r   keysr#   s   &&r   r%   VarMap.__eq__&  s6    :e$99>>#uzz'888r   c                .    V P                  V4      '       * # r(   r)   r#   s   &&r   r*   VarMap.__ne__,  r,   r   r   N)r   r   r   r   r   r   r   r   r   r6   r   r   r%   r*   r   r   r   s   @r   r   r     s<     "(!)$& &r   r   c                       ] tR tRtRtRtR# )AbstractRHSi0  zsAbstract base class for anything that can be the RHS of an assignment.
This class **does not** define any methods.
r   N)r   r   r   r   r   r   r   r   r   r   r   0  s    r   r   c                   0   a  ] tR tRt o RtR tR tRtV tR# )Insti6  z%
Base class for all IR instructions.
c                    \         h)z?
List the variables used (read or written) by the instruction.
)NotImplementedErrorr5   s   &r   	list_varsInst.list_vars;  s
     "!r   c                   \        V\        4      '       d   V.# \        V\        4      '       d   VP                  4       # \        V\        \
        34      '       d.   . pV F#  pVP                  V P                  V4      4       K%  	  V# \        V\        4      '       d<   . pVP                  4        F#  pVP                  V P                  V4      4       K%  	  V# . # )zA
A recursive helper used to implement list_vars() in subclasses.
)

isinstanceVarr   r   listr   rm   _rec_list_varsr   values)r   vallstvs   &&  r   r   Inst._rec_list_varsA  s     c35LT""==?"dE]++C

4..q12 JT""CZZ\

4..q12 "JIr   r   N)	r   r   r   r   r   r   r   r   r   r   s   @r   r   r   6  s     " r   r   c                   2   a  ] tR tRt o RtRtRtR tRtV t	R# )StmtiW  zW
Base class for IR statements (instructions which can appear on their
own in a Block).
Fc                8    V P                  V P                  4      # r(   )r   r   r5   s   &r   r   Stmt.list_varsb  s    ""4==11r   r   N)
r   r   r   r   r   is_terminatoris_exitr   r   r   r   s   @r   r   r   W  s       MG2 2r   r   c                   .   a  ] tR tRt o RtRtR tRtV tR# )
Terminatorif  z
IR statements that are terminators: the last statement in a block.
A terminator must either:
- exit the function
- jump to a block

All subclass of Terminator must override `.get_targets()` to return a list
of jump targets.
Tc                *    \        \        V 4      4      hr(   )r   r"   r5   s   &r   get_targetsTerminator.get_targetsr  s    !$t*--r   r   N)	r   r   r   r   r   r   r   r   r   r   s   @r   r   r   f  s      M. .r   r   c                     a  ] tR tRt o RtR tR tR t]R 4       t	]R 4       t
]R 4       t]R"R
 l4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR t R t!R  t"R!t#V t$R	# )#Expriv  zQ
An IR expression (an instruction which can only be part of a larger
statement).
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   ra   r   opr   _kws)r   r  r   kwss   &&&,r   r   Expr.__init__|  s7    "c""""#s####	r   c                    VP                  R 4      '       d   \        P                  W4      # V P                  V,          # )_)rA   r   __getattr__r  r   s   &&r   r  Expr.__getattr__  s0    ??3##D//yyr   c                P    VR9   d   W P                   V&   R# W P                  V&   R# )r  N)r  r   r  )r   r  )r   r   values   &&&r   __setattr__Expr.__setattr__  s"    (("'MM$#IIdOr   c           
         \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WTWV\        \        R7      # )binop)r  r   fnlhsrhs
static_lhs
static_rhsr   r   r   r   	UNDEFINED)r/   r  r  r  r   r  s   &&&&& r   r  
Expr.binop  sl    "12222#s#####s#####s####bbs'I? 	?r   c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WeWW4\        \        R7      # )inplace_binop)r  r   r  immutable_fnr  r  r  r  r  )r/   r  r  r  r  r   r  s   &&&&&& r   r  Expr.inplace_binop  s    "12222,(;<<<<#s#####s#####s####bb'I? 	?r   c                    \        V\        \        \        34      '       g   Q h\        V\        4      '       g   Q hR p\
        P                  ! W4      pV ! WCWR7      # )unary)r  r   r  r  )r   ra   r   r   r   r   r   )r/   r  r  r   r  s   &&&& r   r   
Expr.unary  sQ    %#sL!9::::#s####'++B3bb66r   Nc                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WWVWVVR7      # )call)r  r   funcargsr  varargvarkwargtargetr   r   r   )	r/   r$  r%  r  r   r&  r'  r(  r  s	   &&&&&&&& r   r#  	Expr.call  sG    $$$$$#s####bS FD 	Dr   c                J    \        V\        4      '       g   Q hR pV ! W2VR7      # )build_tupler  r   itemsr   r   r/   r.  r   r  s   &&& r   r,  Expr.build_tuple  s'    #s####b//r   c                J    \        V\        4      '       g   Q hR pV ! W2VR7      # )
build_listr-  r/  r0  s   &&& r   r3  Expr.build_list  s'    #s####b//r   c                J    \        V\        4      '       g   Q hR pV ! W2VR7      # )	build_setr-  r/  r0  s   &&& r   r6  Expr.build_set  s'    #s####b//r   c           	     L    \        V\        4      '       g   Q hR pV ! WeWW4R7      # )	build_map)r  r   r.  sizeliteral_valuevalue_indexesr/  )r/   r.  r:  r;  r<  r   r  s   &&&&&& r   r9  Expr.build_map  s0    #s####b!.M 	Mr   c                J    \        V\        4      '       g   Q hR pV ! W2VR7      # )
pair_firstr  r   r  r   r   r/   r  r   r  s   &&& r   r?  Expr.pair_first  s'    %%%%%b//r   c                z    \        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! W2VR7      # )pair_secondr@  r)  rB  s   &&& r   rE  Expr.pair_second  s:    %%%%%#s####b//r   c                z    \        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! W2VR7      # )getiterr@  r)  rB  s   &&& r   rH  Expr.getiter  s:    %%%%%#s####b//r   c                z    \        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! W2VR7      # )iternextr@  r)  rB  s   &&& r   rK  Expr.iternext  s:    %%%%%#s####b//r   c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WCWR7      # )exhaust_iter)r  r   r  count)r   r   intr   )r/   r  rO  r   r  s   &&&& r   rN  Expr.exhaust_iter  sM    %%%%%%%%%%#s####b<<r   c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WCWR7      # )r   )r  r   r  attr)r   r   ra   r   )r/   r  rS  r   r  s   &&&& r   r   Expr.getattr  sM    %%%%%$$$$$#s####b::r   c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hR p\        P                  pV ! WCWVR7      # )getitem)r  r   r  ry   r  r   r   r   operatorrV  )r/   r  ry   r   r  r  s   &&&&  r   rV  Expr.getitem  sZ    %%%%%%%%%%#s####bCCr   c                |    \        V\        4      '       g   Q h\        V\        4      '       g   Q hR pV ! WTWVR7      # )typed_getitem)r  r   r  dtypery   r)  )r/   r  r\  ry   r   r  s   &&&&& r   r[  Expr.typed_getitem  sA    %%%%%#s####b  	 r   c           	         \        V\        4      '       g   Q hVe   \        V\        4      '       g   Q h\        V\        4      '       g   Q hRp\        P                  pV ! WTWW6R7      # )Nstatic_getitem)r  r   r  ry   	index_varr  rW  )r/   r  ry   r`  r   r  r  s   &&&&&  r   r_  Expr.static_getitem	  sd    %%%%% Jy#$>$>>>#s####b&/ 	/r   c                z    \        V\        4      '       g   Q h\        V\        4      '       g   Q hRpV ! W1VR7      # )z5
A node for implicit casting at the return statement
cast)r  r  r   r)  rB  s   &&& r   rc  	Expr.cast  s<    
 %%%%%#s####b3//r   c                J    \        V\        4      '       g   Q hV ! R. . VR7      # )zPhi node
        phi)r  incoming_valuesincoming_blocksr   r/  )r/   r   s   &&r   rf  Expr.phi  s(     #s####eRMMr   c           	     L    \        V\        4      '       g   Q hRpV ! WaW#WER7      # )z&
A node for making a function object.
make_function)r  r   rq   closuredefaultsr   r/  )r/   r   rq   rl  rm  r   r  s   &&&&&& r   rk  Expr.make_function$  s+    
 #s####b$(\\r   c                H    \        V\        4      '       g   Q hRpV ! W!R7      # )zm
A node for null value.

This node is not handled by type inference. It is only added by
post-typing passes.
nullr  r   r/  r/   r   r  s   && r   rp  	Expr.null-  s'     #s####b""r   c                H    \        V\        4      '       g   Q hRpV ! W!R7      # )zJ
A node for undefined value specifically from LOAD_FAST_AND_CLEAR opcode.
undefrq  r/  rr  s   && r   ru  
Expr.undef9  s'    
 #s####b""r   c                v    \        V\        4      '       g   Q h\        V\        4      '       g   Q hV ! WVR7      # )a  
A node for a dummy value.

This node is a place holder for carrying information through to a point
where it is rewritten into something valid. This node is not handled
by type inference or lowering. It's presence outside of the interpreter
renders IR as illegal.
)r  infor   )r   r   ra   )r/   r  rx  r   s   &&&&r   dummy
Expr.dummyB  s7     #s####"c""""b--r   c                   V P                   R 8X  d   RP                  R V P                   4       4      p\        P                  ^ 8X  d   V P
                  P                  4       M"\        V P
                  P                  4       4      pRP                  R V 4       4      pV P                  e   RV P                  : 2MRpRP                  \        RWV.4      4      pRV P                  : RV: R	2# V P                   R
8X  dq   V P                  V P                  rvV P                  \        P                  8X  d   Yvrv\         P"                  ! V P                  V P                  4      pV: RV: RV: 2# \        P                  ^ 8X  d   V P
                  P                  4       M"\        V P
                  P                  4       4      pR V 4       pV P                   : RRP                  V4      : R	2# )r#  , c              3   8   "   T F  p\        V4      x  K  	  R # 5ir(   r   ).0as   & r   	<genexpr> Expr.__repr__.<locals>.<genexpr>R  s     7YSVVY   c              3   8   "   T F  w  rV: R V: 2x  K  	  R# 5i=Nr   r~  kr   s   &  r   r  r  T  s     Dq!,r  N*r]   zcall (r4   r  rg   c              3   8   "   T F  w  rV: R V: 2x  K  	  R# 5ir  r   r  s   &  r   r  r  `  s     <q!$r  )r  rr   r%  r	   DIFF_IRr  r.  sortedr&  filterr$  r  r  r  rX  containsr   r   )	r   r%  
pres_orderr  r&  arglistr  r  r  s	   &        r   r6   Expr.__repr__P  sN   77f997TYY77D.4nn.A*vdiiooN_G`J))DDDC/3{{/Fdkk+BFiitdC-@ ABG$(IIw77WWxxww(+++S&**477DGG<B!$b#...4nn.A*vdiiooN_G`J<<D#ww		$88r   c                8    V P                  V P                  4      # r(   )r   r  r5   s   &r   r   Expr.list_varsc  s    ""499--r   c                >    \        R V ,          V P                  R7      hz%sr   r   r   r5   s   &r   infer_constantExpr.infer_constantf      $TD[dhh??r   )r  r   r  )NNN)%r   r   r   r   r   r   r  r  r   r  r  r   r#  r,  r3  r6  r9  r?  rE  rH  rK  rN  r   rV  r[  r_  rc  rf  rk  rp  ru  ry  r6   r   r  r   r   r   s   @r   r  r  v  s    

$ ? ? 	? 	? 7 7 D D 0 0
 0 0
 0 0
 M M 0 0
 0 0 0 0 0 0 = = ; ; D D     / / 0 0 N N ] ] 	# 	# # # . .9&.@ @r   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )SetItemij  z
target[index] = value
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R # r(   )r   r   r   r(  ry   r  r   )r   r(  ry   r  r   s   &&&&&r   r   SetItem.__init__o  sb    &#&&&&%%%%%%%%%%#s####

r   c                X    V P                   : R V P                  : RV P                  : 2# [z] = r(  ry   r  r5   s   &r   r6   SetItem.__repr__y       $TZZDDr   )ry   r   r(  r  N	r   r   r   r   r   r   r6   r   r   r   s   @r   r  r  j  s     E Er   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )StaticSetItemi}  z 
target[constant index] = value
c                2   \        V\        4      '       g   Q h\        V\        4      '       d   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        WPn        R # r(   )r   r   r   r(  ry   r`  r  r   )r   r(  ry   r`  r  r   s   &&&&&&r   r   StaticSetItem.__init__  sz    &#&&&&eS)))))S))))%%%%%#s####
"
r   c                X    V P                   : R V P                  : RV P                  : 2# r  r  r5   s   &r   r6   StaticSetItem.__repr__  r  r   )ry   r`  r   r(  r  Nr  r   s   @r   r  r  }  s     
E Er   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )DelItemi  z
del target[index]
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   r   r(  ry   r   )r   r(  ry   r   s   &&&&r   r   DelItem.__init__  sJ    &#&&&&%%%%%#s####
r   c                @    R V P                   : RV P                  : R2# )zdel r  ])r(  ry   r5   s   &r   r6   DelItem.__repr__  s    #{{DJJ77r   )ry   r   r(  Nr  r   s   @r   r  r    s     8 8r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )SetAttri  c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R # r(   )r   r   ra   r   r(  rS  r  r   )r   r(  rS  r  r   s   &&&&&r   r   SetAttr.__init__  sb    &#&&&&$$$$$%%%%%#s####	
r   c                Z    R V P                   : RV P                  : RV P                  : 2# )r  ). = )r(  rS  r  r5   s   &r   r6   SetAttr.__repr__  s    !%diiDDr   )rS  r   r(  r  Nr   r   r   r   r   r6   r   r   r   s   @r   r  r    s     E Er   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )DelAttri  c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   ra   r   r(  rS  r   )r   r(  rS  r   s   &&&&r   r   DelAttr.__init__  sJ    &#&&&&$$$$$#s####	r   c                >    R V P                   : RV P                  : 2# )zdel (r  )r(  rS  r5   s   &r   r6   DelAttr.__repr__  s     $TYY77r   )rS  r   r(  Nr  r   s   @r   r  r    s     8 8r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )StoreMapi  c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R # r(   )r   r   r   dctkeyr  r   )r   r  r  r  r   s   &&&&&r   r   StoreMap.__init__  sb    #s#####s####%%%%%#s####
r   c                X    V P                   : R V P                  : RV P                  : 2# r  )r  r  r  r5   s   &r   r6   StoreMap.__repr__  s     $$((DJJ??r   )r  r  r   r  Nr  r   s   @r   r  r    s     @ @r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )Deli  c                ~    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        R # r(   )r   ra   r   r  r   r   r  r   s   &&&r   r   Del.__init__  s2    %%%%%#s####
r   c                (    R V P                   ,          # )zdel %sr  r5   s   &r   r:   Del.__str__  s    $**$$r   r   r  N)r   r   r   r   r   r:   r   r   r   s   @r   r  r    s     % %r   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )Raisei  Tc                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        R # r(   r   r   r   	exceptionr   r   r  r   s   &&&r   r   Raise.__init__  7     Jy#$>$>>>#s####"r   c                (    R V P                   ,          # )zraise %sr  r5   s   &r   r:   Raise.__str__  s    DNN**r   c                    . # r(   r   r5   s   &r   r   Raise.get_targets      	r   r  r   N)
r   r   r   r   r   r   r:   r   r   r   r   s   @r   r  r    s     G+ r   r  c                   :   a  ] tR tRt o RtRtR tR tR tRt	V t
R# )	StaticRaisei  z
Raise an exception class and arguments known at compile-time.
Note that if *exc_class* is None, a bare "raise" statement is implied
(i.e. re-raise the current exception).
Tc                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hVe   \        V\        4      '       g   Q hWn        W n        W0n        R # r(   r   r"   r   r   	exc_classexc_argsr   r   r  r  r   s   &&&&r   r   StaticRaise.__init__  T     Jy$$?$???#s####:h#>#>>>" r   c           	         V P                   f   R# V P                  f   RV P                   : 2# RV P                   : RRP                  \        \        V P                  4      4      : R2# )Nz<static> raisez<static> raise r  r|  r4   r  r  rr   mapreprr5   s   &r   r:   StaticRaise.__str__  sW    >>!#]]"*...:: # /3nn%)YYs4/G%HJ Jr   c                    . # r(   r   r5   s   &r   r   StaticRaise.get_targets  r  r   r  r  r   Nr   r   r   r   r   r   r   r:   r   r   r   r   s   @r   r  r    &     
 GJ r   r  c                   :   a  ] tR tRt o RtRtR tR tR tRt	V t
R# )	DynamicRaisei  z
Raise an exception class and some argument *values* unknown at compile-time.
Note that if *exc_class* is None, a bare "raise" statement is implied
(i.e. re-raise the current exception).
Tc                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hVe   \        V\        4      '       g   Q hWn        W n        W0n        R # r(   r  r  s   &&&&r   r   DynamicRaise.__init__  r  r   c           	         V P                   f   R# V P                  f   RV P                   : 2# RV P                   : RRP                  \        \        V P                  4      4      : R2# )Nz<dynamic> raisez<dynamic> raise r  r|  r4   r  r5   s   &r   r:   DynamicRaise.__str__  sW    >>!$]]"+/>>;; # 04~~%)YYs4/G%HJ Jr   c                    . # r(   r   r5   s   &r   r   DynamicRaise.get_targets  r  r   r  Nr  r   s   @r   r  r    r  r   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )TryRaisei#  zRA raise statement inside a try-block
Similar to ``Raise`` but does not terminate.
c                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        R # r(   r  r  s   &&&r   r   TryRaise.__init__'  r  r   c                (    R V P                   ,          # )ztry_raise %sr  r5   s   &r   r:   TryRaise.__str__-  s    ..r   r  N	r   r   r   r   r   r   r:   r   r   r   s   @r   r  r  #  s     / /r   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )StaticTryRaisei1  zYA raise statement inside a try-block.
Similar to ``StaticRaise`` but does not terminate.
c                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hVe   \        V\        4      '       g   Q hWn        W n        W0n        R # r(   r  r  s   &&&&r   r   StaticTryRaise.__init__5  r  r   c                    V P                   f   R# V P                  f   RV P                    2# RP                  \        \        V P                  4      4      pRV P                    RV R2# )Nstatic_try_raisezstatic_try_raise r|  r  r4   r  r   r%  s   & r   r:   StaticTryRaise.__str__=  sa    >>!%&]]"&t~~&67799St}}56D&t~~&6avQ??r   r  Nr  r   s   @r   r  r  1  s     @ @r   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )DynamicTryRaiseiG  zZA raise statement inside a try-block.
Similar to ``DynamicRaise`` but does not terminate.
c                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hVe   \        V\        4      '       g   Q hWn        W n        W0n        R # r(   r  r  s   &&&&r   r   DynamicTryRaise.__init__K  r  r   c                    V P                   f   R# V P                  f   RV P                    2# RP                  \        \        V P                  4      4      pRV P                    RV R2# )Ndynamic_try_raisezdynamic_try_raise r|  r  r4   r  r
  s   & r   r:   DynamicTryRaise.__str__S  sa    >>!&']]"''78899St}}56D''7qa@@r   r  Nr  r   s   @r   r  r  G  s     A Ar   r  c                   :   a  ] tR tRt o RtRtR tR tR tRt	V t
R# )	Returni]  z
Return to caller.
Tc                    \        V\        4      '       g   Q \        V4      4       h\        V\        4      '       g   Q hWn        W n        R # r(   )r   r   r"   r   r  r   r  s   &&&r   r   Return.__init__c  s;    %%%2tE{2%#s####
r   c                (    R V P                   ,          # )z	return %sr  r5   s   &r   r:   Return.__str__i  s    TZZ''r   c                    . # r(   r   r5   s   &r   r   Return.get_targetsl  r  r   r  Nr  r   s   @r   r  r  ]  s%      G( r   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )Jumpip  z
Unconditional branch.
c                N    \        V\        4      '       g   Q hWn        W n        R # r(   )r   r   r(  r   )r   r(  r   s   &&&r   r   Jump.__init__u  s    #s####r   c                (    R V P                   ,          # )zjump %sr(  r5   s   &r   r:   Jump.__str__z  s    4;;&&r   c                    V P                   .# r(   r   r5   s   &r   r   Jump.get_targets}  s    }r   )r   r(  N
r   r   r   r   r   r   r:   r   r   r   r   s   @r   r  r  p  s     
' r   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )Branchi  z
Conditional branch.
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R # r(   )r   r   r   condtruebrfalsebrr   )r   r(  r)  r*  r   s   &&&&&r   r   Branch.__init__  s<    $$$$$#s####	r   c                Z    R V P                   : RV P                  : RV P                  : 2# )zbranch r|  )r(  r)  r*  r5   s   &r   r:   Branch.__str__  s    &*iidllKKr   c                2    V P                   V P                  .# r(   )r)  r*  r5   s   &r   r   Branch.get_targets  s    T\\**r   )r(  r*  r   r)  Nr$  r   s   @r   r&  r&    s     L+ +r   r&  c                   0   a  ] tR tRt o RtR tR tRtV tR# )Assigni  z
Assign to a variable.
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   r   r   r  r(  r   )r   r  r(  r   s   &&&&r   r   Assign.__init__  sJ    %----&#&&&&#s####
r   c                <    V P                   : R V P                  : 2# )r  )r(  r  r5   s   &r   r:   Assign.__str__  s     KK44r   )r   r(  r  Nr  r   s   @r   r1  r1    s     5 5r   r1  c                   0   a  ] tR tRt o RtR tR tRtV tR# )Printi  z
Print some values.
c                ,   \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   Q hVe   \        V\        4      '       g   Q h\        V\        4      '       g   Q h\	        V4      V n        W n        / V n        W0n        R# )c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir(   rA  )r~  rC   s   & r   r  !Print.__init__.<locals>.<genexpr>  s     4t!:a%%ts   FTN)	allr   r   r   r   r%  r&  r   r   )r   r%  r&  r   s   &&&&r   r   Print.__init__  so    s4t4sss4t44444~FC!8!888#s####$K	r   c                T    R RP                  R V P                   4       4      ,          # )z	print(%s)r|  c              3   8   "   T F  p\        V4      x  K  	  R # 5ir(   r   r~  r   s   & r   r   Print.__str__.<locals>.<genexpr>  s     &Ay!s1vvyr  )rr   r%  r5   s   &r   r:   Print.__str__  s     TYY&Atyy&AAAAr   )r%  r   r   r&  Nr  r   s   @r   r7  r7    s     B Br   r7  c                   2   a  ] tR tRt o R tR tR tRtV tR# )Yieldi  c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   r   r  r   ry   )r   r  r   ry   s   &&&&r   r   Yield.__init__  s7    %%%%%#s####

r   c                "    R V P                   : 2# )zyield r  r5   s   &r   r:   Yield.__str__  s    !ZZ))r   c                    V P                   .# r(   r  r5   s   &r   r   Yield.list_vars  s    

|r   )ry   r   r  N)	r   r   r   r   r   r:   r   r   r   r   s   @r   rC  rC    s     * r   rC  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )	EnterWithi  zEnter a "with" context
    c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R# )z
Parameters
----------
contextmanager : IR value
begin, end : int
    The beginning and the ending offset of the with-body.
loc : ir.Loc instance
    Source location
N)r   r   r   contextmanagerbeginendr   )r   rM  rN  rO  r   s   &&&&&r   r   EnterWith.__init__  s?     .#....#s####,
r   c                8    R P                  V P                  4      # )zenter_with {})formatrM  r5   s   &r   r:   EnterWith.__str__  s    %%d&9&9::r   c                    V P                   .# r(   )rM  r5   s   &r   r   EnterWith.list_vars  s    ##$$r   )rN  rM  rO  r   N)
r   r   r   r   r   r   r:   r   r   r   r   s   @r   rK  rK    s     ";% %r   rK  c                   0   a  ] tR tRt o RtR tR tRtV tR# )PopBlocki  z(Marker statement for a pop block op codec                B    \        V\        4      '       g   Q hWn        R # r(   )r   r   r   )r   r   s   &&r   r   PopBlock.__init__  s    #s####r   c                    R # )	pop_blockr   r5   s   &r   r:   PopBlock.__str__      r   r  Nr  r   s   @r   rW  rW    s     2 r   rW  c                   2   a  ] tR tRt o R tR tR tRtV tR# )Argi  c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   ra   rP  r   r   ry   r   )r   r   ry   r   s   &&&&r   r   Arg.__init__  sJ    $$$$$%%%%%#s####	
r   c                @    R V P                   V P                  3,          # )zarg(%d, name=%s))ry   r   r5   s   &r   r6   Arg.__repr__  s    !TZZ$;;;r   c                >    \        R V ,          V P                  R7      hr  r  r5   s   &r   r  Arg.infer_constant  r  r   )ry   r   r   N)	r   r   r   r   r   r6   r  r   r   r   s   @r   r_  r_    s     <@ @r   r_  c                   <   a  ] tR tRt o RR ltR tR tR tRtV t	R# )	Consti  c                Z    \        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   r  r   use_literal_type)r   r  r   ri  s   &&&&r   r   Const.__init__  s%    #s####
 0r   c                f    R \        V P                  4      P                  : RV P                  : R2# )zconst(r|  r4   )r"   r  r   r5   s   &r   r6   Const.__repr__  s     "&tzz"2";";TZZHHr   c                    V P                   # r(   r  r5   s   &r   r  Const.infer_constant      zzr   c                Z    \        V P                  V P                  V P                  R 7      # ))r  r   ri  )rg  r  r   ri  r   memos   &&r   __deepcopy__Const.__deepcopy__	  s%    **$((!22
 	
r   )r   ri  r  NT)
r   r   r   r   r   r6   r  rs  r   r   r   s   @r   rg  rg    s     1I
 
r   rg  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )Globali  c                Z    \        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   r   r   r  r   )r   r   r  r   s   &&&&r   r   Global.__init__  s$    #s####	
r   c                @    R V P                   : RV P                  : R2# )zglobal(: r4   r   r  r5   s   &r   r:   Global.__str__  s    #'99djj99r   c                    V P                   # r(   r  r5   s   &r   r  Global.infer_constant  ro  r   c                    \        V P                  V P                  \        P                  ! V P
                  4      4      # r(   )rw  r   r  copydeepcopyr   rq  s   &&r   rs  Global.__deepcopy__  s(     diiT]]488-DEEr   )r   r   r  N)
r   r   r   r   r   r:   r  rs  r   r   r   s   @r   rw  rw    s      :F Fr   rw  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	FreeVari$  za
A freevar, as loaded by LOAD_DECREF.
(i.e. a variable defined in an enclosing non-global scope)
c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        W@n        R # r(   )r   rP  ra   r   ry   r   r  r   )r   ry   r   r  r   s   &&&&&r   r   FreeVar.__init__*  sO    %%%%%$$$$$#s####
	
r   c                @    R V P                   : RV P                  : R2# )zfreevar(r{  r4   r|  r5   s   &r   r:   FreeVar.__str__6  s    $(IItzz::r   c                    V P                   # r(   r  r5   s   &r   r  FreeVar.infer_constant9  ro  r   c                p    \        V P                  V P                  V P                  V P                  R 7      # ))ry   r   r  r   )r  ry   r   r  r   rq  s   &&r   rs  FreeVar.__deepcopy__<  s(    TZZdiitzz88% 	%r   )ry   r   r   r  N)r   r   r   r   r   r   r:   r  rs  r   r   r   s   @r   r  r  $  s#     

;% %r   r  c                   |   a  ] tR tRt o RtR tR tR t]R 4       t	]R 4       t
]R 4       t]R	 4       tR
 tRtV tR# )r   iC  zX
Attributes
-----------
- scope: Scope

- name: str

- loc: Loc
    Definition location
c                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        W n        W0n        R # r(   )r   Scopera   r   r   r   r   )r   r   r   r   s   &&&&r   r   Var.__init__O  sN    }
5% 8 888$$$$$#s####
	r   c                \    R V P                   : RV P                  P                  4       : R2# )zVar(r|  r4   )r   r   r   r5   s   &r   r6   Var.__repr__X  s     $		488>>+;<<r   c                    V P                   # r(   )r   r5   s   &r   r:   Var.__str__[  s    yyr   c                8    V P                   P                  R 4      # )$)r   rA   r5   s   &r   is_tempVar.is_temp^  s    yy##C((r   c                    V P                   P                  P                  4        F  w  rV P                  V9   g   K  Vu # 	  V P                  # )zIThe unversioned name of this variable, i.e. SSA renaming removed
        )r   var_redefinitionsr.  r   )r   r  	redef_sets   &  r   unversioned_nameVar.unversioned_nameb  sA     !JJ88>>@LAyyI% A yyr   c                L    V P                   P                  V P                  4      # )zKnown versioned names for this variable, i.e. known variable names in
the scope that have been formed from applying SSA to this variable
)r   get_versions_ofr  r5   s   &r   versioned_namesVar.versioned_namesk  s    
 zz))$*?*?@@r   c                >    V P                   V P                  0,          # )zDAll known versioned and unversioned names for this variable
        )r  r  r5   s   &r   	all_namesVar.all_namesr  s     ##t'<'<&>>>r   c                    \        \        P                  ! V P                  V4      V P                  V P
                  4      pW!\        V 4      &   V# r(   )r   r  r  r   r   r   r   )r   rr  outs   && r   rs  Var.__deepcopy__x  s7    $--

D1499dhhGRX
r   )r   r   r   N)r   r   r   r   r   r   r6   r:   propertyr  r  r  r  rs  r   r   r   s   @r   r   r   C  su     	= ) )   A A ? ?
 r   r   c                   n   a  ] tR tRt o RtR tR tR tR tR t	RR lt
R	 tR
 t]R 4       tR tRtV tR# )r  i~  z
Attributes
-----------
- parent: Scope
    Parent scope

- localvars: VarMap
    Scope-local variable map

- loc: Loc
    Start of scope location

c                    Ve   \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        \	        4       V n        W n        \        \        4      V n	        \        \        4      V n        R # r(   )r   r  r   parentr   	localvarsr   r   rP  	redefinedsetr  )r   r  r   s   &&&r   r   Scope.__init__  sX    ~FE!:!:::#s####$S)!,S!1r   c                l    \        WVR7      pV P                  P                  VP                  V4       V# )z
Define a variable
r   r   r   )r   r  r   r   )r   r   r   r   s   &&& r   r   Scope.define  s-     d3/affa(r   c                z    WP                   9   d   RWP                   V,          3,          pV P                  V4      # )z3
Refer to a variable.  Returns the latest version.
%s.%d)r  	get_exactr   s   &&r   r   	Scope.get  s3     >>!dNN4$899D~~d##r   c                     V P                   P                  V4      #   \         d2    T P                  '       d   T P                  P                  T4      u # h i ; i)zZ
Refer to a variable.  The returned variable has the exact
name (exact variable version).
)r  r   r   
has_parentr  r   s   &&r   r  Scope.get_exact  sJ    
	>>%%d++ 	{{t,,		s    AAAc                    WP                   9   d   R WP                   V,          3,          pWP                  9  d   V P                  W4      # V P                  P                  V4      # )r  )r  r  r   r   )r   r   r   s   &&&r   get_or_defineScope.get_or_define  sP    >>!dNN4$899D~~%;;t))>>%%d++r   c                   WP                   9  d   V P                  W4      # V'       g   V P                   P                  V4      #  V P                  V,          pV^,           V P                  V&   RW^,           3,          p V P                  WR4      pV P                  V,          P                  V4       V#   \         d     K  i ; i)z)
Redefine if the name is already defined
r  )r  r   r   r  r  addr   )r   r   r   renamectnewnameress   &&&&   r   redefineScope.redefine  s     ~~%;;t)) >>%%d++^^D)')Avt$!T6N2>++g3C **4044W=
	 & s   B6 6CCc                @   a aa \        4       oV VV3R loS! V4       S# )z)
Gets all known versions of a given name
c                    < SP                   P                  V R 4      pV'       d%   V F  pSP                  V4       S! V4       K  	  R # R # r(   )r  r   r  )thenameredefsr   r   verswalks   &  r   r  #Scope.get_versions_of.<locals>.walk  s?    ++//>FAHHQKG   r   )r  )r   r   r  r  s   f&@@r   r  Scope.get_versions_of  s     u	 	T
r   c                    \        V P                  4      p\        V R V,          VR7      pV P                  P                  VP                  V4       V# )z$%dr  )r   r  r   r   r   )r   r   nr   s   &&  r   	make_tempScope.make_temp  s?    d4affa(r   c                    V P                   R J# r(   )r  r5   s   &r   r  Scope.has_parent  s    {{$&&r   c                h    R V P                   \        V P                  4      V P                  3,          # )z%Scope(has_parent=%r, num_vars=%d, %s))r  r   r  r   r5   s   &r   r6   Scope.__repr__  s0    6$//:=dnn:M:>((:D D 	Dr   )r   r  r  r  r  Nru  )r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r6   r   r   r   s   @r   r  r  ~  sR     2$,. ' 'D Dr   r  c                      a  ] tR tRt o RtR tR tRR ltRR ltR t	R	 t
R
 tR tR tRR lt]R 4       t]R 4       tR tR tR tR tRtV tR# )Blocki  zA code block

    c                    \        V\        4      '       g   Q h\        V\        4      '       g   Q hWn        . V n        W n        R # r(   )r   r  r   r   bodyr   )r   r   r   s   &&&r   r   Block.__init__  s9    %''''#s####
	r   c                v    \        V P                  V P                  4      pV P                  R ,          Vn        V# )NNN)r  r   r   r  r   blocks   & r   r  
Block.copy  s*    djj$((+YYq\
r   Nc              #     "   V P                    FZ  p\        V\        4      '       g   K  VP                  p\        V\        4      '       g   K?  Ve   VP
                  V8X  g   KV  Vx  K\  	  R# 5i)z5
Iterate over exprs of the given *op* in this block.
N)r  r   r1  r  r  r  )r   r  instexprs   &&  r   
find_exprsBlock.find_exprs  sL      IID$''zzdD))zTWW]"
 s   #A/A/A/%
A/c              #  b   "   V P                    F  p\        W!4      '       g   K  Vx  K  	  R# 5i)z6
Iterate over insts of the given class in this block.
N)r  r   )r   r/   r  s   && r   
find_instsBlock.find_insts  s%      IID$$$
 s   /
/c                ~    V P                  \        R7       F"  pVP                  P                  V8X  g   K   Vu # 	  R# )zZ
Returns the assignment inst associated with variable "name", None if
it cannot be found.
)r/   N)r  r1  r(  r   )r   r   rC   s   && r   find_variable_assignmentBlock.find_variable_assignment  s3    
 V,Axx}}$ - r   c                n    \        V\        4      '       g   Q hV P                  P                  ^ V4       R# rG   )r   r   r  insertr   r  s   &&r   prependBlock.prepend  s)    $%%%%		D!r   c                l    \        V\        4      '       g   Q hV P                  P                  V4       R # r(   )r   r   r  rl   r  s   &&r   rl   Block.append#  s'    $%%%%		r   c                    \        V\        4      '       g   Q hV P                  V P                  P                  V4       R # r(   )r   r   r  ry   r  s   &&r   removeBlock.remove'  s.    $%%%%IIdiiood+,r   c                     V P                   R  R# )r  Nr  r5   s   &r   clearBlock.clear+  s    IIaLr   c                   T;'       g    \         P                  pV P                   F^  p\        VR 4      '       d   VP	                  V4       K(  \        R VP                  4        4       4      p\        RV:R RV: 2VR7       K`  	  R# )dumpc              3   8   "   T F  p\        V4      x  K  	  R # 5ir(   r   r?  s   & r   r  Block.dump.<locals>.<genexpr>5  s     "D3Ca3q663Cr  z    40rg   fileN)sysstdoutr  hasattrr  r  r   print)r   r  r  	inst_varss   &&  r   r  
Block.dump.  s_    !!szzIIDtV$$		$""D4>>3C"DD	i8tD r   c                (    V P                   R,          #    ri   r  r5   s   &r   
terminatorBlock.terminator8  s    yy}r   c                d    V P                   ;'       d    V P                   R,          P                  # r  )r  r   r5   s   &r   is_terminatedBlock.is_terminated<  s"    yy88TYYr]888r   c                    V P                   '       g   \        R 4      hV P                  RR  F   pVP                  '       g   K  \        R4      h	  R# )zMissing block terminatorNz&Terminator before the last instructionri   )r  r   r  r   r  s   & r   verifyBlock.verify@  sL    !!!#$>??IIcrND!!!' )6 7 7 #r   c                    V P                   P                  V4      pV P                   P                  V^,           V4       R# )z
Insert *stmt* after *other*.
N)r  ry   r  )r   stmtr$   ry   s   &&& r   insert_afterBlock.insert_afterI  s.     		&		D)r   c                    \        V\        4      '       g   Q hV P                  '       g   Q hV P                  P	                  RV4       R# )r  Nri   )r   r   r  r  r  )r   r  s   &&r   insert_before_terminatorBlock.insert_before_terminatorP  s;    $%%%%!!!!!		T"r   c                $    R V P                   : R2# )z<ir.Block at >r  r5   s   &r   r6   Block.__repr__U  s    %)XX//r   )r  r   r   r(   )r   r   r   r   r   r   r  r  r  r  r  rl   r  r  r  r  r	  r  r  r  r  r6   r   r   r   s   @r   r  r    s~     
	#"-E   9 97*#
0 0r   r  c                   4   a  ] tR tRt o RtRtR tR tRtV t	R# )LoopiY  zDescribes a loop-block
    c                    Wn         W n        R # r(   entryexitr   r  r   s   &&&r   r   Loop.__init__^      
	r   c                D    V P                   V P                  3pR V,          # )zLoop(entry=%s, exit=%s)r  r
  s   & r   r6   Loop.__repr__b      zz499$(4//r   r  N
r   r   r   r   r   r   r   r6   r   r   r   s   @r   r  r  Y       I0 0r   r  c                   4   a  ] tR tRt o RtRtR tR tRtV t	R# )Withig  zDescribes a with-block
    c                    Wn         W n        R # r(   r  r!  s   &&&r   r   With.__init__l  r#  r   c                D    V P                   V P                  3pR V,          # )zWith(entry=%s, exit=%s)r  r
  s   & r   r6   With.__repr__p  r&  r   r  Nr'  r   s   @r   r*  r*  g  r(  r   r*  c                      a  ] tR tRt o R tR tR tR tRR ltR t	R	 t
R
 tRR ltRR ltRR ltR tRR ltRR ltRtV tR# )
FunctionIRiu  c                z    Wn         W n        W0n        W@n        W`n        Wpn        WPn        V P                  4        R # r(   )blocksis_generatorr0   r   	arg_count	arg_names_definitions_reset_analysis_variables)r   r2  r3  r0   r   definitionsr4  r5  s   &&&&&&&&r   r   FunctionIR.__init__w  s3    (""'&&(r   c                h    \        V 4      \        V4      J d   V P                  VP                  8H  # R# )a  Checks that the IR contained within is equal to the IR in other.
Equality is defined by being equal in fundamental structure (blocks,
labels, IR node type and the order in which they are defined) and the
IR nodes being equal. IR node equality essentially comes down to
ensuring a node's `.__dict__` or `.__slots__` is equal, with the
exception of ignoring 'loc' and 'scope' entries. The upshot is that the
comparison is essentially location and scope invariant, but otherwise
behaves as unsurprisingly as possible.
F)r"   r2  r#   s   &&r   equal_irFunctionIR.equal_ir  s*     :e$;;%,,..r   c                  a . pV P                   P                  4        EF  w  r4VP                   P                  VR4      pVf   K(  WE8w  g   K0  VP                  RV,          P	                  ^PR4      4       VP
                   Uu. uF  p\        V\        4      '       g   K  VNK  	  ppVP
                   Uu. uF  p\        V\        4      '       g   K  VNK  	  ppWx8w  d2   \        V4      \        V4      8X  d   VP                  RV,          4       \        VP
                  4      \        VP
                  4      8  d   VP                  R4       M>\        VP
                  4      \        VP
                  4      8  d   VP                  R4       . o\        \        VP
                  VP
                  4      4       F"  w  rV
w  rW8w  g   K  SP                  V	4       K$  	  V3R lp\        \        VP
                  4      \        VP
                  4      4      p\        4       ;_uu_ 4       pRV3R	V3.pV F  w  ppVP                  ^ 4       VP                  VR
7       VP!                  4       P#                  4       p
V! VP
                  V4      pV: RV: 2pVP                  VP	                  ^PR4      4       TP%                  \        VV
4       UUu. uF  w  ppRP'                  VV4      NK  	  upp4       K  	  RRR4       EK  	  V. 8X  d   VP                  R4       RP)                  V4      # u upi u upi u uppi   + '       g   i     EK8  ; i)z_
Compute a human readable difference in the IR, returns a formatted
string ready for printing.
NzBlock %s differs-z<Block %s contains the same dels but their order is differentz#This block contains more statementsz$Other block contains more statementsc                    < R p\        V4      R,          p. p\        V 4      p\        V4       F)  pVS9   d   TpMWa8  d   TpMTpVP                  V4       K+  	  V# )z-> rg   )r   rangerl   )	ablocklpointersppadnstmtiitemr~   s	   &&      r   get_pad$FunctionIR.diff_str.<locals>.get_pad  s`    "' \C/  #F!&uA Cx'.!"'.')JJt, ".  #
r   r   r$   r  z: block z{0}{1}zIR is considered equivalent.
)r2  r.  r   rl   centerr  r   r  r  r   rk   zipminr   truncater  getvalue
splitlinesrm   rR  rr   )r   r$   msglabelr  	other_blkrC   	block_deloth_delrz   stmtsb_so_srI  min_stmt_lenbufitr   _blockrE  titler  br~   s   &&                     @r   diff_strFunctionIR.diff_str  s   
  KK--/LE((5I$%JJ 2U :BB2sKL,1JJ MJq*Q:LJI M*3..O.QJq#<Nqq.GO + "),w?JJ )CFK(L M5::Y^^)<<

#HIUZZ3y~~+>>

#IJ C&/EJJ4=NN1D 'E
#(:JJsO	'E# $'s5::INN8K#LL!s%uo/CD,.LD&LLO"KKSK1$'LLN$=$=$?E")&++|"DC7;U%CEJJu||B'<=JJ(+C(9(7 CG!Q1(=(7(9 : -/ $Y 0n "9JJ56yy~g !NO\(9 $s7   L4!L47L9L9+B)ML>2M>MMc                f    \         P                  ! V 4      V n        R V n        R V n        / V n        R # r(   )r   ConstantInference_constsgenerator_infovariable_lifetimeblock_entry_varsr5   s   &r   r7  $FunctionIR._reset_analysis_variables  s.    //5 #!% "r   Nc                4   V\        V4      ,          p\        P                  ! V 4      pWn        Vf   VP                  MTVn        V'       d   RVn        Ve   W'n        Ve   W7n        VP                  4        VP                  P                  4       Vn        V# )z
Derive a new function IR from this one, using the given blocks,
and possibly modifying the argument count and generator flag.

Post-processing will have to be run again on the new IR.
F)
rN  r  r2  r   r3  r4  r5  r7  r0   derive)r   r2  r4  r5  force_non_generatorr   
firstblocknew_irs   &&&&&&  r   rj  FunctionIR.derive  s}     CK(
4'*{Z^^
"'F ( (((*..0r   c                   \         P                   ! V 4      p/ p/ pV P                  P                  4        F@  w  rEVP                  4       pWbV&   WPP                  9   g   K+  V P                  V,          W6&   KB  	  W!n        W1n        V# r(   )r  r2  r.  rg  )r   rm  r2  rg  rS  r  	new_blocks   &      r   r  FunctionIR.copy  sw    4 KK--/LE

I%5M---.2.C.CE.J +	 0
 "2r   c                (    V P                   V,          # )zN
Return a set of variable names possibly alive at the beginning of
the block.
)rg  r  s   &&r   get_block_entry_varsFunctionIR.get_block_entry_vars  s    
 $$U++r   c                |    \        V\        4      '       d   VP                  pV P                  P	                  V4      # )z6
Try to infer the constant value of a given variable.
)r   r   r   rd  r  r   s   &&r   r  FunctionIR.infer_constant	  s/     dC  99D||**400r   c                X   Tp \        V\        4      '       d   TpVP                  pM'\        V\        4      '       d   TpTpMV'       d   V# T# V P                  V,          p\        V4      ^ 8X  d   \        RV: 24      h\        V4      ^8  d   \        RV: 24      hV^ ,          pK  )z
Get the definition site for the given variable name or instance.
A Expr instance is returned by default, but if lhs_only is set
to True, the left-hand-side variable is returned instead.
zno definition for zmore than one definition for )r   r   r   ra   r6  r   r   )r   r  lhs_onlyr  r   defss   &&&   r   get_definitionFunctionIR.get_definition  s     %%%zzE3''&s1E1$$T*D4yA~"& ) * *4y1}"& ) * *GEr   c                   Vf   V P                   P                  4       pMU\        V\        4      '       d   V P                   V,          .pM*\	        V4       Uu. uF  q@P                   V,          NK  	  pp\        V\
        4      '       g   Q hV F@  pVP                  \        4       F$  pVP                  V8X  g   K  VP                  u u # 	  KB  	  \        RV,          4      hu upi )zu
Finds the assignee for a given RHS value. If in_blocks is given the
search will be limited to the specified blocks.
z!Could not find an assignee for %s)r2  r   r   rP  r   r   r  r1  r  r(  rY   )r   	rhs_value	in_blocksr2  blkassigns   &&&   r   get_assigneeFunctionIR.get_assignee*  s    
 [['')F	3''kk),-F26y/B/3kk#&&/FB)[1111C..0<<9,!==( 1 
 <yHII Cs   C%c           
        VR J pT;'       g    \        4       p\        V P                  P                  4       4       F)  w  r4\	        RV: R2VR7       VP                  VR7       K+  	  V'       dv   VP                  4       p\        P                  '       dC    ^ R I	p^ RI	H
p ^ RIHp ^ RIHp	 ^ RIHp
 \	        V! WX! 4       V
! V	! 4       R7      4      4       R # \	        V4       R # R #   \          d    R	p\#        T4      hi ; i)
Nzlabel r9   r  )ro   )NumbaIRLexer)by_colorscheme)Terminal256Formatter)stylez0Please install pygments to see highlighted dumps)r   r  r2  r.  r  r  rP  r	   HIGHLIGHT_DUMPSpygmentsro   numba.misc.dump_styler  r  pygments.formattersr  ImportErrorrY   )r   r  nofileoffsetr  textr  ro   lexerr  r  rR  s   &&          r   r  FunctionIR.dump@  s    !!xz#DKK$5$5$78MF)5JJDJ! 9 ==?D%%%2#
 3KDH)D%'3G,.40 1 2 d! 
 # *LC$S/)*s   C( (Dc                    \        4       ;_uu_ 4       pV P                  VR 7       VP                  4       uuRRR4       #   + '       g   i     R# ; i)r  N)r   r  rP  )r   sbs   & r   dump_to_stringFunctionIR.dump_to_stringZ  s.    ZZ2II2I;;= ZZZs   "A  A	c           	     f   T;'       g    \         P                  pV P                  p\        R \	        VP
                  4      VR7       \	        VP                  P                  4       4       FB  w  r4\        RV\	        VP                  4      \	        VP                  4      3,          VR7       KD  	  R# )zgenerator state variables:r  z>yield point #%d: live variables = %s, weak live variables = %sN)
r   r  re  r  r  
state_varsyield_pointsr.  	live_varsweak_live_vars)r   r  giry   yps   &&   r   dump_generator_infoFunctionIR.dump_generator_info_  s    !!szz  *F2==,AM 5 5 78IERF2<<0&9J9J2KLM 9r   c           	         ^ RI pTP                  RP                  TT P                  P
                  4      R7      pT P                  P                  4        F  w  rV\        4       ;_uu_ 4       pTP                  T4       TP                  4       pRRR4       T'       dv   RP                  XP                  4        U	u. uF  p	RP                  T	4      NK  	  up	4      pRP                  T4      T,           pTP                  \        T4      TRR	7       K  R
P                  T4      pTP                  \        T4      TRR	7       K  	  T P                  P                  4        FJ  w  rTP                  P!                  4        F'  pTP#                  \        T
4      \        T4      4       K)  	  KL  	  T#   \         d    \        R4      hi ; i  + '       g   i     ELD; iu up	i )zRender the CFG of the IR with GraphViz DOT via the
``graphviz`` python binding.

Returns
-------
g : graphviz.Digraph
    Use `g.view()` to open the graph in the default PDF application.
NzcThe feature requires `graphviz` but it is not available. Please install with `pip install graphviz`z{}{}.dot)r   r]   z  {}\lz
block {}\lrect)rS  shapez{}\lcircle)graphvizr  DigraphrR  r0   unique_namer2  r.  r   r  rP  rr   rQ  nodera   r	  r   edge)r   filename_prefix
include_irgvgr  r  r  rS  rC   srcdsts   &&&         r   
render_dotFunctionIR.render_doth  s   	! JJ&&((  
 kk'')FAr  272B2B2DE2DQY%%a(2DE &,,Q/%7s1vU&9q)s1vU(; * ))+HC~~113s3xS* 4 , ;  	= 	 
 Fs   F0 -"G
<G
0G
G)rd  r6  r4  r5  rg  r2  r0   re  r3  r   rf  )NNFNr   r(   )numba_irT)r   r   r   r   r   r;  r`  r7  rj  r  rs  r  rz  r  r  r  r  r  r   r   r   s   @r   r0  r0  u  sR     )?B#0,12J,4!
) )r   r0  c                   0   a  ] tR tRt o RtR tR tRtV tR# )UndefinedTypei  Nc                `    V P                   pVe   V# \        P                  V 4      pWn         V# r(   )
_singletonobject__new__)r/   objs   & r   r  UndefinedType.__new__  s-    nn?J..%C N
r   c                    R # )	Undefinedr   r5   s   &r   r6   UndefinedType.__repr__  r]  r   r   )	r   r   r   r   r  r  r6   r   r   r   s   @r   r  r    s     J r   r  )Mcollectionsr   r  r_   rW   rQ   r   r   r   rX  typesr   r   	functoolsr   ior   
numba.corer   r	   numba.core.utilsr
   r   r   r   numba.core.errorsr   r   r   r   r   	termcolorrn   r  r   unknown_locr   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r1  r7  rC  rK  rW  r_  rg  rw  r  r   r  r  r  r*  r0  r  r  r   r   r   <module>r     s   #   	   	 
  3 $  %Q QJ J  
x4& x4x $a+ V  *   0&&V &&R& { B24 2. . q@4 q@hEd E&ED E*8d 8"Ed E
8d 
8@t @%$ %J  * :: :/t /@T @,Ad A,Z &: "+Z +(5T 5 BD B$D % %6t @
k @ 
 
,F F&% + %>8
k 8vpD pDfe0 e0P0! 00! 0\ \@	& " O	r   