o
    tBht                     @  s  d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd
lEmFZF ddlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP dddZQd ddZRd!ddZSG dd de9d ZTdS )"z+Code generation for native function bodies.    )annotations)Final)frequently_executed_blocks)DEBUG_ERRORSEmitterTracebackAndGotoHandler)MODULE_PREFIXNATIVE_PREFIX
REG_PREFIXSTATIC_PREFIXTYPE_PREFIX)ClassIR)FUNC_CLASSMETHODFUNC_STATICMETHODFuncDeclFuncIR
all_values)+	ERR_FALSENAMESPACE_MODULENAMESPACE_STATICNAMESPACE_TYPEAssignAssignMulti
BasicBlockBoxBranchCallCallCCastComparisonOpDecRefExtendGetAttrGetElementPtrGotoIncRef
InitStaticIntegerIntOp	KeepAliveLoadAddressLoadErrorValue
LoadGlobalLoadLiteralLoadMem
LoadStatic
MethodCallOp	OpVisitorRaiseStandardErrorRegisterReturnSetAttrSetMemTruncateTupleGetTupleSetUnboxUnreachableValue)generate_names_for_ir)	RArrayRStructRTupleRTypeis_int32_rprimitiveis_int64_rprimitiveis_int_rprimitiveis_pointer_rprimitive	is_taggedfnr   emitterr   returnstrc                   s:   d  fdd| jD pd} | j}| d| dS )N, c                 3  s    | ]	}  |jV  qd S N)ctypetype.0argrI    m/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypyc/codegen/emitfunc.py	<genexpr>H   s    z'native_function_type.<locals>.<genexpr>voidz (*)())joinargsrN   ret_type)rH   rI   rZ   retrT   rS   rU   native_function_typeG   s   r]   r   c                 C  s\   g }| j jD ]}|||j t |j  qdj|| j j|	| d
|p+ddS )Nz{ret_type}{name}({args})rL   rW   )r[   namerZ   )sigrZ   appendctype_spacedrO   r
   r^   formatr[   native_function_namerY   )rH   rI   rZ   rR   rT   rT   rU   native_function_headerM   s   "rd   source_pathmodule_nameNonec              	   C  s  t |j}t| j| j}t |j|}t||||}|t| j| d |	  t
| j| jD ]1}t|jtr>||j t|jtrEq0|| jv rKq0||j}	d}
|dj|	t|| |
d q0| j}t|D ]\}}||_qit| jd }tt|D ]I}|| }||v|_d }|d t|k r||d  }|| ||_|j}||_d|_|jt|k r||j | | jd7  _|jt|k sq~|d || || d S )Nz { z{ctype}{prefix}{name}{init};)rN   prefixr^   initr      })r   contextr>   arg_regsblocksFunctionEmitterVisitor	emit_linerd   declindentr   
isinstancerO   rA   declare_tuple_structr?   ra   rb   r
   	enumeratelabelr   rangelenrare
emit_label
next_blockopsop_indexacceptemit_from_emitter)rH   rI   re   rf   declarationsnamesbodyvisitorrrN   rj   ro   iblockcommonr|   r}   rT   rT   rU   generate_native_functionY   sV   





r   c                   @  s.  e Zd ZU dd	d
ZdddZdddZdddZdddZdddZdddZ	dddZ
dd!d"Zdd$d%Zdd*d+Zdd-d.Zdd0d1Zdd3d4ZeeeeeeiZd5ed6< dd8d9Zdd;d<Zdd>d?ZddBdCZddEdFZddHdIZddKdLZddNdOZ ddQdRZ!ddTdUZ"ddWdXZ#ddZd[Z$dd]d^Z%dd`daZ&ddcddZ'ddfdgZ(ddidjZ)ddldmZ*ddodpZ+ddrdsZ,ddudvZ-ddxdyZ.dd{d|Z/dd~dZ0dddZ1dddZ2dddZ3dddZ4dddZ5dddZ6dddZ7dddZ8dddZ9dddZ:dddZ;dddZ<dddZ=dddZ>dS )rp   rI   r   r   re   rK   rf   rJ   rg   c                 C  sF   || _ |j| _|| _|| _|| _|jj| _d| _d | _g | _	d| _
d S )NFr   )rI   r   r   re   rf   rm   literalsrz   r|   r}   r~   )selfrI   r   re   rf   rT   rT   rU   __init__   s   

