Ë
    øÿæiÑ$  ã                   óÂ  — d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZmZ eez  Zeeedf   z  Zdeedz     d	ed
efd„Zdeeedf   z  d
efd„Zdededeg ef   d
efd„Zdedededed
eeef   f
d„Z	 d#deeedf   z  dededededed
efd„Zdeded
dfd„Zdeded
dfd„Zdefd„Z ede¬ «      d$dededed
efd!„«       Z	 	 	 d%dedededed
ef
d"„Zy)&é    N)ÚCallable)ÚAny)Ú
deprecated)ÚTensor)Ú_broadcast_to_and_flattenÚtree_flattenÚtree_unflatten.Úflat_in_dimsÚ	flat_argsÚreturnc                 óÄ   ‡— t        | |«      D ��cg c]  \  }}|�|j                  |«      ‘Œ c}}Š‰r#t        ˆfd„‰D «       «      rt        d‰› d�«      ‚‰d   S c c}}w )Nc              3   ó.   •K  — | ]  }|‰d    k7  –— Œ y­w)r   N© )Ú.0ÚsizeÚbatch_sizess     €új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/_vmap_internals.pyÚ	<genexpr>z/_validate_and_get_batch_size.<locals>.<genexpr>   s   øè ø€ ÐJ¹k°d˜4 ;¨q¡>Õ1¹kùs   ƒzTvmap: Expected all tensors to have the same size in the mapped dimension, got sizes z for the mapped dimensionr   )Úzipr   ÚanyÚ
ValueError)r
   r   Úin_dimÚargr   s       @r   Ú_validate_and_get_batch_sizer      s   ø€ ô ˜|¨YÔ7ôá7‰KˆF�CØÐð 	�‰�ÕØ7ò€Kñ
 ”sÓJ¹kÓJÔJÜð$Ø$/ =Ð0IðKó
ð 	
ð �q‰>Ðùós   ‘AÚbatched_outputsc                 ó:   — t        | t        «      rt        | «      S y)Né   )Ú
isinstanceÚtupleÚlen)r   s    r   Ú_num_outputsr!   "   s   € Ü�/¤5Ô)Ü�?Ó#Ð#Øó    ÚvalueÚnum_elementsÚerror_message_lambdac                 ón   — t        | t        «      s| f|z  S t        | «      |k7  rt         |«       «      ‚| S ©N)r   r   r    r   )r#   r$   r%   s      r   Ú	_as_tupler(   *   s;   € ô
 �eœUÔ#Øˆx˜,Ñ&Ð&Ü
ˆ5ƒz�\Ò!ÜÑ-Ó/Ó0Ð0Ø€Lr"   Úin_dimsÚargsÚ
vmap_levelÚfuncc                 óî  — t        | t        «      s7t        | t        «      s't        dt	        |«      › d| › dt        | «      › d�«      ‚t        |«      dk(  rt        dt	        |«      › d�«      ‚t        |«      \  }}t        | |«      }|€-t        dt	        |«      › d| › dt        | «      d   › d	|› d�	«      ‚t        ||«      D ]Ú  \  }}t        |t        «      s |�t        dt	        |«      › d| › d
|› d�«      ‚t        |t        «      r:t        |t        «      s*t        dt	        |«      › d| › d
|› dt        |«      › d�	«      ‚|€Œƒ|dk  s||j                  «       k\  sŒœt        dt	        |«      › d| › d
|› d|j                  «       › d|j                  «       › d�«      ‚ t        ||«      }	t        ||«      D ��cg c]   \  }}|€|nt        j                  |||«      ‘Œ" }
}}t        |
|«      |	fS c c}}w )Núvmap(z
, in_dims=zv, ...)(<inputs>): expected `in_dims` to be int or a (potentially nested) tuple matching the structure of inputs, got: Ú.r   z�)(<inputs>): got no inputs. Maybe you forgot to add inputs, or you are trying to vmap over a function with no inputs. The latter is unsupported.zb, ...)(<inputs>): in_dims is not compatible with the structure of `inputs`. in_dims has structure r   z but inputs has structure z, ...)(<inputs>): Got in_dim=zE for an input but in_dim must be either an integer dimension or None.z' for an input but the input is of type zT. We cannot vmap over non-Tensor arguments, please use None as the respective in_dimz> for some input, but that input is a Tensor of dimensionality z- so expected in_dim to satisfy 0 <= in_dim < )r   Úintr   r   Ú	_get_nameÚtyper    r   r   r   r   Údimr   ÚtorchÚ_add_batch_dimr	   )r)   r*   r+   r,   r   Ú	args_specr
   r   r   Ú
