o
    im                  
   @   s   d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ e ZededZee Zed	d
e
eef fddZde
eef deded
eeef fddZdS )    )CallableListTupleTypeVar   )NumpyOps)registry)Model)Array2dOutT)boundzlist2array.v1returnc                   C   s
   t dtS )zTransform sequences to ragged arrays if necessary and return the data
    from the ragged array. If sequences are already ragged, do nothing. A
    ragged array is a tuple (data, lengths), where data is the concatenated data.
    
list2array)r	   forward r   r   K/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/list2array.pyr      s   
r   modelXsis_trainc                    s<   t dd |D  dtdtf fdd}j||fS )Nc                 S   s   g | ]}t |qS r   )len).0xr   r   r   
<listcomp>   s    zforward.<locals>.<listcomp>dYr   c                    s   j |  S )N)ops	unflatten)r   lengthsr   r   r   backprop   s   zforward.<locals>.backprop)	NUMPY_OPS	asarray1ir   InTr   flatten)r   r   r   r   r   r   r   r      s   r   N)typingr   r   r   r   backendsr   configr   r   r	   typesr
   r   r   r!   layersr   boolr   r   r   r   r   <module>   s    .