zFunctionEmitterVisitor.__init__c                 C  s
   | j  S rM   )rI   	temp_namer   rT   rT   rU   r      s   
z FunctionEmitterVisitor.temp_nameopr$   c                 C  s*   |j | jur| d|  |j   d S d S )Ngoto %s;)rw   r|   rq   r   r   rT   rT   rU   
visit_goto   s   z!FunctionEmitterVisitor.visit_gotor   c                 C  s   |j |j}}|jtjkr4t|jtr4|js4|j}|j	j
|jr4|| jur2| d| | d d S |j}d}|| ju rM|jd u rM||}}| }d}|rQdnd}d}|jtjkrh| |j}	| |	 }n:|jtjkr|jj}
|rvdnd}t|
tr| j|
| |j| j|}n| |j d	| d	| |
 }nJ d
|jd us|jr|sd| d}nd| d}|| ju r|jd u r| d| d| | d d S | d| d | | | d| | d d S | d| d | | | d| | dd| |  d S )Nzgoto ;FT!rh   !=== zInvalid branchz	unlikely(rX   zlikely(zif (z) goto z) {r   rl   z} elsez    goto %s;)truefalser   r   IS_ERRORrt   valuer"   negated
class_typeclass_iris_always_definedattrr|   rq   rw   traceback_entryBOOLregrO   rA   rI   tuple_undefined_check_condc_error_valuerz   emit_traceback
emit_lines)r   r   r   r   op2r   negated_rarenegcondexpr_resulttypcomparerT   rT   rU   visit_branch   sT   


$

"

z#FunctionEmitterVisitor.visit_branchr5   c                 C  s   |  |j}| d|  d S )Nz
return %s;)r   r   rq   )r   r   	value_strrT   rT   rU   visit_return   s   z#FunctionEmitterVisitor.visit_returnr:   c              
   C  s   |  |}|j}| j| t|jdkr| | d nt|jD ]\}}| | d| d|  | d q#| || d S )Nr   z.empty_struct_error_flag = 0;.f = r   )	r   
tuple_typerI   ru   ry   itemsrq   rv   emit_inc_ref)r   r   destr   r   itemrT   rT   rU   visit_tuple_set   s   
$z&FunctionEmitterVisitor.visit_tuple_setr   c                 C  s\   |  |j}|  |j}||kr,|jjjr|jjjsd| }| | d| d d S d S )Nz(void *)r   r   )r   r   srcrO   
is_unboxedrq   r   r   r   r   rT   rT   rU   visit_assign   s   
z#FunctionEmitterVisitor.visit_assignr   c                   sb   |j j}t|tsJ  |j } d j|j|t	|j
d fdd|j
D f  d S )Nz%s%s[%d] = {%s};rL   c                 3      | ]}  |V  qd S rM   r   )rQ   sr   rT   rU   rV   
      z<FunctionEmitterVisitor.visit_assign_multi.<locals>.<genexpr>)r   rO   rt   r?   r   rq   rI   ra   	item_typery   r   rY   )r   r   r   r   rT   r   rU   visit_assign_multi   s   z)FunctionEmitterVisitor.visit_assign_multir+   c              	     s   t |jtr6 fdd|jjD }  } d |j|d|   	| d| d d S   	| d 
