U
    •Ê¹jg  ã                   @   sÎ  U d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	 d dl
m  mZ d dl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 d dlmZ e ¡ Zeje d< ee	eeef  e!dœdd	„Z"e#d
ƒZ$e	eef e!dœdd„Z%e	eeef eee!e&f  dœdd„Z'e#dƒZ(e#dƒZ)e&e!dœdd„Z*e&e!dœdd„Z+e#dƒZ,e#dƒZ-e&e.dœdd„Z/dZ0e  1e0¡Z2ee&e&f e d< e&e&dœdd„Z3e	eeef e.e&e&d œd!d"„Z4ee.e&d#œd$d%„Z5ee.e&d#œd&d'„Z6ej7d(ej.d)ej8d*ej&d+ej9d)ej:d)ej!d,iZ;eeee&ee& f  d-œd.d/„Z<ee&d-œd0d1„Z=eee&d2œd3d4„Z>eee&d2œd5d6„Z?eee&d2œd7d8„Z@eee&d2œd9d:„ZAeee&d2œd;d<„ZBe#d=ƒZCee!d-œd>d?„ZDee&dœd@dA„ZEG dBdC„ dCƒZFG dDdE„ dEƒZGdS )Fé    N)ÚDictÚListÚOptionalÚSequenceÚTupleÚUnion)Únative_function_manager)ÚArgumentÚBackendIndexÚBaseTyÚBaseTypeÚFunctionSchemaÚNativeFunctionsGroupÚNativeFunctionsViewGroupÚOptionalTypeÚSelfArgumentÚTensorOptionsArgumentsÚType)ÚconfigÚlogger)Ú	argumentsÚreturnc                 C   s6   | D ],}t |dd ƒ}|sqt |ddƒ}|r dS qdS )NÚ
annotationÚ	alias_set© TF)Úgetattr)r   Úargr   r   r   r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchgen/static_runtime/generator.pyÚ	has_alias   s    r   )®Zsparse_sampled_addmmZhspmmZlinalg_svdvalsZsspaddmmZcoalesceZ_indicesÚindicesZ_valuesÚvaluesZcrow_indicesZcol_indicesZfloor_divideÚgerZconj_physicalZbinary_cross_entropyZarccoshZcholeskyZlu_solveZlinalg_choleskyZlinalg_householder_productZlinalg_ldl_solveZ_compute_linear_combinationZ
_make_dualZ
_fw_primalZ_index_reduceZ!_new_zeros_with_same_feature_metaZ_conj_physicalZ binary_cross_entropy_with_logitsZbincountZconv_tbcÚcopyÚ
_copy_fromZ_copy_from_and_resizeZcount_nonzeroZcudnn_affine_grid_generatorZ$cudnn_affine_grid_generator_backwardZcudnn_grid_samplerZ
diag_embedZ	embeddingZembedding_dense_backwardZ_embedding_bag_dense_backwardZ*_embedding_bag_per_sample_weights_backwardZgrid_sampler_2dZ_grid_sampler_2d_cpu_fallbackZgrid_sampler_3dÚisnanZmkldnn_linearZmedianZ	nanmedianZ_sparse_sparse_matmulZbatch_norm_backward_elemtZ_euclidean_distZpixel_shuffleZpixel_unshuffleZchannel_shuffleZ_reshape_nested_backwardZreluZpreluZceluZslice_scatterZselect_scatterZdiagonal_scatterÚsumZ_mkldnn_transposeZ_nested_tensor_from_maskZ_nested_from_paddedZ_nested_tensor_sizeZ&_nested_from_padded_and_nested_exampleZ_standard_gamma_gradZ_dirichlet_gradZnative_normZ_sparse_softmaxZ_sparse_softmax_backward_dataZ_sparse_log_softmaxZ!_sparse_log_softmax_backward_dataÚzeroZ_sparse_addmmZsparse_maskZ_sparse_mask_projectionZ	_to_denseZ	_coalesceZ
_coalescedZcopy_sparse_to_sparseZ	to_sparseZto_sparse_csrZto_sparse_cscZ	to_mkldnnZquantize_per_tensor_dynamicZquantize_per_channelZq_per_channel_scalesZq_per_channel_zero_pointsZint_reprZ"_make_per_channel_quantized_tensorÚsetZliftZ
lift_freshZlift_fresh_copyZmasked_scatterZ_masked_softmaxZ_masked_softmax_backwardÚputZindex_reduceÚtraceZ_cholesky_solve_helperÚdistÚmaxZ_torch_cuda_cu_linker_symbol_opZglu_jvpZglu_backward_jvpZhardswish_backwardZrrelu_with_noise_backwardZ#mkldnn_adaptive_avg_pool2d_backwardZ_adaptive_avg_pool2d_backwardZ_adaptive_avg_pool3d_backwardÚisinfZlinalg_lu_solveZlinalg_vecdotZlinalg_matrix_expZlinalg_eigvalshZ_test_warn_in_autogradZ%_test_autograd_multiple_dispatch_viewZ*_test_autograd_multiple_dispatch_view_copyZ_segment_reduceZ_segment_reduce_backwardZ_fw_primal_copyZ_make_dual_copyZview_as_real_copyZview_as_complex_copyZ
_conj_copyZ_neg_view_copyZdiagonal_copyZdetach_copyZsqueeze_copyZt_copyZunsqueeze_copyZ_indices_copyZ_values_copyZindices_copyZvalues_copyZcrow_indices_copyZcol_indices_copyZccol_indicesZccol_indices_copyZrow_indicesZrow_indices_copyZunfold_copyZ
alias_copyZ_triton_multi_head_attentionZspecial_airy_aiZspecial_bessel_j0Zspecial_bessel_j1Zspecial_bessel_y0Zspecial_bessel_y1Zspecial_chebyshev_polynomial_tZspecial_chebyshev_polynomial_uZspecial_chebyshev_polynomial_vZspecial_chebyshev_polynomial_wZspecial_hermite_polynomial_hZspecial_hermite_polynomial_heZspecial_laguerre_polynomial_lZspecial_legendre_polynomial_pZspecial_modified_bessel_i0Zspecial_modified_bessel_i1Zspecial_modified_bessel_k0Zspecial_modified_bessel_k1Z!special_scaled_modified_bessel_k0Z!special_scaled_modified_bessel_k1Z&special_shifted_chebyshev_polynomial_tZ&special_shifted_chebyshev_polynomial_uZ&special_shifted_chebyshev_polynomial_vZ&special_shifted_chebyshev_polynomial_wZspecial_spherical_bessel_j0Z_foobarZ_nested_tensor_strides©Úgr   c                 C   s�  d}d }t | tƒr$| jj}| jj}n| jjjjj}| jj}t 	| ¡rTt
 d|¡ dS |tkrlt
 d|¡ dS | ¡ D ]$}t|jƒ}|stt
 d|¡  dS qtt | tƒrÔdtj|jdd� ¡ krÐt
 dt|ƒ¡ dS d	S | jj ¡ D ](}t|jƒ}|sàt
 d| jj¡  dS qà| j�sDt| d
