+
    œ°³jÉ3  ã                   óÂ   € ^ RI Ht ^ RIt^RIHtHt ^RIHt  ! R R4      t ! R R]4      t	] ! R	 R
]4      4       t
 ! R R]4      t ! R R]4      t ! R R]4      tR# )é    )Ú	dataclassN)ÚGenerationMixinÚStoppingCriteria)ÚModelOutputc                   ó6   a € ] tR t^t o R tR tRR ltRtV tR# )ÚParakeetRNNTDecoderCachec                óJ   € Wn         R V n        R V n        R V n        RV n        R # )NF)ÚconfigÚcacheÚhidden_stateÚ
cell_stateÚis_initialized)Úselfr
   s   &&Úq/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/parakeet/generation_parakeet.pyÚ__init__Ú!ParakeetRNNTDecoderCache.__init__   s%   € ØŒØ*.ˆŒ
Ø15ˆÔØ/3ˆŒØ$)ˆÖó    c                óp  € \         P                  ! VP                  ^ ,          ^V P                  P                  VP
                  VP                  R7      V n        \         P                  ! V P                  P                  VP                  ^ ,          V P                  P                  VP
                  VP                  R7      V n	        \         P                  ! V P                  P                  VP                  ^ ,          V P                  P                  VP
                  VP                  R7      V n
        \         P                  P                  V P                  4       \         P                  P                  V P                  4       \         P                  P                  V P                  4       RV n        R# )r   ©ÚdeviceÚdtypeTN)ÚtorchÚzerosÚshaper
   Údecoder_hidden_sizer   r   r   Únum_decoder_layersr   r   Ú_dynamoÚmark_static_addressr   )r   Úhidden_statess   &&r   Úlazy_initializationÚ,ParakeetRNNTDecoderCache.lazy_initialization   s)  € Ü—[’[Ø×Ñ Õ"ØØ�K‰K×+Ñ+Ø ×'Ñ'Ø×%Ñ%ô
ˆŒ
ô "ŸKšKØ�K‰K×*Ñ*Ø×Ñ Õ"Ø�K‰K×+Ñ+Ø ×'Ñ'Ø×%Ñ%ô
ˆÔô  Ÿ+š+Ø�K‰K×*Ñ*Ø×Ñ Õ"Ø�K‰K×+Ñ+Ø ×'Ñ'Ø×%Ñ%ô
ˆŒô 	�‰×)Ñ)¨$¯*©*Ô5Ü�‰×)Ñ)¨$×*;Ñ*;Ô<Ü�‰×)Ñ)¨$¯/©/Ô:à"ˆÖr   Nc                ó†  € V P                   '       g   V P                  V4       VfT   V P                  P                  V4       V P                  P                  V4       V P
                  P                  V4       R # VP                  VP                  4      pVP                  ^ ,          pVP                  ^V^4      pVP                  V^^4      p\        P                  ! WqV P
                  4      V n        \        P                  ! WbV P                  4      V n        \        P                  ! WcV P                  4      V n        R # ©N)r   r    r   Úcopy_r   r   Útor   r   Úviewr   Úwhere)r   Údecoder_outputr   r   ÚmaskÚ
batch_sizeÚmask_hÚmask_ds   &&&&&   r   ÚupdateÚParakeetRNNTDecoderCache.update<   sê   € ð ×"×"Ð"Ø×$Ñ$ ^Ô4àŠ<Ø×Ñ×#Ñ# LÔ1Ø�O‰O×!Ñ! *Ô-Ø�J‰J×Ñ˜^Ö,ð —7‘7˜>×0Ñ0Ó1ˆDØ'×-Ñ-¨aÕ0ˆJØ—Y‘Y˜q *¨aÓ0ˆFØ—Y‘Y˜z¨1¨aÓ0ˆFÜŸš V¸T¿Z¹ZÓHˆDŒJÜ %§¢¨FÀ$×BSÑBSÓ TˆDÔÜ#Ÿkšk¨&¸d¿o¹oÓNˆDŽOr   )r   r   r
   r   r   r#   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r    r-   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € ò*ò#÷:Oò Or   r   c                   ó   € ] tR t^VtRtR# )ÚParakeetTDTDecoderCache© N)r/   r0   r1   r2   r3   r9   r   r   r8   r8   V   s   † »r   r8   c                   ó<   a € ] tR t^Yt o RtRtRtRtV 3R ltRt	V t