|j d d S )Nc                      g | ]}  |qS rT   )c_undefined_value)rQ   r   r   rT   rU   
<listcomp>      zAFunctionEmitterVisitor.visit_load_error_value.<locals>.<listcomp>z{} {} = {{ {} }};rL   r   r   )rt   rO   rA   typesr   rq   rb   rN   rY   r   r   )r   r   valuestmprT   r   rU   visit_load_error_value  s   " (z-FunctionEmitterVisitor.visit_load_error_valuer-   c                   s   | j |j}t|j t fdddD sd  }nd}t|js2| d| |||f  d S | d| |||f  d S )Nc                 3      | ]}| v V  qd S rM   rT   rQ   xr   rT   rU   rV         z<FunctionEmitterVisitor.visit_load_literal.<locals>.<genexpr>z/*z*/ 	 /* %s */rh   z%s = CPyStatics[%d];%sz%%s = (CPyTagged)CPyStatics[%d] | 1;%s)	r   literal_indexr   repranyrE   rO   rq   r   )r   r   indexannrT   r   rU   visit_load_literal  s   


z)FunctionEmitterVisitor.visit_load_literalobjGetAttr | SetAttrdecl_clr   c                 C  s  d|j | jj d}|jr_|j jjr_t|j|j	}| j
 }| jd| d | jd|d| j|d| | d| d| |j |j	 d}d| d	| d
| dS |j jjrt|jriJ d|| jj d}d| | d| j	|j	 S )a  Generate attribute accessor for normal (non-property) access.

        This either has a form like obj->attr_name for attributes defined in non-trait
        classes, and *(obj + attr_offset) for attributes defined by traits. We also
        insert all necessary C casts here.
        ( *)zsize_t r   z{} = {};zCPy_FindAttrOffset({}, {}, {})z	)->vtable*z	((char *)z + rX   z)->)r   struct_namerI   r   is_traitr   list
attributesr   r   r   r   rq   rb   type_struct_namerN   	attr_type)r   r   r   r   casttrait_attr_indexoffset	attr_castrT   rT   rU   get_attr_expr#  s*   




z$FunctionEmitterVisitor.get_attr_exprr"   c                 C  s  |  |}|  |j}|j}|j}||j\}}||jrL|jr$dnd}| d|||| j	
|j||j|| j| ||j|jf  d S | |||}	| j	| d|	 d ||j}
d }|
s| j	j||ddd |  }|d ur|j|u r|jtjkr|jd ur|js| ||j|j | d	| |j  |}| j	d
 |sd}| j	d|t|jt|j |j r|j!s|s|
s| j	d | j	"|| |r|j#| j$ur| d	| |j#  |  j%d7  _%d S |
s| j	d
 d S d S )N_TRAITrh   z1%s = CPY_GET_ATTR%s(%s, %s, %d, %s, %s); /* %s */r   r   r   T)unlikelyr   rl   PyExc_AttributeErrorz4PyErr_SetString({}, "attribute {} of {} undefined");z} else {rk   )&r   r   r   r   attr_detailsr   
get_methodr   rq   rI   r   getter_indexr   r   rN   r   r   r   emit_undefined_attr_checknext_branchr   r   r   r   r   r   emit_attribute_errorr^   rw   r   rb   r   is_refcountedis_borrowedr   r   r|   r~   )r   r   r   r   rtypecl
attr_rtyper   version	attr_expralways_definedmerged_branchbranch	exc_classrT   rT   rU   visit_get_attrG  sn   




z%FunctionEmitterVisitor.visit_get_attrBranch | Nonec                 C  s6   | j d t| jk r| j| j d  }t|tr|S d S )Nrk   )r~   ry   r}   rt   r   )r   next_oprT   rT   rU   r     s
   
z"FunctionEmitterVisitor.next_branchr6   c                 C  sn  |j tkr
| |}| |j}| |j}|j}|j}||j\}}|	|jrm|j
s2|j tks?J d|j|j
|j |f |jrDdnd}	| d||	|| j|j||j||| j| ||j|jf	  d S | |||}
|j
s|jr||j}|s| j||
d | j|
| |s| jd | j|
 d| d |j tkr| j| d	 d S d S )
