o
    toi                     @  sN   d dl mZ d dlZd dlmZmZ G dd dejZedkr%e	  dS dS )    )annotationsN)inlinerparserc                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
InlinerTestc                 C  sT   t d}t|}|jj}| t|d | |d jd | |d jd d S )Na  
            <ir_version: 8, opset_import: [ "" : 17, "local" : 1 ]>
            agraph (float[N] X) => (float[N] Y)
            {
                Y = local.foo (X)
            }

            <opset_import: [ "" : 17, "local" : 1 ], domain: "local">
            foo (x) => (y) {
                temp = Add(x, x)
                y = local.bar(temp)
            }

            <opset_import: [ "" : 17 ], domain: "local">
            bar (x) => (y) {
                y = Mul (x, x)
            }
           r   Add   Mul)	r   parse_modelr   inline_local_functionsgraphnodeassertEquallenop_typeselfmodelinlinedinlined_nodes r   J/home/ubuntu/.local/lib/python3.10/site-packages/onnx/test/inliner_test.py
test_basic   s   
zInlinerTest.test_basicc                 C     t d}tj|dgdd}|jj}| t|d | |d jd | |d jd	 |j	d j}| t|d | |d jd
 | |d jd d S )NA  
            <ir_version: 8, opset_import: [ "" : 17, "local" : 1 ]>
            agraph (float[N] X) => (float[N] Y)
            {
                T = local.square (X)
                Y = local.double_and_square (T)
            }

            <opset_import: [ "" : 17, "local" : 1 ], domain: "local">
            double_and_square (x) => (y) {
                double = Add(x, x)
                y = local.square(double)
            }

            <opset_import: [ "" : 17 ], domain: "local">
            square (x) => (y) {
                y = Mul (x, x)
            }
        )localsquareFexcluder   r   r	   r   double_and_squarer   
r   r
   r   inline_selected_functionsr   r   r   r   r   	functionsr   r   r   r   function_nodesr   r   r   test_selective_inlining(      z#InlinerTest.test_selective_inliningc                 C  r   )Nr   )r   r   Tr   r   r   r	   r   r   r   r    r#   r   r   r   test_selective_exclusionM   r&   z$InlinerTest.test_selective_exclusionc                 C  s>   t d}tj|g ddd}|jj}| ddd |D  d S )Nz
            <ir_version: 8, opset_import: [ "" : 20]>
            agraph (float[N] X) => (float[N] Y)
            {
                Y = Softsign (X)
            }
        T)r   inline_schema_functionsAbsc                 S  s   g | ]}|j qS r   )r   ).0nr   r   r   
<listcomp>   s    z=InlinerTest.test_schema_function_inlining.<locals>.<listcomp>)r   r
   r   r!   r   r   assertInr   r   r   r   test_schema_function_inliningr   s   	z)InlinerTest.test_schema_function_inliningN)__name__
__module____qualname__r   r%   r'   r.   r   r   r   r   r      s
    %%r   __main__)

__future__r   unittestonnxr   r   TestCaser   r/   mainr   r   r   r   <module>   s   x