ƒ�r@t|ƒ d¡�r@t|jƒ d¡�sDdS dtj|jdd� ¡ k�rnt
 d|¡ dS t|jjƒ�rŒt
 d|¡ dS d	S )NÚ zHAND WRITTEN: %sFzBLOCKED: %sz!NOT SUPPORTED TYPE CONVERTING: %sz
at::Tensor)ZsymintzNON-TENSOR RET TYPE: %sTÚoutzTensor(a!) out) -> Tensor(a!)z.outzat::Tensor &zNON_TENSOR RET TYPE: %szINPUTS ALIAS: %s)Ú
isinstancer   ÚviewÚ	root_nameÚfuncr0   ÚnameÚbaser   Zis_hand_writtenr   ÚinfoÚBLOCKED_OPSÚschema_order_argumentsÚivalue_type_conversion_methodÚtypeÚcppZreturns_typeÚreturnsZcpp_typeÚstrÚ
functionalÚ
structuredÚhasattrÚendswithr   r   Únon_out)r.   Zbase_op_namer4   r   Úmaybe_methodr   r   r   Úis_supportedå   sV    





ÿþýrE   )Úarg_typer   c                 C   s”   t jdt jdt jdt jdt jdt jdi}d}t| tƒr>| j	}n(t| t
ƒrbt| jtƒsXdS | jj	}ndS ||krrdS || }t| tƒrŒ|d S |d	 S )
aD  
    Return the method call expression of `c10::ivalue' to convert its contained value to
    the expected value of `arg_type` type. For example, for `arg_type` == BaseTy.Tensor,
    this function returns ".toTensor()", so that it can be appended to the ivalue's
    variable name to get the value of the expected type.
    ))Tz
toTensor())FztoOptional<at::Tensor>()))FztoInt())FztoOptional<int64_t>()))FztoBool())FztoOptional<bool>()))Fz
toScalar())FztoOptional<at::Scalar>()))FztoScalarType())FztoOptional<at::ScalarType>()))FztoStringView())FztoOptional<c10::string_view>()Nr   é   )r   ÚTensorÚintÚboolÚScalarÚ
ScalarTyper>   r1   r   r5   r   Úelem)rF   Ztype_conversion_methodsÚbase_ty_objectÚmethodsr   r   r   r:   !  s6    
      ÷



r:   )Zbitwise_notZbitwise_andZ
bitwise_orZbitwise_xorZbitwise_left_shiftZbitwise_right_shiftÚgcdZlcmZscatterZgatherÚ _convert_indices_from_coo_to_csrÚ _convert_indices_from_csr_to_coo)Zview_as_realÚimagZ_conj)Úop_namer   c                 C   s   | t kS ©N)Úshould_use_int_tensor_ops_©rT   r   r   r   Úshould_use_int_tensor_  s    rX   c                 C   s   | t kS rU   )Úshould_use_complex_tensor_ops_rW   r   r   r   Úshould_use_complex_tensorc  s    rZ   )	ZaddmvÚ	index_addrQ   rR   Znll_loss_backwardÚdotÚvdotÚouterr!   )ZaddmmÚmmÚnuclear_normZdiagZ_addmm_activationZmatrix_HÚtc                 C   s   | t krdS | tkrdS dS )NrG   é   é   )Útest_tensor_dim_ops_1_Útest_tensor_dim_ops_2_rW   r   r   r   Útest_tensor_dimy  s
    rf   z{"view_as_complex": "{2, 2}"}Útest_tensor_shape_jsonc                 C   s   | t krt |  S dS d S )Nr/   )rg   rW   r   r   r   Útest_tensor_shape…  s    rh   )rF   ÚindexrT   r   c                 C   s  t |ƒ}|dkr\|dkrdnd}t|ƒ}t |t|ƒ ¡}||d 7 }dd |› g| ¡ }t|ƒrrd|› d	�}n"t|ƒrˆd
|› d�}nd|› d�}tj	|tj
dtjdtjdtjdtjdi}d }	t| tƒrÒ| j}	n"t| tƒrèt| jtƒsìt‚| jj}	|	|k�stdƒ‚||	 }
|
S )Nr/   r   é   é@   rb   z{%s}ú,zat::randint(1, 100, z, at::kInt)z
at::randn(z, at::kComplexFloat)z	at::rand(ú)Ú1ÚfalseÚ2zat::ScalarType::Floatz"floor"znot expected type)rh   rf   ÚmathÚceilÚfloatÚjoinrX   rZ   r   rH   rI   rJ   rK   rL   r>   r1   r   r5   r   rM   ÚAssertionError)rF   ri   rT   Ztensor_size_exZnum_tensorsZnum_dimZsize_per_dimZtensor_expressionZvalue_expressionsrN   Zvalue_expressionr   r   r   Útest_value_expressionŒ  sH          ú	
 ÿrv   )Úschemari   r   c           	      C   sŒ   |   ¡ rt‚| jjj}i }|  ¡ D ]}t|j||ƒ}|||j< q"t |||¡ g }| 	¡ D ]"\}}| 
d|› |› d|› �¡ qZd |¡d S )Nzauto z = ú;
    ú;)Ú	is_out_fnru   r5   r6   r9   rv   r;   r   Zoverride_test_valuesÚitemsÚappendrt   )	rw   ri   Zschema_nameZarg_mapr   Ztest_value_expÚarg_populationsÚarg_nameÚ	arg_valuer   r   r   Úgenerate_test_value_definitions³  s    
r€   c                    s(   |   ¡ rt‚d ‡ fdd„|  ¡ D ƒ¡S )Nrl   c                 3   s   | ]}|j › ˆ › �V  qd S rU   ©r5   ©Ú.0r   ©ri   r   r   Ú	<genexpr>Ã  s     z,generate_test_value_names.<locals>.<genexpr>)rz   ru   rt   r9   )rw   ri   r   r„   r   Úgenerate_test_value_namesÁ  s    r†   rH   rI   rs   r>   rJ   )rw   r   c                    s2   t tttt f dœdd„‰ ‡ fdd„|  ¡ D ƒS )N)r   r   c                 S   sd   | j }d}t|tƒr|j}d}t|tƒs,t‚d }|jtkrDt|j }|rV|rV|› d�}d| j |fS )NFTú?ú%)r;   r1   r   rM   r   ru   r5   Ú/generate_test_ir_arguments_base_ty_to_type_str_)r   ra   Zadd_optionalZtype_strr   r   r   Úir_argumentÔ  s    



z/generate_test_ir_arguments.<locals>.ir_argumentc                    s   g | ]}ˆ |ƒ‘qS r   r   r‚   ©rŠ   r   r   Ú
<listcomp>â  s     z.generate_test_ir_arguments.<locals>.<listcomp>)r	   r   r>   r   r9   )rw   r   r‹   r   Úgenerate_test_ir_argumentsÑ  s    r�   c                 C   sr   g }t |  ¡ ƒD ]R\}}t|jƒ}|s*t‚|\}}|r:dnd}| d|› d|j› d|› d|› �¡ qd |¡d S )	Nú&r/   z
const autoú z = p_node->Input(z).rx   ry   )Ú	enumerater9   r:   r;   ru   r|   r5   rt   )rw   r}   Úir   rD   Zis_referenceZtype_conversion_methodÚ	referencer   r   r   Úgenerate_arg_extractionå  s    
ÿr“   ©r.   Úbackend_indexr   c                 C   s.   |  | j¡}| js|d kr(t | jj¡S |jS rU   )Ú
get_kernelr?   r@   r<   r5   r4   Úkernel©r.   r•   r—   r   r   r   Úget_kernel_nameò  s    r™   c                 C   s.   |  | j¡}| js|d kr(t | jj¡S |jS rU   )r–   r0   r@   r<   r5   r4   r—   r˜   r   r   r   Úget_out_kernel_nameù  s    rš   c                 C   s\   | j j}| ¡ rt‚t| |ƒ}dd„ | ¡ D ƒ}| jr:dnd}d|› d|› dd |¡› d	�S )
Nc                 s   s   | ]}|j V  qd S rU   r�   r‚   r   r   r   r…     s     z0generate_non_out_variant_call.<locals>.<genexpr>ÚcpuÚnativeúat::ú::ú(rl   rm   )r?   r4   rz   ru   r™   r9   r@   rt   )r.   r•   rw   Úkernel_nameÚ	arg_namesÚnamespace_namer   r   r   Úgenerate_non_out_variant_call   s    
r£   c                 C   s\   | j j}t |¡}| | j ¡}|r(|j}dd„ | ¡ D ƒ}d}d|› d|› dd |¡› d�S )	Nc                 s   s   | ]}|j V  qd S rU   r�   r‚   r   r   r   r…     s     z,generate_call_to_view_ops.<locals>.<genexpr>rœ   r�   rž   rŸ   rl   rm   )r2   r4   r<   r5   r–   r—   r9   rt   )r.   r•   rw   r    r—   r¡   r¢   r   r   r   Úgenerate_call_to_view_ops  s    
r¤   c                 C   sà   | j j}| ¡ st‚g }t| |ƒ}| jr<dd„ |jj D ƒ}ng }|jjD ]8}t|t	ƒrf| 
|jj¡ qHt|tƒstt‚| 
|j¡ qH| js°t|jj ƒdksœt‚| 
|jj d j¡ d |¡}| jrÄdnd}d|› d	|› d
|› d�S )Nc                 S   s   g | ]
}|j ‘qS r   r�   )rƒ   Zout_argr   r   r   rŒ   !  s     z-generate_out_variant_call.<locals>.<listcomp>rG   r   rl   r›   rœ   r�   rž   rŸ   rm   )r0   r4   rz   ru   rš   r@   r   rC   r1   r   r|   Úargumentr5   r	   Úlenrt   )r.   r•   rw   r¡   r    r   Zcpp_arg_namesr¢   r   r   r   Úgenerate_out_variant_call  s$    


r§   )zisin.Scalar_Tensorr[   r\   r]   r`   ZhistcZl1_lossZmulti_margin_lossZmultilabel_margin_lossZnll_lossZ
nll_loss2dÚprodc                 C   s"   t | ƒ}|d | d¡… }|tkS )NrŸ   )r>   ÚfindÚno_memory_resize_ops)rw   Ú
schema_strÚtype_variant_op_namer   r   r   Úshould_check_resizeD  s    r­   c                 C   s   | j jjjjS rU   )r?   r4   r5   r6   )r.   r   r   r   Úop_name_from_groupJ  s    r®   c                   @   s\   e Zd Zee eedœdd„Zee eedœdd„Z	eeedœdd„Z
eeedœd	d
„ZdS )ÚGenOpDispatcher)Úgroupsr•   r   c           	   
   C   sŒ   |sdS g }|D ]H}t |ƒ�6 t|ƒs*t‚t|tƒs8t‚|  ||¡}| |¡ W 5 Q R X qt|d ƒ}d |¡}d|› d|› d|› d�}|S )Nr/   r   Ú