Nz%s %d %d %sr   rh   z5%s = CPY_SET_ATTR%s(%s, %s, %d, %s, %s, %s); /* %s */r   rl   r   r   z = 1;)
error_kindr   r   r   r   r   r   r   r   r   is_initr   rq   rI   r   setter_indexr   r   rN   r   r   r   r   r   emit_dec_ref)r   r   r   r   r   r   r   r   r   r   r   r   rT   rT   rU   visit_set_attr  sR   




z%FunctionEmitterVisitor.visit_set_attrr   
PREFIX_MAPr/   c                   s   |  |}| j|j }| j|j|j|}|jtkrd| }d}|jr7t	|j t
 fdddD s7d  }| | d| d|  d S )	Nz(PyObject *)%srh   c                 3  r   rM   rT   r   r   rT   rU   rV     r   z;FunctionEmitterVisitor.visit_load_static.<locals>.<genexpr>r   r   r   r   )r   r  	namespacerI   static_name
identifierrf   r   r   r   r   rq   )r   r   r   ri   r^   r   rT   r   rU   visit_load_static  s   


z(FunctionEmitterVisitor.visit_load_staticr&   c                 C  sh   |  |j}| j|j }| j|j|j|}|jtkrd| }| 	| d| d | 
||jj d S )Nz(PyTypeObject *)%sr   r   )r   r   r  r  rI   r	  r
  rf   r   rq   r   rO   )r   r   r   ri   r^   rT   rT   rU   visit_init_static  s   
z(FunctionEmitterVisitor.visit_init_staticr9   c                 C  sF   |  |}|  |j}| | d| d|j d | ||j d S )Nr   r   r   )r   r   rq   r   r   rO   r   rT   rT   rU   visit_tuple_get  s   
z&FunctionEmitterVisitor.visit_tuple_getr   r=   c                 C  s   |j s
| |d S dS )Nr   rh   )is_voidr   )r   r   rT   rT   rU   get_dest_assign  s   z&FunctionEmitterVisitor.get_dest_assignr   c              	     sf     |}d fdd|jD } j|j}|j j} | | t	 | d| d dS )zCall native function.rL   c                 3  r   rM   r   rP   r   rT   rU   rV     r   z4FunctionEmitterVisitor.visit_call.<locals>.<genexpr>r   );N)
r  rY   rZ   rI   get_group_prefixrH   cnamer   rq   r	   )r   r   r   rZ   libr  rT   r   rU   
visit_call  s
   
&z!FunctionEmitterVisitor.visit_callr0   c                   s6    |} |j}|j}|j}|j}|j|}|dus J ||}|jj	t
kr-g n|jj	tkr:d| dgn|g}	d|	 fdd|jD  }
t| j}|jjrXdnd}|rz j|j} | | t | j d	|
 d
 dS ||} d||| j|j|| j||
|j	 dS )zCall native method.Nz(PyObject *)Py_TYPE(rX   rL   c                   r   rT   r   rP   r   rT   rU   r     r   z<FunctionEmitterVisitor.visit_method_call.<locals>.<listcomp>r   rh   r   r  z4{}CPY_GET_METHOD{}({}, {}, {}, {}, {})({}); /* {} */)r  r   r   receiver_typer   methodr   is_method_finalrr   kindr   r   rY   rZ   r]   rI   r   r  rq   r	   r  r   method_indexrb   r   r   )r   r   r   r   r   r   r^   r  	is_directobj_argsrZ   mtyper   r  
method_idxrT   r   rU   visit_method_call  sD   

.

