o
    wi                     @  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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   S/home/ubuntu/sommelier/.venv/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_exclusionN)__name__
__module____qualname__r   r$   r&   r   r   r   r   r      s    %r   __main__)

__future__r   unittestonnxr   r   TestCaser   r'   mainr   r   r   r   <module>   s   h