z&
REGISTER_OPERATOR_FUNCTOR(
    aten::ú,
    aten_ú(,
    [](Node* n) -> SROperator {
      ú:
      LogAndDumpSchema(n);
      return nullptr;
    });
)	r   rE   ru   r1   r   Úout_variant_op_generatorr|   r®   rt   ©	Úselfr°   r•   Úgenerated_type_variantsr.   Úgenerated_type_variantrT   ÚbodyÚ	generatedr   r   r   Úout_variantO  s&    

þþû
zGenOpDispatcher.out_variantc           	   
   C   sŽ   |sdS g }|D ]H}t |ƒ�6 t|ƒs*t‚t|tƒs8t‚|  ||¡}| |¡ W 5 Q R X qt |d ¡}d 	|¡}d|› d|› d|› d�}|S )Nr/   r   r±   z-
REGISTER_NATIVE_OPERATOR_FUNCTOR(
    aten::r²   r³   r´   )
r   rE   ru   r1   r   Úview_op_generatorr|   r   Zfunc_name_base_strrt   r¶   r   r   r   r2   i  s&    

þþû
zGenOpDispatcher.viewr”   c           
      C   sŒ   |j }t|jƒ}t|j jƒ}t||ƒ}t|jjjjƒdks>t‚t|jjjjd j	ƒ}t