z(FunctionEmitterVisitor.visit_method_callr%   c                 C  s    |  |j}| ||jj d S rM   )r   r   r   rO   r   r   r   rT   rT   rU   visit_inc_ref  s   z$FunctionEmitterVisitor.visit_inc_refr    c                 C  s&   |  |j}| j||jj|jd d S )N)is_xdec)r   r   r  rO   r!  r  rT   rT   rU   visit_dec_ref   s   z$FunctionEmitterVisitor.visit_dec_refr   c                 C  s*   | j j| |j| ||jjdd d S )NT)
can_borrow)rI   emit_boxr   r   rO   r   rT   rT   rU   	visit_box$  s   *z FunctionEmitterVisitor.visit_boxr   c                 C  s   |   }d }|d ur8|j|u r8|jtjkr8|jd ur8|js8|j| ju r8t	| 
|j| j| j|j}|  jd7  _| jj| |j| ||j|jj|d d S )Nrk   )src_typeerror)r   r   r   r   r   r   r   r   r|   r   rw   r   re   rf   r~   rI   	emit_castr   r   rO   )r   r   r   handlerrT   rT   rU   
visit_cast'  s&   



z!FunctionEmitterVisitor.visit_castr;   c                 C  s$   | j | |j| ||j d S rM   )rI   
emit_unboxr   r   rO   r   rT   rT   rU   visit_unbox@  s   $z"FunctionEmitterVisitor.visit_unboxr<   c                 C  s   | j d d S )NzCPy_Unreachable();rI   rq   r   rT   rT   rU   visit_unreachableC     z(FunctionEmitterVisitor.visit_unreachabler3   c                 C  s   |j d ur<t|j tr!|j dd}| jd|j d| d n&t|j tr8| jd|j| j	|j  nJ d| jd	|j d
 | j| 	| d d S )N"z\"zPyErr_SetString(PyExc_z, "z");zPyErr_SetObject(PyExc_{}, {});Fz)op value type must be either str or ValuezPyErr_SetNone(PyExc_r  z = 0;)
r   rt   rK   replacerI   rq   
class_namer=   rb   r   )r   r   messagerT   rT   rU   visit_raise_standard_errorF  s   
z1FunctionEmitterVisitor.visit_raise_standard_errorr   c                   sR   |j rd}n |}d fdd|jD } j| |j d| d d S )Nrh   rL   c                 3  r   rM   r   rP   r   rT   rU   rV   ]  r   z6FunctionEmitterVisitor.visit_call_c.<locals>.<genexpr>r   r  )r  r  rY   rZ   rI   rq   function_name)r   r   r   rZ   rT   r   rU   visit_call_cX  s
   
"z#FunctionEmitterVisitor.visit_call_cr8   c                 C  s0   |  |}|  |j}| | d| d d S Nr   r   )r   r   rq   )r   r   r   r   rT   rT   rU   visit_truncate`  s   
z%FunctionEmitterVisitor.visit_truncater!   c                 C  sX   |  |}|  |j}|jr| |jj}n| |jj}| | d| | d d S r7  )r   r   signedemit_signed_int_castrO   emit_unsigned_int_castrq   )r   r   r   r   src_castrT   rT   rU   visit_extendf  s   
z#FunctionEmitterVisitor.visit_extendr,   c                   s\   |  |}d}|jrt|j t fdddD sd  }| | d|j d|  d S )Nrh   c                 3  r   rM   rT   r   r   rT   rU   rV   t  r   z;FunctionEmitterVisitor.visit_load_global.<locals>.<genexpr>r   r   r   r   )r   r   r   r   rq   r
  )r   r   r   r   rT   r   rU   visit_load_globalo  s   

 z(FunctionEmitterVisitor.visit_load_globalr(   c              
   C  s   |  |}|  |j}|  |j}|jtjkr)| |jj| }| |jj| }| | d| d|j	|j  d| d d S )Nr   r   r   )
