o
    i_                  
   @   s   d dl mZmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ededZ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cast   )registry)Model)ArrayXdListXdRaggedInT)boundzlist2ragged.v1returnc                   C   s
   t dtS )zTransform sequences to ragged arrays if necessary and return the ragged
    array. If sequences are already ragged, do nothing. A ragged array is a
    tuple (data, lengths), where data is the concatenated data.
    list2ragged)r	   forward r   r   L/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/list2ragged.pyr      s   
r   modelXsis_trainc                    sB   dt dtf fdd} jdd |D }t j|||fS )NdYrr   c                    s   t t j| j| jS )N)r   r   ops	unflattendatalengths)r   r   r   r   backprop   s   zforward.<locals>.backpropc                 S   s   g | ]}t |qS r   )len).0xr   r   r   
<listcomp>   s    zforward.<locals>.<listcomp>)OutTr   r   	asarray1ir   flatten)r   r   r   r   r   r   r   r   r      s   r   N)typingr   r   r   r   r   configr   r   r	   typesr
   r   r   r   r"   layersr   boolr   r   r   r   r   <module>   s    .