
    GJjF                     B    d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	 d Z
y)    N)typesir)r   )convert_size_to_varmk_unique_varget_np_ufunc_typc	                 R   g }	d}
t         j                  }t        |t              rt	        |      dk(  r|d   }t        |||||	      }nt	        |      }
t        j                  |t        d      |      }|r;t         j                  j                  t         j                  |
      ||j                  <   |D cg c]  }t        |||||	       }}t        j                  j                  ||      }t        j                  |||      }|	j                  |       |}t         j                  j                  t         j                  |
      }t!        |d      r|j#                  | ||||||||||	      S t        j                  |t        d      |      }|r0t         j$                  j'                  t(              ||j                  <   t        j*                  dt(        |      }t        j                  |||      }t        j                  j-                  |d|      }t        j                  |t        d      |      }|r't/        t(        j0                  |       ||j                  <   t        j                  |||      }t3        |      }t        j                  |t        d	      |      }|r,t         j4                  j7                  |      ||j                  <   t        |t8        j:                  t8        j<                  f      r=|j>                  d
k7  r.t        j@                  ||      }t        j                  |||      }n?|dk(  rd}t        j                  j-                  |||      }t        j                  |||      }t        j                  jC                  |||gd|      }|rl||j                     jE                  | |t         j4                  j7                  |      gi       }|jF                  dk(  r|jI                  d      n||_%        |||<   |jF                  dk(  rd|jI                  d      }t        j                  |t        d      |      }|r|jI                  d      ||j                  <   t        j                  |||      } t        j                  j-                  |d|      }!t        j                  |t        d      |      }"|r't/        t(        jL                  |       ||"j                  <   t        j                  |!|"|      }#t        j                  jC                  |"|gd|      }$|r$||"j                     jE                  | |gi       ||$<   t        j                  |$||      }%|	jO                  |||| |#|%g       |	S t        j                  |||      }&|	jO                  ||||&g       |	S c c}w )zgenerate an array allocation with np.empty() and return list of nodes.
    size_var can be an int variable or tuple of int variables.
    lhs_typ is the type of the array being allocated.
       r   z
$tuple_var__allocate__z	$np_g_varnpemptyz$empty_attr_attrz$np_typ_var boolbool_ FC)layoutz$empty_c_varasfortranarrayz$asfortran_array_attr)(r   intp
isinstancetuplelenr   r   Varr   
containersUniTuplenameExprbuild_tupleAssignappendhasattrr
   miscModulenumpyGlobalgetattrr   r   str	functionsNumberClass	npy_types
NPDatetimeNPTimedeltaunitConstcallget_call_typer   copy_return_typer   extend)'	typingctxtypemap	calltypeslhssize_vardtypescopeloclhs_typoutndimssize_typ	tuple_vars	new_sizes
tuple_calltuple_assigng_np_varg_npg_np_assignempty_attr_callattr_varattr_assign	dtype_strtyp_vartypename_consttyp_var_assignnp_typ_getattr
alloc_callcacempty_c_typempty_c_varempty_c_assignasfortranarray_attr_callafa_attr_varafa_attr_assignasfortranarray_callasfortranarray_assignalloc_assigns'                                          `/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/numba/parfors/ir_utils.pymk_allocr\   
   s    CEzzH(E"x=A{H*8WeS#NH MEumL&A3GI*/*:*:*C*CJJ+'	' #+,"*Q -QSI"*  ,,,Y<J99ZC@LJJ|$ H''00UCHw'##
 	
 vve];7=H!&!2!25!999T5#&D))D(C0Kggooh=Ovve]+=>DH!1%++y!I))OXs;KE
IffUM-8#>G % ; ;E B
 	59//1F1FGHJJ")S1>7C@I9cB>7C@h7(;REJhmm$22%//"="=e"DErK  '~~4 $LLL4!( 	 !$	*~~ll#l.ffUM.$A3G(/C(@GK$$%:{C@ $&77??8=M36$8 vve]3J%K!# !5!5yA L%%&))$<lCP ggll<+CP))*88}b2 )* !#		*=sC H

Knn#%:< 	= J yyS#6

KnlKLJC,s   5V$)r$   
numba.corer   r   numba.npr*   numba.core.ir_utilsr   r   r   r\   r       r[   <module>ra      s       '3 3vr`   