r   lhsrhsr   r(   RIGHT_SHIFTr:  rO   rq   op_str)r   r   r   r?  r@  rT   rT   rU   visit_int_opx  s   
.z#FunctionEmitterVisitor.visit_int_opr   c                 C  s  |  |}|  |j}|  |j}d}d}|jtjtjtjtjfv r1| 	|jj
}| 	|jj
}nC|jtjtjtjtjfv rM| |jj
}| |jj
}n't|jtra|jjdk ra| 	|jj
}nt|jtrt|jjdk rt| 	|jj
}| | d| | d|j|j  d| | d
 d S )Nrh   r   r   r   r   )r   r?  r@  r   r   SLTSGTSLESGEr:  rO   ULTUGTULEUGEr;  rt   r'   r   rq   rB  )r   r   r   r?  r@  lhs_castrhs_castrT   rT   rU   visit_comparison_op  s    
6z*FunctionEmitterVisitor.visit_comparison_opr.   c                 C  sB   |  |}|  |j}| |j}| | d| d| d d S )Nz = *(r   r   )r   r   rN   rO   rq   )r   r   r   r   rO   rT   rT   rU   visit_load_mem  s   
 z%FunctionEmitterVisitor.visit_load_memr7   c              	   C  sR   |  |j}|  |j}| |j}||kr'| d| d| d| d d S d S )Nz*(r   r   r   )r   r   r   rN   	dest_typerq   )r   r   r   r   rP  rT   rT   rU   visit_set_mem  s   "z$FunctionEmitterVisitor.visit_set_memr#   c              	   C  sb   |  |}|  |j}t|jtsJ |j|jjv sJ d| d||j	j
|jj||j d S )NzInvalid field name.z{} = ({})&(({} *){})->{};)r   r   rt   r&  r@   fieldr   rq   rb   rO   _ctyper^   r   rT   rT   rU   visit_get_element_ptr  s   
z,FunctionEmitterVisitor.visit_get_element_ptrr*   c                 C  sP   |j }| |}t|jtr| |jn|j}| | d|j d| d d S )Nz = (z)&r   )rO   r   rt   r   r4   rq   rS  )r   r   r   r   r   rT   rT   rU   visit_load_address  s   
"z)FunctionEmitterVisitor.visit_load_addressr)   c                 C  s   d S rM   rT   r   rT   rT   rU   visit_keep_alive  s   z'FunctionEmitterVisitor.visit_keep_aliverw   r   c                 C     | j |S rM   )rI   rw   )r   rw   rT   rT   rU   rw        zFunctionEmitterVisitor.labelr   c                 C  s   t |tr=|j}|dkrt|jrdS t|}|dkr+|dkr%|d7 }|S |d7 }|S |dkr3d}|S |d	kr;|d7 }|S | j|S )
Nr   NULLl        l            ULLLLl         z(-9223372036854775807LL - 1)i   )rt   r'   r   rF   rO   rK   rI   r   )r   r   valr   rT   rT   rU   r     s$   
zFunctionEmitterVisitor.regr   rB   c                 C  rW  rM   )rI   rN   r   r   rT   rT   rU   rN     rX  zFunctionEmitterVisitor.ctypec                 C  rW  rM   )rI   r   r]  rT   rT   rU   r     rX  z$FunctionEmitterVisitor.c_error_valuec                 C  rW  rM   )rI   r   r]  rT   rT   rU   r     rX  z(FunctionEmitterVisitor.c_undefined_valuelinec                 C     | j | d S rM   r-  r   r^  rT   rT   rU   rq     r/  z FunctionEmitterVisitor.emit_linelinesc                 G  s   | j j|  d S rM   )rI   r   )r   ra  rT   rT   rU   r     r/  z!FunctionEmitterVisitor.emit_linesc                 C  s   | j j||| jd d S )N)rz   )rI   r   rz   )r   r   r   rT   rT   rU   r     s   z#FunctionEmitterVisitor.emit_inc_refr!  boolc                 C  s   | j j|||| jd d S )N)r!  rz   )rI   r  rz   )r   r   r   r!  rT   rT   rU   r    s   z#FunctionEmitterVisitor.emit_dec_refc                 C  r_  rM   )r   rq   r`  rT   rT   rU   emit_declaration  r/  z'FunctionEmitterVisitor.emit_declarationc                 C  s(   |j d ur| j| j| j|j  d S d S rM   )r   rI   r   re   rf   r   rT   rT   rU   r     s   
z%FunctionEmitterVisitor.emit_tracebackr2  r   c              	   C  sd   |j d usJ | jd| j}| d| jdd|j d |||j d |f  tr0| d d S d S )Nglobalsz3CPy_AttributeError("%s", "%s", "%s", "%s", %d, %s);\z\\r   rk   z7assert(PyErr_Occurred() != NULL && "failure w/o err!");)r   rI   r	  rf   rq   re   r1  r   )r   r   r2  r   globals_staticrT   rT   rU   r     s    z+FunctionEmitterVisitor.emit_attribute_errorrO   c                 C  s   t |rdS dS )Nz(Py_ssize_t)rh   )rG   r   rO   rT   rT   rU   r:    s   z+FunctionEmitterVisitor.emit_signed_int_castc                 C  s   t |rdS t|rdS dS )Nz
(uint32_t)z
(uint64_t)rh   )rC   rD   rg  rT   rT   rU   r;    s
   z-FunctionEmitterVisitor.emit_unsigned_int_castN)