||ƒ}d|› d|› d|› d|› d|› d|› d	�}	|	S )
NrG   r   ú+
      if (n->matches(torch::schema("aten::ú<"))) {
        return [](ProcessedNode* p_node) {
          zM
          if (p_node->Output(0).isNone()) {
            p_node->Output(0) = z2;
            return;
          }
          auto& z< = p_node->Output(0).toTensor();
          fastResizeToZero(z);
          ú;
        };
      })r?   r>   r4   r“   r£   r¦   r0   r   ru   r5   r§   )
r·   r.   r•   r?   rw   Úpopulated_argumentÚfunctional_variant_callZout_variable_nameZout_variant_callr»   r   r   r   rµ   ƒ  s*    


ÿýûøø
öz(GenOpDispatcher.out_variant_op_generatorc                 C   s>   t |jjƒ}t|jjƒ}t||ƒ}d|› d|› d|› d�}|S )Nr¾   r¿   z!
            p_node->Output(0) = rÀ   )r>   r2   r4   r“   r¤   )r·   r.   r•   rw   rÁ   rÂ   r»   r   r   r   r½   œ  s    
ÿýüz!GenOpDispatcher.view_op_generatorN)Ú__name__Ú
__module__Ú__qualname__r   r   r
   r>   r¼   r   r2   rµ   r½   r   r   r   r   r¯   N  s     þ þ þ þr¯   c                   @   sT   e Zd Zee edœdd„Zee edœdd„Zeedœdd„Z	eedœd	d