batch_sizeÚbatched_inputss              r   Ú_create_batched_inputsr9   8   sh  € ô �gœsÔ#¬J°wÄÔ,FÜØ”I˜d“OÐ$ J¨w¨ið 86ä6:¸7³m°_ÀAðGó
ð 	
ô
 ˆ4ƒy�A‚~ÜØ”I˜d“OÐ$ð %)ð *ó
ð 	
ô (¨Ó-Ñ€IˆyÜ,¨W°iÓ@€LØÐÜØ”I˜d“OÐ$ J¨w¨ið 8%ä%1°'Ó%:¸1Ñ%=Ð$>ð ?Ø&˜K qð*ó
ð 	
ô ˜9 lÖ3‰ˆˆVÜ˜&¤#Ô&¨6Ð+=ÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &0ð1óð ô
 �fœcÔ"¬:°c¼6Ô+BÜØœ	 $›Ð(¨
°7°)ð <Ø$˜XÐ%LÜ˜“9�+ð ;ð<óð ð Ñ 6¨A¢:°¸3¿7¹7»9Ó1DÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &%Ø%(§W¡W£Y Kð 0!Ø!$§¡£ ¨1ð.óð ð 4ô, .¨l¸IÓF€Jô ˜|¨YÔ7ôá7‰KˆF�Cð ˆ~‰¤5×#7Ñ#7¸¸VÀZÓ#PÑPØ7ð ñ ô ˜.¨)Ó4°jÐ@Ð@ùó	s   Æ;%G1Úout_dimsr7   Úallow_none_pass_throughc                 ó   ‡‡‡‡‡— t        | «      Št        ‰‰ˆˆˆfd„«      }t        | t        «      r|d   }t	        j
                  | ‰‰|«      S |rt        ˆˆfd„t        | |«      D «       «      S t        ˆˆfd„t        | |«      D «       «      S )Nc            
      óF   •— dt        ‰ «      › d‰› d‰› dt        ‰ «      › d�	S )Nr.   ú, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r/   )r1   )r,   Únum_outputsr:   s   €€€r   Ú<lambda>z!_unwrap_batched.<locals>.<lambda>�   s4   ø€ �%œ	 $›Ð(Ð(8¸¸
ð C(Ø(3 }°MÄ)ÈDÃ/ÐARÐRSñUr"   r   c              3   ó\   •K  — | ]#  \  }}|�t        j                  |‰‰|«      nd –— Œ% y ­wr'   ©r4   Ú_remove_batch_dim©r   ÚoutÚout_dimr7   r+   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>Œ   sC   øè ø€ ð 
ñ !H‘��Wð �?ô ×'Ñ'¨¨Z¸ÀWÔMàóñ !Hùs   ƒ),c              3   óT   •K  — | ]  \  }}t        j                  |‰‰|«      –— Œ! y ­wr'   rB   rD   s      €€r   r   z"_unwrap_batched.<locals>.<genexpr>•   s.   øè ø€ ð 
á G‘��Wô ×#Ñ# C¨°ZÀ×IÙ Gùs   ƒ%()r!   r(   r   r   r4   rC   r   r   )	r   r:   r+   r7   r,   r;   Úout_dims_as_tuplerF   r?   s	    ````   @r   Ú_unwrap_batchedrI   u   sŸ   ü€ ô ˜Ó/€KÜ!ØØõ	UóÐô �/¤6Ô*Ø# AÑ&ˆÜ×&Ñ& ¸
ÀJÐPWÓXÐXÙÜô 
ô !$ OÐ5FÔ Gó
ó 
ð 	
ô ô 
ä # OÐ5FÔ Gó
ó 
ð 	
r"   Úoutputsc                 óR  — t        | t        «      ry t        | t        «      s0t        dt	        |«      › dt	        |«      › dt        | «      › d�«      ‚t        | «      D ]H  \  }}t        |t        «      rŒt        dt	        |«      › dt	        |«      › dt        |«      › d|› d�	«      ‚ y )Nr.   z	, ...): `z%` must only return Tensors, got type z as the return.z for return r/   )r   r   r   r   r1   r2   Ú	enumerate)rJ   r,   ÚidxÚoutputs       r   Ú_validate_outputsrO   Ÿ   sµ   € Ü�'œ6Ô"ØÜ�gœuÔ%ÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% g£ ¨ð@ó
ð 	
ô ! Ö)‰ˆˆVÜ�fœfÔ%ØÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% f£ ¨l¸3¸%¸qðBó
ð 	
ñ *r"   c                 ó    — t        | t        «      ry t        | t        «      rt        d„ | D «       «      st	        dt        |«      › d| › d�«      ‚y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr'   )r   r0   )r   rF   s     r   r   z6_check_out_dims_is_int_or_int_tuple.<locals>.<genexpr>³   s   è ø€ ð 2Ù08 WŒ
�7œC× ±ùs   ‚r.   r>   zu): `out_dims` must be an int or a tuple of int representing where in the outputs the vmapped dimension should appear.)r   r0   r   Úallr   r1   )r:   r,   s     r   Ú#_check_out_dims_is_int_or_int_tuplerS   °   s^   € Ü�(œCÔ ØÜ�h¤Ô&¬cñ 2Ù08ó2ô /ô Ø”I˜d“OÐ$Ð$4°X°Jð ?/ð 0ó
ð 	
ð/r"   c                 óH   — t        | d«      r| j                  S t        | «      S )NÚ__name__)ÚhasattrrU   Úrepr)r,   s    r   r1   r1   ½   s"   € Üˆt�ZÔ Ø�}‰}Ðô
 �‹:Ðr"   z@Please use `torch.vmap` instead of `torch._vmap_internals.vmap`.)Úcategoryc                 ó   — t        | ||«      S )z4
    Please use torch.vmap instead of this API.
    )Ú_vmap)r,   r)   r:   s      r   Úvmapr[   Ê   s   € ô ��w Ó)Ð)r"   c                 óN   ‡ ‡‡‡— t        j                  ‰ «      ˆˆ ˆˆfd„«       }|S )Nc                  óF  •— t        ‰‰«       t        j                  j                  «       }	 t	        ‰| |‰«      \  }} ‰|Ž }‰st        |‰«       t        |‰||‰‰¬«      t        j                  j                  «        S # t        j                  j                  «        w xY w)N)r;   )rS   r4   Ú_CÚ_vmapmode_increment_nestingr9   rO   rI   Ú_vmapmode_decrement_nesting)	r*   r+   r8   r7   r   r;   r,   r)   r:   s	        €€€€r   Úwrappedz_vmap.<locals>.wrappedà   s’   ø€ ä+¨H°dÔ;Ü—X‘X×9Ñ9Ó;ˆ
