Ë
    ›¾ju  ã            
       óf  — 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 ddlmZ ddlmZ  ed«      Z ed«      Z ed	«      Z e
j(                  d
«      dedefd„«       Zdeeef   deeef   deeef   deeef   fd„Zdeeef   dededeeef   fd„Z	 	 ddeeef   dee   dee   ddfd„Zy)é    )ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚTypeVarÚcasté   )Úregistry)ÚModel)Ú
XY_YZ_OutT)Ú	get_widthÚInTÚMidTÚOutTzchain.v1ÚlayerÚreturnc                  ó   — t        | Ž S ©N)Úchain)r   s    ú\/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/layers/chain.pyÚchain_no_typesr      s   € ä�%ˆ=Ðó    Úlayer1Úlayer2Úlayersc                 óz  — | |g}|j                  |«       ddi}|d   j                  d«      du r|d   j                  d«      |d<   |d   j                  d«      €d|d<   |d   j                  d«      du r|d   j                  d«      |d<   t        dj	                  d„ |D «       «      t
        t        ||¬	«      }|S )
a
  Compose two models `f` and `g` such that they become layers of a single
    feed-forward model that computes `g(f(x))`.
    Also supports chaining more than 2 layers.
    Note that the type checking for additional layers is carried out by the Thinc Mypy plugin.
    ÚnONr   ÚnITéÿÿÿÿz>>c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Úname)Ú.0r   s     r   ú	<genexpr>zchain.<locals>.<genexpr>(   s   è ø€ Ò5 �%—*•*Ñ5ùs   ‚)ÚinitÚdimsr   )ÚextendÚhas_dimÚget_dimr   ÚjoinÚforwardr&   )r   r   r   Ú
all_layersr'   Úmodels         r   r   r      sÐ   € ð *0°Ð(8€JØ×Ñ�fÔØ&*¨D \€Dà�!�}×Ñ˜TÓ" dÑ*Ø ‘]×*Ñ*¨4Ó0ˆˆT‰
Ø�!�}×Ñ˜TÓ"Ð*ØˆˆT‰
à�"�~×Ñ˜dÓ# tÑ+Ø ‘^×+Ñ+¨DÓ1ˆˆT‰
ä$)Ø�	‰	Ñ5¨*Ô5Ó5ÜÜØØô%€Eð €Lr   r.   ÚXÚis_trainc                 ó–   ‡— g Š| j                   D ]"  } |||¬«      \  }}‰j                  |«       |}Œ$ dt        dt        fˆfd„}|fS )zbApply the layers of `model` in sequence, feeding the output from one
    layer into the next.
    )r0   ÚdYr   c                 ó<   •— t        ‰«      D ]  } || «      }|} Œ S r   )Úreversed)r2   ÚcallbackÚdXÚ	callbackss      €r   Úbackpropzforward.<locals>.backprop;   s,   ø€ Ü  Ó+ò 	ˆHÙ˜"“ˆBØ‰Bð	ð ˆ	r   )r   Úappendr   r   )r.   r/   r0   r   ÚYÚinc_layer_gradr8   r7   s          @r   r,   r,   1   s`   ø€ ð €IØ—‘ò ˆÙ! !¨hÔ7Ñˆˆ>Ø×Ñ˜Ô(Ø‰ðð
”Tð œcõ ð ˆhˆ;Ðr   Nr:   c                 óð  — |€»|€¹| j                   D ]  }|j                  «        Œ | j                   d   j                  d«      r.| j                  d| j                   d   j	                  d«      «       | j                   d   j                  d«      r.| j                  d| j                   d   j	                  d«      «       |}| j                   D ]M  }|j                  d«      €|j                  ||¬«       n|j                  |¬«       |€Œ=|j                  |«      }ŒO | j                   d   j                  d«      r.| j                  d| j                   d   j	                  d«      «       | j                  d«      €	 t        |«      }| j                  d|«       y y # t        $ rS | j                   d   j                  d«      r2| j                   d   j	                  d«      }| j                  d|«       Y y Y y w xY w)Nr   r    r!   r   )r/   r:   )r/   )r   Ú
initializer)   Úset_dimr*   Úpredictr   Ú
ValueError)r.   r/   r:   r   Ú
curr_inputr   s         r   r&   r&   D   s»  € ð
 	€y�Q�YØ—\‘\ò 	ˆEØ×ÑÕð	à�<‰<˜‰?×"Ñ" 4Ô(Ø�M‰M˜$ §¡¨Q¡× 7Ñ 7¸Ó =Ô>Ø�<‰<˜Ñ×#Ñ# DÔ)Ø�M‰M˜$ §¡¨RÑ 0× 8Ñ 8¸Ó >Ô?ð €JØ—‘ò 3ˆØ�=‰=˜ÓÐ&Ø×Ñ˜z¨QÐÕ/à×Ñ˜zÐÔ*ØÑ!ØŸ™ zÓ2‰Jð3ð ‡|�|�A�×Ñ˜tÔ$Ø�‰�d˜EŸL™L¨™O×3Ñ3°DÓ9Ô:Ø‡}�}�TÓÐ"ð	(Ü˜:Ó&ˆBØ�M‰M˜$ Õ#ð #øô ò 	(Ø�|‰|˜BÑ×'Ñ'¨Ô-Ø—\‘\ "Ñ%×-Ñ-¨dÓ3�Ø—‘˜d BÖ'ñ .ð	(ús   Å:F ÆAG5Ç4G5)NN)Útypingr   r   r   r   r   r   r	   r
   Úconfigr   r.   r   Útypesr   Úutilr   r   r   r   r   r   r   Úboolr,   r&   © r   r   ú<module>rH      s  ðß L× LÓ Lå Ý Ý Ý áˆeƒn€Ùˆvƒ€Ùˆvƒ€ð €‡��Óð˜5ð  Uò ó ððØ�#�t�)ÑðØ&+¨D°#¨IÑ&6ðØAFÀsÈCÀxÁðà
ˆ3�
ˆ?Ñóð<�5˜˜d˜Ñ#ð ¨ð °tð ÀÀdÈHÀnÑ@Uó ð* Øñ#(Ø��d�Ñð#(à��}ð#(ð ��~ð#(ð 
ô	#(r   