ó
    EñiÑ$  ã                   óÖ  • S SK r S SKJr  S SKJr  S SKJr  S SKrS SKJr  S SK	J
r
JrJr  \\-  r\\\S4   -  rS\\S-     S	\S
\4S jrS\\\S4   -  S
\4S jrS\S\S\/ \4   S
\4S jrS\S\S\S\S
\\\4   4
S jr S#S\\\S4   -  S\S\S\S\S\S
\4S jjrS\S\S
S4S jrS\S\S
S4S jrS\4S jr\" S\S 9S$S\S\S\S
\4S! jj5       r   S%S\S\S\S\S
\4
S" jjrg)&é    N)ÚCallable)ÚAny)Ú
deprecated)ÚTensor)Ú_broadcast_to_and_flattenÚtree_flattenÚtree_unflatten.Úflat_in_dimsÚ	flat_argsÚreturnc                 óâ   ^• [        X5       VVs/ s H  u  p#Uc  M
  UR                  U5      PM     snnmT(       a)  [        U4S jT 5       5      (       a  [        ST S35      eTS   $ s  snnf )Nc              3   ó2   >#   • U  H  oTS    :g  v •  M     g7f)r   N© )Ú.0ÚsizeÚbatch_sizess     €ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_vmap_internals.pyÚ	<genexpr>Ú/_validate_and_get_batch_size.<locals>.<genexpr>   s   øé € ÐJºk°d ;¨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}   ø€ ô ˜|Ô7ôâ7‰KˆFØó 	ˆ�‰�ÖÙ7ò€Kö
 ”sÔJ¹kÓJ×JÑJÜð$Ø$/ =Ð0IðKó
ð 	
ð �q‰>Ðùós
   �	A+�A+Úbatched_outputsc                 óD   • [        U [        5      (       a  [        U 5      $ g)Né   )Ú
isinstanceÚtupleÚlen)r   s    r   Ú_num_outputsr"   "   s   € Ü�/¤5×)Ñ)Ü�?Ó#Ð#Øó    ÚvalueÚnum_elementsÚerror_message_lambdac                 óz   • [        U [        5      (       d  U 4U-  $ [        U 5      U:w  a  [        U" 5       5      eU $ ©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                 ó(  • [        U [        5      (       d<  [        U [        5      (       d'  [        S[	        U5       SU  S[        U 5       S35      e[        U5      S:X  a  [        S[	        U5       S35      e[        U5      u  pE[        X5      nUc-  [        S[	        U5       SU  S[        U 5      S    S	U S3	5      e[        XF5       Hí  u  px[        U[        5      (       d!  Ub  [        S[	        U5       SU  S
U S35      e[        U[        5      (       a?  [        U[        5      (       d*  [        S[	        U5       SU  S
U S[        U5       S3	5      eUc  M”  US:  d  X‡R                  5       :¼  d  M¯  [        S[	        U5       SU  S
U SUR                  5        SUR                  5        S35      e   [        Xd5      n	[        Xd5       VVs/ s H!  u  p‡Uc  UO[        R                  " XxU5      PM#     n
nn[        X¥5      U	4$ s  snnf )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_inputsr:   8   sc  € ô �gœs×#Ñ#¬J°wÄ×,FÑ,FÜØ”I˜d“OÐ$ J¨w¨ið 86ä6:¸7³m°_ÀAðGó
ð 	
ô
 ˆ4ƒy�Aƒ~ÜØ”I˜d“OÐ$ð %)ð *ó
ð 	
ô (¨Ó-Ñ€IÜ,¨WÓ@€LØÑÜØ”I˜d“OÐ$ J¨w¨ið 8%ä%1°'Ó%:¸1Ñ%=Ð$>ð ?Ø&˜K qð*ó
ð 	
ô ˜9Ö3‰ˆÜ˜&¤#×&Ñ&¨6Ñ+=ÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &0ð1óð ô
 �fœc×"Ñ"¬:°c¼6×+BÑ+BÜØœ	 $›Ð(¨
°7°)ð <Ø$˜XÐ%LÜ˜“9�+ð ;ð<óð ð Ó 6¨A£:°¿7¹7»9Õ1DÜØœ	 $›Ð(¨
°7°)ð <Ø$˜Xð &%Ø%(§W¡W£Y Kð 0!Ø!$§¡£ ¨1ð.óð ñ 4ô, .¨lÓF€Jô ˜|Ô7ôâ7‰KˆFð ‰~‰¤5×#7Ò#7¸ÀZÓ#PÒPÙ7ð ñ ô ˜.Ó4°jÐ@Ð@ùó	s   Ç(HÚout_dimsr8   Úallow_none_pass_throughc                 ó8  ^^^^^• [        U 5      m[        TTUUU4S j5      n[        U [        5      (       a  US   n[        R
                  " U TTU5      $ U(       a  [        UU4S j[        X5       5       5      $ [        UU4S j[        X5       5       5      $ )Nc            
      óF   >• S[        T 5       ST ST S[        T 5       S3	$ )Nr/   ú, ..., out_dims=z0): `out_dims` must have one dim per output (got z outputs) of r0   )r2   )r-   Únum_outputsr;   s   €€€r   Ú<lambda>Ú!_unwrap_batched.<locals>.<lambda>�   s4   ø€ �%œ	 $›Ð(Ð(8¸¸
ð C(Ø(3 }°MÄ)ÈDÃ/ÐARÐRSñUr#   r   c              3   ód   >#   • U  H%  u  pUb  [         R                  " UTTU5      OS v •  M'     g 7fr(   ©r5   Ú_remove_batch_dim©r   ÚoutÚout_dimr8   r,   s      €€r   r   Ú"_unwrap_batched.<locals>.<genexpr>Œ   s@   øé € ð 
ò !H‘�ð ‘?ô ×'Ò'¨¨Z¸ÀWÔMàôò !Hùs   ƒ-0c              3   óZ   >#   • U  H   u  p[         R                  " UTTU5      v •  M"     g 7fr(   rD   rF   s      €€r   r   rI   •   s.   øé € ð 
â G‘�ô ×#Ò# C¨°ZÀ×IÐIÚ Gùs   ƒ(+)r"   r)   r   r   r5   rE   r    r   )	r   r;   r,   r8   r-   r<   Úout_dims_as_tuplerH   r@   s	    ````   @r   Ú_unwrap_batchedrL   u   sœ   ü€ ô ˜Ó/€KÜ!ØØö	UóÐô �/¤6×*Ñ*Ø# AÑ&ˆÜ×&Ò& ¸
ÀJÐPWÓXÐXÞÜõ 
ô !$ OÔ Gó
ó 
ð 	
ô õ 
ä # OÔ Gó
ó 
ð 	
r#   Úoutputsc                 ór  • [        U [        5      (       a  g [        U [        5      (       d0  [        S[	        U5       S[	        U5       S[        U 5       S35      e[        U 5       HM  u  p#[        U[        5      (       a  M  [        S[	        U5       S[	        U5       S[        U5       SU S3	5      e   g )Nr/   z	, ...): `z%` must only return Tensors, got type z as the return.z for return r0   )r   r   r    r   r2   r3   Ú	enumerate)rM   r-   ÚidxÚoutputs       r   Ú_validate_outputsrR   Ÿ   s¼   € Ü�'œ6×"Ñ"ØÜ�gœu×%Ñ%ÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% g£ ¨ð@ó
ð 	
ô ! Ö)‰ˆÜ�fœf×%Ñ%ÙÜØ”I˜d“OÐ$ I¬i¸«oÐ->ð ?!Ü!% f£ ¨l¸3¸%¸qðBó
ð 	
ò *r#   c                 ó¾   • [        U [        5      (       a  g [        U [        5      (       a  [        S U  5       5      (       d  [	        S[        U5       SU  S35      eg )Nc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr(   )r   r1   )r   rH   s     r   r   Ú6_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   r1   r    Úallr   r2   )r;   r-   s     r   Ú#_check_out_dims_is_int_or_int_tuplerW   °   si   € Ü�(œC× Ñ ØÜ�h¤×&Ñ&¬cñ 2Ù08ó2÷ /ñ /ô Ø”I˜d“OÐ$Ð$4°X°Jð ?/ð 0ó
ð 	
ð/r#   c                 óR   • [        U S5      (       a  U R                  $ [        U 5      $ )NÚ__name__)ÚhasattrrY   Úrepr)r-   s    r   r2   r2   ½   s%   € Üˆt�Z× Ñ Ø�}‰}Ðô
 �‹:Ðr#   z@Please use `torch.vmap` instead of `torch._vmap_internals.vmap`.)Úcategoryc                 ó   • [        XU5      $ )z,
Please use torch.vmap instead of this API.
)Ú_vmap)r-   r*   r;   s      r   Úvmapr_   Ê   s   € ô � Ó)Ð)r#   c                 óR   ^ ^^^• [         R                  " T 5      UU UU4S j5       nU$ )Nc            	      óF  >• [        TT5        [        R                  R                  5       n [	        TXT5      u  p#T" U6 nT(       d  [        UT5        [        UTUUTTS9[        R                  R                  5         $ ! [        R                  R                  5         f = f)N)r<   )rW   r5   Ú_CÚ_vmapmode_increment_nestingr:   rR   rL   Ú_vmapmode_decrement_nesting)	r+   r,   r9   r8   r   r<   r-   r*   r;   s	        €€€€r   ÚwrappedÚ_vmap.<locals>.wrappedà   sŽ   ø€ ä+¨H°dÔ;Ü—X‘X×9Ñ9Ó;ˆ
ð	3Ü)?Ø˜¨4ó*Ñ&ˆNñ # 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<   re   s   ```` r   r^   r^   Ö   s'   û€ ô ‡_‚_�TÓ÷3ó ð3ð* €Nr#   )F)r   r   )r   r   F)rg   Úcollections.abcr   Útypingr   Útyping_extensionsr   r5   r   Útorch.utils._pytreer   r   r	   r1   r    Ú	in_dims_tÚ
out_dims_tÚlistr   r"   Ústrr)   r:   ÚboolrL   rR   rW   r2   ÚFutureWarningr_   r^   r   r#   r   Ú<module>rs      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#   