ð	3Ü)?Ø˜˜z¨4ó*Ñ&ˆN˜Jñ # NÐ3ˆOÙ*Ü! /°4Ô8Ü"ØØØØØØ(?ôô �H‰H×0Ñ0Õ2øŒE�H‰H×0Ñ0Õ2ús   ­4B  Â  B )Ú	functoolsÚwraps)r,   r)   r:   r;   ra   s   ```` r   rZ   rZ   Ö   s'   û€ ô ‡_�_�TÓö3ó ð3ð* €Nr"   )F)r   r   )r   r   F)rb   Úcollections.abcr   Útypingr   Útyping_extensionsr   r4   r   Útorch.utils._pytreer   r   r	   r0   r   Ú	in_dims_tÚ
out_dims_tÚlistr   r!   Ústrr(   r9   ÚboolrI   rO   rS   r1   ÚFutureWarningr[   rZ   r   r"   r   Ú<module>rn      s  ðã Ý $Ý Ý (ã Ý ß WÑ Wð �%‰K€	Ø�5˜˜c˜‘?Ñ"€
ðØ�s˜T‘zÑ"ðàðð 	óð" &¨5°¸°Ñ+=Ñ"=ð À#ó ð	Øð	àð	ð # 2 s 7Ñ+ð	ð ó		ð9AØð9Aà
ð9Að ð9Að ð	9Að
 ˆ5�#ˆ:Ñó9AðF %*ñ#
Ø˜e F¨C KÑ0Ñ0ð#
àð#
ð ð#
ð ð	#
ð
 ð#
ð "ð#
ð ó#
ðT
˜sð 
¨(ð 
°tó 
ð"

°*ð 

ÀHð 

ÐQUó 

ð�Hó ñ ØFØôñ*ˆxð * )ð *¸:ð *Èhò *ó	ð*ð ØØ$)ñ	 Ø
ð àð ð ð ð "ð	 ð
 ô r"   