o
    i                  
   @   sn  d dl mZmZmZmZmZmZmZmZ ddl	m
Z
 ddlmZ edZedZedZeee  Zee Ze
dd	eee ee f d
eee ee f fddZdeee ee f dee ded
eee ef fddZdee d
eee ee f fddZdee dee d
ee fddZ		ddeee ee f deee  deee  d
dfddZdS )    )AnyCallableListOptionalSequenceTupleTypeVarcast   )registry)ModelInItemTOutItemTItemTzwith_flatten.v2layerreturnc                 C   s   t d| j dt| gtdS )Nzwith_flatten())layersinit)r   nameforwardr   )r    r   P/home/ubuntu/.local/lib/python3.10/site-packages/thinc/layers/with_flatten_v2.pywith_flatten_v2   s   r   modelXnestis_trainc                    sV   | j d }t|\}|||\} t|}dtt dtt f fdd}||fS )Nr   dYnestr   c                    s"   t | \}} |}t|}|S N)_flatten
_unflatten)r   dYflat_dXflatdXnestbackprop_layerlensr   r   backprop   s   
zforward.<locals>.backprop)r   r   r    NestedTr   r   )r   r   r   r   XflatYflatYnestr(   r   r%   r   r      s   

 r   nestedc                 C   s<   g }g }| D ]}| | |t| qttt ||fS r   )extendappendlenr	   FlatTr   )r-   flatr'   itemr   r   r   r   )   s   
r   r2   r'   c                 C   s0   g }|D ]}| | d |  | |d  } q|S r   )r/   )r2   r'   r-   lr   r   r   r    2   s
   r    NXYc                 C   sL   | j d |d urt|d nd |d ur!| j d jj| d S d  d S )Nr   )r   
initializer   opsxphstack)r   r5   r6   r   r   r   r   :   s   
r   )NN)typingr   r   r   r   r   r   r   r	   configr   r   r   r   r   r   r)   r1   r   r   boolr   intr   r    r   r   r   r   r   <module>   sH   ( 
&"	


