o
    soi|                     @  sX   d dl mZ d dlZd dlZd dlmZ d dlmZ dej	fddZ
G dd	 d	eZdS )
    )annotationsN)Base)expectc           
      C  s   t | }t|j}t |}|dk r||d 7 }|jd| }|j|| }t |dt| |j dt|  }	t t ||g |d|R }t j|	|k|dS )z/Compute one hot from indices at a specific axisr      )r   dtype)npasarraylenshapearangereshapemod)
indicesdepthaxisr   valuesrankdepth_rangelsrstargets r   V/home/ubuntu/.local/lib/python3.10/site-packages/onnx/backend/test/case/node/onehot.pyone_hot   s   


"r   c                   @  sD   e Zd ZedddZedddZedddZedd	d
ZdS )OneHotreturnNonec                  C  s   d} d}t j}tjjdg ddgd}t jg dt jd}t d	}t j|| g|d}t|||d}|| |  | }t	||||g|gd
d d S )N      r   r   r   r   y)inputsoutputs)r         r      test_onehot_without_axisr#   r$   name)
r	   int32onnxhelper	make_nodearrayint64float32r   r   )on_value	off_valueoutput_typenoder   r   r   r"   r   r   r   export_without_axis   s"   

zOneHot.export_without_axisc            	      C  s   d} d}d}t j}tjjdg ddg| d}t jddgdd	ggt jd
}t d}t j||g|d
}t||| |d}|||  | }t||||g|gdd d S )Nr      r   r!   r"   r#   r$   r   	   r       r   
   r   r   test_onehot_with_axisr)   r	   r1   r,   r-   r.   r/   r   r   		axisValuer2   r3   r4   r5   r   r   r   r"   r   r   r   export_with_axis2   *   

zOneHot.export_with_axisc            	      C  s   d} d}d}t j}tjjdg ddg| d}t jg dt jd}t d	}t j||g|d}t||| |d
}|||  | }t||||g|gdd d S )Nr   r7   r   r!   r"   r8   )r   iir   r;   r<   test_onehot_negative_indicesr)   )	r	   r1   r,   r-   r.   r/   r0   r   r   r?   r   r   r   export_with_negative_indicesJ   s*   

z#OneHot.export_with_negative_indicesc            	      C  s   d} d}d}t j}tjjdg ddg| d}t jddgd	d
ggt jd}t d}t j||g|d}t||| |d}|||  | }t||||g|gdd d S )Nr7   r   r   r!   r"   r8   r9   r    r:   r   r;   r<   test_onehot_with_negative_axisr)   r>   r?   r   r   r   export_with_negative_axish   rB   z OneHot.export_with_negative_axisN)r   r   )__name__
__module____qualname__staticmethodr6   rA   rD   rG   r   r   r   r   r      s    r   )
__future__r   numpyr	   r,   onnx.backend.test.case.baser   onnx.backend.test.case.noder   r1   r   r   r   r   r   r   <module>   s   