R# )ÚParakeetRNNTGenerateOutputa¿  
Outputs of Parakeet transducer (RNN-T / TDT) generation.

Args:
    sequences (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
        Generated token sequences (including blank tokens).
    durations (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
        Per-step durations in frames. Combined with `sequences`, this is sufficient
        to reconstruct full timestamp information (frame indices are the cumulative sum
        of durations).
    attentions (`tuple(tuple(torch.FloatTensor))`, *optional*):
        Encoder attention weights per layer.
    hidden_states (`tuple(tuple(torch.FloatTensor))`, *optional*):
        Encoder hidden states per layer.
Nc                ó  <€ V ^8„  d   Qh/ S[ P                  ;R&   S[ P                  R,          ;R&   S[S[S[ P                  ,          ,          R,          ;R&   S[S[S[ P                  ,          ,          R,          ;R&   # )é   Ú	sequencesNÚ	durationsÚ
attentionsr   )r   Ú
LongTensorÚtupleÚFloatTensor)Úformatr6   s   "€r   Ú__annotate__Ú'ParakeetRNNTGenerateOutput.__annotate__Y   st   ø‡ ‚ ñ$ ×ÑÑñ% ñ& ×Ñ $Õ&Ñ-ñ' ñ( ‘e™E×-Ñ-Õ.Õ/°$Õ6Ñ=ñ) ñ* ™™u×0Ñ0Õ1Õ2°TÕ9Ñ@ò+ r   r9   )r/   r0   r1   r2   Ú__doc__r?   r@   r   Ú__annotate_func__r3   r4   r5   s   @r   r;   r;   Y   s"   ø‡ € ñð" *.€IØ9=€JØ<@€M÷+ ƒ r   r;   c                   ó0   a € ] tR t^qt o RtR tR tRtV tR# )ÚEncoderExhaustedCriteriazVStops generation when all batch elements have walked past their encoder output length.c                ó   € Wn         R # r#   ©Úmodel)r   rM   s   &&r   r   Ú!EncoderExhaustedCriteria.__init__t   s   € ØŽ
r   c                óâ   € V P                   P                  fC   \        P                  ! VP                  ^ ,          \        P
                  VP                  R7      # V P                   P                  # )N©r   r   )rM   Ú_encoder_finishedr   r   r   Úboolr   )r   Ú	input_idsÚscoresÚkwargss   &&&,r   Ú__call__Ú!EncoderExhaustedCriteria.__call__w   sH   € Ø�:‰:×'Ñ'Ò/Ü—;’;˜yŸ™¨qÕ1¼¿¹ÈI×L\ÑL\Ô]Ð]Ø�z‰z×+Ñ+Ð+r   rL   N)	r/   r0   r1   r2   rG   r   rV   r3   r4   r5   s   @r   rJ   rJ   q   s   ø‡ € Ù`ò÷,ð ,r   rJ   c                   ó|   a a€ ] tR t^}t oRtV 3R ltV 3R ltV 3R ltV 3R ltR t	V 3R lt
R
V 3R lltR	tVtV ;t# )ÚParakeetRNNTGenerationMixina¯  Generation mixin for Parakeet RNN-T models, and the base for all Parakeet transducer generation.

Handles the transducer machinery shared by RNN-T and TDT: encoder frame tracking, decoder cache
preparation, encoder-exhaustion stopping, and output-buffer sizing. For RNN-T greedy decoding the encoder
frame pointer advances by one frame on every blank emission and stays put on every non-blank emission; a
``max_symbols_per_step`` guard forces an advance after too many consecutive non-blank emissions at the same
frame, mirroring NeMo's greedy RNN-T decoding. The duration-aware [`ParakeetTDTGenerationMixin`] extends this
by advancing the frame pointer by a predicted duration instead.
c                ó\   <€ \         SV `  ! V/ VB pVP                  \        V 4      4       V# r#   )ÚsuperÚ_get_stopping_criteriaÚappendrJ   )r   ÚargsrU   ÚcriteriaÚ	__class__s   &*, €r   r\   Ú2ParakeetRNNTGenerationMixin._get_stopping_criteriaˆ   s.   ø€ Ü‘7Ò1°4ÐB¸6ÑBˆØ�‰Ô0°Ó6Ô7Øˆr   c                óÌ  <€ \         SV `  ! V.VO5/ VB pVP                  R,          pVP                  RR7      pW`P                  P
                  8H  pV P                  f   \        P                  ! V4      V n        \        P                  ! V\        P                  ! V P                  4      V P                  ^,           4      pW€P                  8¬  p	\        P                  ! Wy,          \        P                  ! V4      V4      V n        Wy,          P                  4       p
VR,          V
,           VR&   V P                  P                  V
4       VR,          VR,          8¬  V n        V# )ºNNN©ÚdimÚencoder_frame_idxsÚencoder_valid_lengthséÿÿÿÿ©rc   rh   rc   )r[   Ú#_update_model_kwargs_for_generationÚlogitsÚargmaxr
   Úblank_token_idÚ_symbols_at_framer   Ú
zeros_liker'   Úmax_symbols_per_stepÚlongÚ_step_durationsr]   rQ   )r   Úoutputsr^   rU   Úmodel_kwargsrk   ÚtokensÚ
blank_maskÚsymbolsÚforce_advanceÚadvancer`   s   &&*,       €r   rj   Ú?ParakeetRNNTGenerationMixin._update_model_kwargs_for_generation�   s0  ø€ Ü‘wÒBÀ7Ð\ÈTÒ\ÐU[Ñ\ˆà—‘ Õ)ˆØ—‘ 2�Ó&ˆØŸ{™{×9Ñ9Ñ9ˆ
ð ×!Ñ!Ò)Ü%*×%5Ò%5°fÓ%=ˆDÔ"Ü—+’+˜j¬%×*:Ò*:¸4×;QÑ;QÓ*RÐTX×TjÑTjÐmnÕTnÓoˆØ×#<Ñ#<Ñ<ˆÜ!&§¢¨ZÕ-GÌ×IYÒIYÐZaÓIbÐdkÓ!lˆÔð Õ-×3Ñ3Ó5ˆØ-9Ð:NÕ-OÐRYÕ-YˆÐ)Ñ*ð 	×Ñ×#Ñ# GÔ,Ø!-Ð.BÕ!CÀ|ÐTkÕGlÑ!lˆÔàÐr   c                óB  <€ V'       d„   VP                   fv   V P                  P                  \        P                  ! VP
                  ^,          .VP                  R7      4      P                  4       pV P                  V,          Vn	        Rp\        SV `-  VVVVVV4      # )N)r   F)Úmax_new_tokensÚencoderÚ_get_subsampling_output_lengthr   Útensorr   r   Úitemrp   Ú
max_lengthr[   Ú_prepare_generated_length)	r   Úgeneration_configÚhas_default_max_lengthÚhas_default_min_lengthÚmodel_input_nameÚinput_ids_lengthÚinputs_tensorÚencoder_seq_lenr`   s	   &&&&&&& €r   r‚   Ú5ParakeetRNNTGenerationMixin._prepare_generated_length¥   s”   ø€ ÷ "Ð&7×&FÑ&FÒ&NØ"Ÿl™l×IÑIÜ—’˜m×1Ñ1°!Õ4Ð5¸m×>RÑ>RÔSóç‰d‹fð ð ,0×+DÑ+DÀÕ+VÐÔ(Ø%*Ð"Ü‰wÑ0ØØ"Ø"ØØØó
ð 	
r   c           
     óú  <€ \         SV `  ! V/ VB w  r4p0 R
mpRpVP                  4        UU	u/ uF(  w  r‰W†9  g   K  VP                  V4      '       d   K&  W‰bK*  	  p
pp	V P                  ! RR VRVP                  RR4      RR/V
B pWµR&   VP                  e   VP                  P                  R4      pMuVP                  P                  ^ ,          p\        P                  ! V3VP                  P                  ^,          \        P                  VP                  P                  R7      pWÅR&   \        P                  ! VP                  ^ ,          VP                  \        P                  R7      VR	&   W4V3# u up	pi )Úinput_featuresÚattention_maskÚoutput_attention_maskNTÚencoder_outputsrP   rg   r   rf   >   r�   rŒ   rŽ   )Údecoder_Ú
cross_attnÚ	use_cacheÚpast_key_valuesÚcache_paramsr9   rh   )r[   Ú_prepare_model_inputsÚitemsÚ
startswithÚget_audio_featuresÚgetr�   ÚsumÚlast_hidden_stater   r   Úfullrq   r   r   )r   r^   rU   ÚinputsÚ
input_namert   ÚexplicitÚirrelevant_prefixÚkeyÚvalueÚencoder_kwargsr�   rg   r*   r`   s   &*,           €r   r•   Ú1ParakeetRNNTGenerationMixin._prepare_model_inputsÀ   sƒ  ø€ Ü+0©7Ò+HÈ$Ð+YÐRXÑ+YÑ(ˆ˜LÚPˆØfÐð +×0Ñ0Ô2ô
á2‘
�ØÑ"ô à+.¯>©>Ð:K×+Lô ˆCŠJÙ2ð 	ñ 
ð ×1Ò1ñ 
Ø!ð
à'×+Ñ+Ð,<¸dÓCð
ð #'ð
ð ñ	
ˆð +:Ð&Ñ'à×)Ñ)Ò5Ø$3×$BÑ$B×$FÑ$FÀrÓ$JÑ!à(×:Ñ:×@Ñ@ÀÕCˆJÜ$)§J¢JØ�Ø×1Ñ1×7Ñ7¸Õ:Ü—j‘jØ&×8Ñ8×?Ñ?ô	%Ð!ð 1FÐ,Ñ-ä-2¯[ª[Ø�L‰L˜�OØ—=‘=Ü—*‘*ô.
ˆÐ)Ñ*ð  <Ð/Ð/ùóA
s   ®
E7½E7ÁE7c                ó6   € \        V P                  4      VR &   R# )Údecoder_cacheN)r   r
   )r   rƒ   rt   r^   rU   s   &&&*,r   Ú_prepare_cache_for_generationÚ9ParakeetRNNTGenerationMixin._prepare_cache_for_generationæ   s   € Ü(@ÀÇÁÓ(Mˆ�_Ó%r   c                ó¨  <€ ^RI Hp \        S
V `  ! V.VO5/ VB pVP	                  R4      P                  VR,          P                  P                  4      pVR,          P                  pVP                  ^ ,          VP                  ^,          r˜VP                  V	^,
          R7      pV! V\        P                  ! V4      VR3,          R7      VR&   V# )é   )ÚParakeetEncoderModelOutputrf   r�   )ÚmaxN)Úpooler_output)Úmodeling_parakeetr«   r[   Úprepare_inputs_for_generationÚpopr%   r­   r   r   Úclampr   Úarange)r   rS   r^   rU   r«   Úmodel_inputsrf   r­   r*   Úmax_encoder_lenr`   s   &&*,      €r   r¯   Ú9ParakeetRNNTGenerationMixin.prepare_inputs_for_generationé   sÎ   ø€ ÝAä‘wÒ<¸YÐXÈÒXÐQWÑXˆØ)×-Ñ-Ð.BÓC×FÑFØÐ*Õ+×9Ñ9×@Ñ@ó
Ðð %Ð%6Õ7×EÑEˆØ&3×&9Ñ&9¸!Õ&<¸m×>QÑ>QÐRSÕ>T�OØ/×5Ñ5¸/ÈAÕ:MÐ5ÓNÐÙ*DØ'¬¯ª°ZÓ(@ÐBTÐVZÐ(ZÕ[ô+
ˆÐ&Ñ'ð Ðr   c           	     ó¾  <€ R V n         R V n        . V n        \        SV `  ! RRVRV/VB p\
        P                  ! V P                  ^R7      p\
        P                  ! \
        P                  ! VP                  ^ ,          ^VP                  VP                  R7      V.^R7      pV = V =V =\        \        V\        4      '       d   VP                  VR7      # TVR7      # )Nr�   rƒ   rd   rP   )r>   r?   r9   )rQ   rn   rr   r[   Úgenerater   ÚstackÚcatr   r   r   r   r;   Ú
isinstancer   r>   )r   r�   rƒ   rU   rs   r?   r`   s   &&&,  €r   r·   Ú$ParakeetRNNTGenerationMixin.generateú   sÒ   ø€ à!%ˆÔØ!%ˆÔØ!ˆÔä‘'Ò"Ñ`¨&Ð`ÐDUÐ`ÐY_Ñ`ˆä—K’K × 4Ñ 4¸!Ô<ˆ	ä—I’IÜ�[Š[˜Ÿ™¨Õ+¨Q°i·o±oÈi×N^ÑN^Ô_ÐajÐkÐqrô
ˆ	ð Ð" DÐ$:¸DÐ<Pä)Ü+5°g¼{×+KÒ+K�g×'Ñ'Øô
ð 	
ØQXØô
ð 	
r   )rQ   rr   rn   )NN)r/   r0   r1   r2   rG   r\   rj   r‚   r•   r§   r¯   r·   r3   r4   Ú__classcell__)r`   r6   s   @@r   rY   rY   }   s4   ù‡ € ñõõ
õ0
õ6$0òLNõ÷"
÷ 
r   rY   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚParakeetTDTGenerationMixini  a‘  Generation mixin for Parakeet TDT models.

Extends [`ParakeetRNNTGenerationMixin`] with duration-aware decoding: instead of advancing the encoder frame
pointer by one on each blank emission, the joint network predicts a per-step duration and the pointer advances
by that amount. The shared setup (encoder frame tracking, decoder cache, stopping criteria, output buffer
sizing) is inherited unchanged.
c                óJ  € \         P                  ! W.VO5/ VB pVP                  R,          pVR RV P                  P                  13,          P                  RR7      pVR V P                  P                  R13,          P                  RR7      pW`P                  P                  8H  p\        P                  ! W‡^ 8H  ,          \        P                  ! V4      V4      pVR,          V,           VR&   V P                  P                  V4       VR,          VR,          8¬  V n        V# )rc   Nrd   rf   rg   rh   ri   )r   rj   rk   r
   Ú
vocab_sizerl   rm   r   r'   Ú	ones_likerr   r]   rQ   )	r   rs   r^   rU   rt   rk   ru   r?   rv   s	   &&*,     r   rj   Ú>ParakeetTDTGenerationMixin._update_model_kwargs_for_generation  s
  € ô '×JÒJÈ4ÐjÐ[_ÒjÐciÑjˆð —‘ Õ)ˆØ˜Ð3˜TŸ[™[×3Ñ3Ð3Ð3Õ4×;Ñ;ÀÐ;ÓCˆØ˜1˜dŸk™k×4Ñ4Ñ6Ð6Õ7×>Ñ>À2Ð>ÓFˆ	ð Ÿ{™{×9Ñ9Ñ9ˆ
Ü—K’K 
¸1©nÕ =¼u¿ºÈyÓ?YÐ[dÓeˆ	Ø-9Ð:NÕ-OÐR[Õ-[ˆÐ)Ñ*Ø×Ñ×#Ñ# IÔ.ð ".Ð.BÕ!CÀ|ÐTkÕGlÑ!lˆÔàÐr   )rQ   N)r/   r0   r1   r2   rG   rj   r3   r4   r5   s   @r   r¾   r¾     s   ø‡ € ñ÷ð r   r¾   )Údataclassesr   r   Ú
generationr   r   Úutilsr   r   r8   r;   rJ   rY   r¾   r9   r   r   Ú<module>rÆ      sr   ðõ "ã ç ;Ý  ÷;Oñ ;Oô~ =Ð6Ô <ð ôA ó Aó ðAô.	,Ð/ô 	,ôO
 /ô O
ôdÐ!<ö r   