o
    wi                     @  sL   d dl mZ d dlZd dlmZ dZdddZdddZG dd deZ	dS )    )annotationsN)OpRun)UOsplit_listslist | np.ndarraypadding_requirement
list | intreturnlistc                 C  sl   t | trt |tsJ | dd t|D  S t | tjr,t |ts$J ttt| |S tdt	|  d)Nc                 S  s   g | ]}d qS )  ).0_r   r   _/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/onnx/reference/ops/op_string_split.py
<listcomp>   s    z$pad_empty_string.<locals>.<listcomp>zInvalid array type '')

isinstancer   intrangenpndarraymappad_empty_string	TypeErrortype)r   r   r   r   r   r      s   
r   c                 C  s   t j| t j||}t jtt jgd|}t j|dd| 	 }t j
t||td}| jdkr<|jg | jdR  }||fS )N)otypesr   )initial)dtype)r   charsplitastypestr_	vectorizelenint64maxtolistarrayr   objectsizereshapeshape)x	separatormaxsplitr   
num_splitsr   split_lists_paddedr   r   r   split_with_padding   s   

r2   c                   @  s   e Zd ZdddZdS )StringSplitNc                 C  s4   |dkrd }|j jtvrtd|j  t|||S )Nr   z.Inputs must be string tensors, received dtype )r   kind_acceptable_str_dtypesr   r2   )selfr-   	delimiterr/   r   r   r   _run(   s
   zStringSplit._runNN)__name__
__module____qualname__r8   r   r   r   r   r3   '   s    r3   )r   r   r   r	   r
   r   r9   )

__future__r   numpyr   onnx.reference.op_runr   r5   r   r2   r3   r   r   r   r   <module>   s   