rI   r   r   r   re   rK   rf   rK   rJ   rg   )rJ   rK   )r   r$   rJ   rg   )r   r   rJ   rg   )r   r5   rJ   rg   )r   r:   rJ   rg   )r   r   rJ   rg   )r   r   rJ   rg   )r   r+   rJ   rg   )r   r-   rJ   rg   )r   rK   r   r   r   r   rJ   rK   )r   r"   rJ   rg   )rJ   r   )r   r6   rJ   rg   )r   r/   rJ   rg   )r   r&   rJ   rg   )r   r9   rJ   rg   )r   r=   rJ   rK   )r   r   rJ   rg   )r   r0   rJ   rg   )r   r%   rJ   rg   )r   r    rJ   rg   )r   r   rJ   rg   )r   r   rJ   rg   )r   r;   rJ   rg   )r   r<   rJ   rg   )r   r3   rJ   rg   )r   r   rJ   rg   )r   r8   rJ   rg   )r   r!   rJ   rg   )r   r,   rJ   rg   )r   r(   rJ   rg   )r   r   rJ   rg   )r   r.   rJ   rg   )r   r7   rJ   rg   )r   r#   rJ   rg   )r   r*   rJ   rg   )r   r)   rJ   rg   )rw   r   rJ   rK   )r   r=   rJ   rK   )r   rB   rJ   rK   )r^  rK   rJ   rg   )ra  rK   rJ   rg   )r   rK   r   rB   rJ   rg   )r   rK   r   rB   r!  rb  rJ   rg   )r   r   r2  rK   r   rK   rJ   rg   )rO   rB   rJ   rK   )?__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r  __annotations__r  r  r  r  r  r  r   r"  r%  r*  r,  r.  r4  r6  r8  r=  r>  rC  rN  rO  rQ  rT  rU  rV  rw   r   rN   r   r   rq   r   r   r  rc  r   r   r:  r;  rT   rT   rT   rU   rp      sr   
 




8




	

$
?
1


	



/









	
	




	














rp   N)rH   r   rI   r   rJ   rK   )rH   r   rI   r   rJ   rK   )
rH   r   rI   r   re   rK   rf   rK   rJ   rg   )U__doc__
__future__r   typing_extensionsr   mypyc.analysis.blockfreqr   mypyc.codegen.emitr   r   r   mypyc.commonr   r	   r
   r   r   mypyc.ir.class_irr   mypyc.ir.func_irr   r   r   r   r   mypyc.ir.opsr   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   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   mypyc.ir.pprintr>   mypyc.ir.rtypesr?   r@   rA   rB   rC   rD   rE   rF   rG   r]   rd   r   rp   rT   rT   rT   rU   <module>   s    -,


9