„Z
dS )ÚGenOpTestCase)r°   r   c              
   C   sb   |sdS g }|D ]F}t |ƒ�4 t|ƒs*t‚t|tƒs8t‚|  |¡}| |¡ W 5 Q R X qd |¡S ©Nr/   r±   )r   rE   ru   r1   r   Ú"out_variant_op_test_case_generatorr|   rt   ©r·   r°   r¸   r.   r¹   r   r   r   r¼   ­  s    

zGenOpTestCase.out_variantc              
   C   sb   |sdS g }|D ]F}t |ƒ�4 t|ƒs*t‚t|tƒs8t‚|  |¡}| |¡ W 5 Q R X qd |¡S rÇ   )r   rE   ru   r1   r   Úview_op_test_case_generatorr|   rt   rÉ   r   r   r   r2   ¹  s    

zGenOpTestCase.viewr-   c                 C   s8  |j j}t|ƒ}| d¡dks"t‚|d | d¡…  dd¡}t|ƒ}| |¡sRt‚t|ƒ}d 	dd„ |D ƒ¡}d 	dd„ |D ƒ¡}t
|jƒd	kr¶t|jd jtƒr¶|jd jjtjksºt‚t|dƒ}	t|dƒ}
t|d	ƒ}t|d	ƒ}t|ƒrîd
nd}d|› d|› d|› d|› d|	› d|
› d|› d|› d|› d|› d�}|S )NrŸ   r   Ú.Ú_ú, c                 s   s,   | ]$\}}|d kr|n|› d|› �V  qd S ©Nz: r   ©rƒ   r~   rF   r   r   r   r…   Ï  s   ÿzCGenOpTestCase.out_variant_op_test_case_generator.<locals>.<genexpr>c                 s   s   | ]\}}|V  qd S rU   r   ©rƒ   r~   rÌ   r   r   r   r…   Ô  s     rG   Útruero   ú
TEST(StaticRuntime, autogen_ú1) {
  const std::string script = R"IR(
    graph(ú?):
        %bias: None = prim::Constant()
        %ret = aten::úQ)
        %cloned = aten::clone(%ret, %bias)
        return (%cloned)
  )IR";

  ú
  std::vector<IValue> args{zj};
  testStaticRuntime(script, args, {}, /*use_allclose=*/false, /*use_equalnan=*/false, /*check_resize=*/z);

  z
  std::vector<IValue> args2{zm};
  testStaticRuntime(script, args, args2, /*use_allclose=*/false, /*use_equalnan=*/false, /*check_resize=*/z);

}
)r?   r4   r>   r©   ru   Úreplacer®   Ú
startswithr�   rt   r¦   r=   r1   r;   r   r5   r   rH   r€   r†   r­   )r·   r.   rw   r«   r¬   rT   Ú	arg_typesÚarg_declarationsr¡   Útest_value_definitionsÚtest_value_namesZtest_value_definitions2Ztest_value_names2Zcheck_resizer»   r   r   r   rÈ   Å  s\    þÿÿþý



