U
    qh6                     @  sT   d dl mZ d dlZd dlmZ dZddddd	d
ZdddZG dd deZ	dS )    )annotationsN)OpRun)UOzlist | np.ndarrayz
list | intlist)split_listspadding_requirementreturnc                 C  sT   t | tr | dd t|D  S t | tjr<ttt| |S tdt|  dd S )Nc                 S  s   g | ]}d qS )  ).0_r   r   F/tmp/pip-unpacked-wheel-xnis5xre/onnx/reference/ops/op_string_split.py
<listcomp>   s     z$pad_empty_string.<locals>.<listcomp>zInvalid array type '')	
isinstancer   rangenpZndarraymappad_empty_string	TypeErrortype)r   r   r   r   r   r      s
    
r   c                 C  sz   t j| t j||}t jtt jgd|}t j|dd| 	 }t j
t||td}| jdkrr|j| jd }||fS )N)Zotypesr   )initial)dtype)r   )r   charsplitZastypeZstr_Z	vectorizelenZint64maxtolistarrayr   objectsizeZreshapeshape)x	separatormaxsplitr   Z
num_splitsr   Zsplit_lists_paddedr   r   r   split_with_padding   s     
r&   c                   @  s   e Zd ZdddZdS )StringSplitNc                 C  s4   |dkrd }|j jtkr(td|j  t|||S )Nr
   z.Inputs must be string tensors, received dtype )r   kind_acceptable_str_dtypesr   r&   )selfr#   	delimiterr%   r   r   r   _run&   s
    zStringSplit._run)NN)__name__
__module____qualname__r,   r   r   r   r   r'   %   s   r'   )NN)

__future__r   Znumpyr   Zonnx.reference.op_runr   r)   r   r&   r'   r   r   r   r   <module>   s   