ÿýûû
öõôòñôz0GenOpTestCase.out_variant_op_test_case_generatorc                 C   sü   |j j}t|ƒ}| d¡dks"t‚|d | d¡…  dd¡}|j j}| |¡sRt‚t|ƒ}d 	dd„ |D ƒ¡}d 	dd„ |D ƒ¡}t
|jƒd	kr¶t|jd jtƒr¶|jd jjtjksºt‚t|dƒ}	t|dƒ}
d
|› d|› d|› d|› d|	› d|
› d�}|S )NrŸ   r   rË   rÌ   rÍ   c                 s   s,   | ]$\}}|d kr|n|› d|› �V  qd S rÎ   r   rÏ   r   r   r   r…   ÿ  s   ÿz<GenOpTestCase.view_op_test_case_generator.<locals>.<genexpr>c                 s   s   | ]\}}|V  qd S rU   r   rÐ   r   r   r   r…     s     rG   rÒ   rÓ   rÔ   rÕ   rÖ   z(};
  testStaticRuntime(script, args);
}
)r2   r4   r>   r©   ru   r×   r3   rØ   r�   rt   r¦   r=   r1   r;   r   r5   r   rH   r€   r†   )r·   r.   rw   r«   r¬   rT   rÙ   rÚ   r¡   rÛ   rÜ   r»   r   r   r   rÊ   õ  sF    þÿÿþý

ÿýûû
öõz)GenOpTestCase.view_op_test_case_generatorN)rÃ   rÄ   rÅ   r   r   r>   r¼   r   r2   rÈ   rÊ   r   r   r   r   rÆ   ¬  s   0rÆ   )HÚjsonÚloggingrq   Útypingr   r   r   r   r   r   Ztorchgen.api.cppÚapir<   Ztorchgen.contextr   Ztorchgen.modelr	   r
   r   r   r   r   r   r   r   r   r   Ztorchgen.static_runtimer   Ú	getLoggerr   ÚLoggerÚ__annotations__rJ   r   Ú	frozensetr8   rE   r>   r:   rV   rY   rX   rZ   rd   re   rI   rf   Ztest_tensor_shapes_stringÚloadsrg   rh   rv   r€   r†   rH   rs   rK   rL   r‰   r�   r“   r™   rš   r£   r¤   r§   rª   r­   r®   r¯   rÆ   r   r   r   r   Ú<module>   s¦     4þÿ >=þ+ÿÿÿ  þ'       ùþ þ þ þÿ^