ó
    Eñi4&  ã            	       ó2  • % S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  \
\S   -  r\\S	'   S
\S\\
   4S jrS
\S\\   4S jrS
\S\\S4   4S jrS\S\S\4S jrS\S\\
S4   4S jrS\
S\
4S jrS\S\
4S jrS\S\S\
4S jrS\S\
4S jrS\S\S\4S jrS\S\S\4S jrS*S\S\S\4S jjrS+S\S\S \S-  S\4S! jjr S+S"\S-  S\S \S-  S\
4S# jjr S+S"\S$\S%\S-  S\4S& jjrS"\\
-  S-  S'\\
-  S\\
-  4S( jrS\\
-  S-  S\4S) jr g),z&
Functions for manipulating IntTuples
é    )Úreduce)Úchain)Ú	TypeAlias)ÚTypeIsé   )ÚInteger)ÚIntTuple.r	   ÚxÚreturnc                 ó"   • [        U [        5      $ ©N)Ú
isinstancer   ©r
   s    Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributed/_pycute/int_tuple.pyÚis_intr   1   s   € Ü�aœÓ!Ð!ó    c                 ó"   • [        U [        5      $ r   )r   Útupler   s    r   Úis_tupler   5   s   € Ü�aœÓÐr   .c                 ó,   • [        U 5      (       a  U 4$ U $ r   )r   r   s    r   Úas_tupler   9   s   € Üˆa‡y�yØˆtˆØ€Hr   ÚaÚbc                 óø   • [        U 5      (       a  [        U5      (       a  g[        U 5      (       aI  [        U5      (       a9  [        U 5      [        U5      :H  =(       a    [        S [	        X5       5       5      $ g)NTc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Úmatch_structure©Ú.0r
   Úys      r   Ú	<genexpr>Ú"match_structure.<locals>.<genexpr>C   s   é € Ð'TÊ)Á$À!¬¸×(=Ð(=Ê)ùó   ‚F)r   r   ÚlenÚallÚzip©r   r   s     r   r   r   ?   sQ   € Üˆa‡y�y”V˜A—Y‘YØÜ�‡{�{”x —{‘{Ü�1‹vœ˜Q›Ñ×T¤CÑ'TÌ#ÈaÌ)Ó'TÓ$TÐTØr   Útc                 ól   • [        U 5      (       a"  [        U 5      S:X  a  g[        S U  5       5      $ U 4$ )Nr   © c              3   óJ   #   • U  H  n[        U5        H  o"v •  M     M     g 7fr   )Úflatten)r   r   Úis      r   r    Úflatten.<locals>.<genexpr>L   s   é € Ð:¢A˜q¬w°q¯z¨!œ©z™¢Aùs   ‚!#)r   r#   r   )r'   s    r   r+   r+   G   s1   € Ü�‡{�{Üˆq‹6�Q‹;ØäÑ:¡AÓ:Ó:Ð:àˆtˆr   c                 ó<   • [        U S:„  5      [        U S:  5      -
  $ )Nr   )Úbool©r   s    r   Úsignumr1   Q   s   € Ü��A‘‹;œ˜a !™e›Ñ$Ð$r   c                 óB   • [        U 5      (       a  [        S U S5      $ U $ )Nc                 ó   • U [        U5      -  $ r   )Úproduct)ÚvalÚelems     r   Ú<lambda>Úproduct.<locals>.<lambda>W   s   € ¨¬g°d«mÒ(;r   r   )r   r   r0   s    r   r4   r4   U   s    € Ü�‡{�{ÜÑ;¸QÀÓBÐBàˆr   c                 óø   • [        U 5      (       aE  [        U5      (       a5  [        U 5      [        U5      :X  d   e[        S [        X5       5       5      $ [        U 5      (       d  [        U5      (       a   eX-  $ )Nc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Úinner_productr   s      r   r    Ú inner_product.<locals>.<genexpr>_   s   é € Ð=²9©4¨1”= ×&Ð&²9ùr"   )r   r#   Úsumr%   r&   s     r   r;   r;   \   s\   € Ü�‡{�{”x —{‘{Ü�1‹vœ˜Q›ÓÐÐÜÑ=´3°q´9Ó=Ó=Ð=ä˜A—;‘;¤x°§{¡{Ð2Ð2Ø‰uˆr   c                 óJ   • [        U 5      (       a  [        S U  5       5      $ U $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Ú	tuple_max)r   r
   s     r   r    Útuple_max.<locals>.<genexpr>g   s   é € Ð+ª A”9˜Q—<�<ªùó   ‚)r   Úmaxr0   s    r   r@   r@   e   s!   € Ü�‡{�{ÜÑ+©Ó+Ó+Ð+àˆr   c                 ó  • [        U 5      (       aP  [        U5      (       a5  [        U 5      [        U5      :X  d   e[        S [        X5       5       5      $ [	        S5      e[        U5      (       a  [        U [        U5      5      $ X-  $ )Nc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Ú
elem_scaler   s      r   r    Úelem_scale.<locals>.<genexpr>p   s   é € Ð@²i©d¨aœ A×)Ð)²iùr"   z#Invalid combination: tuple with int)r   r#   r   r%   ÚAssertionErrorrF   r4   r&   s     r   rF   rF   l   sl   € Ü�‡{�{Ü�A�;‰;Ü�q“6œS ›VÓ#Ð#Ð#ÜÑ@´c¸!´iÓ@Ó@Ð@ä Ð!FÓGÐGä�A�;‰;Ü˜a¤¨£Ó,Ð,à‘5ˆLr   c                 ó¸  • [        U 5      (       aŠ  [        U5      (       a5  [        U 5      [        U5      :X  d   e[        S [        X5       5       5      $ / nU  H2  nUR	                  [        X15      5        [        U[        U5      5      nM4     [        U5      $ [        U5      (       a  [        U [        U5      5      $ X-  S:X  d
  X-  S:X  d   eX-   S-
  U-  $ )Nc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Ú	shape_divr   s      r   r    Úshape_div.<locals>.<genexpr>   s   é € Ð?²Y©T¨Qœ 1Ÿ˜²Yùr"   r   r   )r   r#   r   r%   ÚappendrK   r4   )r   r   ÚrÚvs       r   rK   rK   {   s½   € Ü�‡{�{Ü�A�;‰;Ü�q“6œS ›VÓ#Ð#Ð#ÜÑ?´S¸´YÓ?Ó?Ð?ð ˆAÛ�Ø—‘œ 1›Ô)Ü˜a¤¨£Ó,’ñ ô ˜“8ˆOä�A�;‰;Ü˜Q¤¨£
Ó+Ð+à‘5˜A“: ¡¨!£Ð+Ð+Ø‘E˜A‘I !Ñ#Ð#r   Úinitc                 óº  • [        U 5      (       a¯  [        U5      (       a5  [        U 5      [        U5      :X  d   e[        S [        X5       5       5      $ / n[	        [        U 5      S-
  SS5       H0  nUR                  [        X   U5      5        U[        X   5      -  nM2     UR                  5         [        U5      $ [        U5      (       a  [        S5      eU$ )Nc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Úsuffix_product)r   r
   r,   s      r   r    Ú!suffix_product.<locals>.<genexpr>•   s   é € ÐGº,±$°!œ¨×-Ð-º,ùr"   r   éÿÿÿÿz(Invalid combination: int with tuple init)
r   r#   r   r%   ÚrangerM   rS   r4   ÚreverserH   )r   rP   rN   r,   s       r   rS   rS   �   s¶   € ä�‡{�{Ü�D�>‰>Ü�q“6œS ›YÓ&Ð&Ð&ÜÑG¼#¸a¼,ÓGÓGÐGð
 ˆAô œ3˜q›6 A™: r¨2Ö.�Ø—‘œ¨©¨dÓ3Ô4Øœg a¡d›mÑ+’ñ /ð
 �I‰IŒKÜ˜“8ˆOä�D�>‰>Ü Ð!KÓLÐLàˆKr   NÚidxÚshapeÚstridec                 ó6  ^ • Uc  [        U5      n[        T 5      (       ay  [        U5      (       a^  [        U5      (       aN  [        T 5      [        U5      :X  a  [        U5      [        U5      :X  d   e[        S [	        T X5       5       5      $ [        S5      e[        U5      (       aH  [        U5      (       a8  [        U5      [        U5      :X  d   e[        U 4S j[	        X5       5       5      $ [        U5      (       d  [        U5      (       a   eT U-  U-  $ )Nc              3   ó@   #   • U  H  u  pn[        XU5      v •  M     g 7fr   ©Úidx2crd)r   r,   ÚsÚds       r   r    Úidx2crd.<locals>.<genexpr>²   s    é € ÐQÒ9P©g¨a°Aœ  q×)Ð)Ò9Pùó   ‚z*Invalid combination: tuple with int stridec              3   ó@   >#   • U  H  u  p[        TX5      v •  M     g 7fr   r]   )r   r_   r`   rX   s      €r   r    ra   ¸   s   øé € ÐKÒ8J±°œ  a×+Ð+Ò8Jùs   ƒ)rS   r   r#   r   r%   rH   )rX   rY   rZ   s   `  r   r^   r^   «   sÞ   ø€ Ø�~Ü Ó&ˆä�‡}�}Ü�E�?‰?œx¨×/Ñ/Ü�s“8œs 5›zÓ)¬c°&«k¼SÀ»ZÓ.GÐGÐGÜÑQ¼¸SÀ%Ô9PÓQÓQÐQä Ð!MÓNÐNä�E�?‰?œx¨×/Ñ/Ü�u“:¤ V£Ó,Ð,Ð,ÜÔK¼¸EÔ8JÓKÓKÐKä —‘¬x¸×/?Ñ/?Ð?Ð?Ø˜6‘M UÑ*Ð*r   Úcrdc           	      óú  • Uc  [        U5      n[        U 5      (       a  [        U5      (       a^  [        U5      (       aN  [        U 5      [        U5      :X  a  [        U5      [        U5      :X  d   e[        S [	        XU5       5       5      $ [        SU  SU 35      eU c  Sn [        U5      (       a¤  [        U5      (       a”  [        U5      [        U5      :X  d   eSn[        [        U5      S-
  SS5       H5  nU[        U [        X   5      -  X   X$   5      -  nU [        X   5      -  n M7     [        U5      S:”  a  U[        XS   US   5      -  nU$ [        U5      (       d  [        U5      (       a   eX-  $ )Nc              3   ó@   #   • U  H  u  pn[        XU5      v •  M     g 7fr   )Úcrd2idx)r   Úcr_   r`   s       r   r    Úcrd2idx.<locals>.<genexpr>Ç   s    é € ÐOÒ7N©G¨A°!”w˜q Q×'Ð'Ò7Nùrb   zInvalid combination: crd=z, shape=r   r   rU   )	rS   r   r#   r=   r%   rH   rV   rg   r4   )rd   rY   rZ   Úresultr,   s        r   rg   rg   ¾   sX  € ð �~Ü Ó&ˆä�‡}�}Ü�E�?‰?œx¨×/Ñ/Ü�s“8œs 5›zÓ)¬c°&«k¼SÀ»ZÓ.GÐGÐGÜÑO´s¸3ÀvÔ7NÓOÓOÐOä Ð#<¸S¸EÀÈ%ÈÐ!QÓRÐRà‰;ØˆCä�E�?‰?œx¨×/Ñ/Ü�u“:¤ V£Ó,Ð,Ð,ØˆFäœ3˜u›:¨™>¨1¨bÖ1�Øœ' #¬°±Ó(9Ñ"9¸5¹8ÀVÁYÓOÑO�ØœW U¡XÓ.Ñ.’ñ 2ô �5‹z˜A‹~Øœ' #¨Q¡x°¸±Ó;Ñ;�ØˆMä —‘¬x¸×/?Ñ/?Ð?Ð?Ø‘<Ðr   Ú	dst_shapeÚ	src_shapec                 ó  • [        U 5      (       aU  [        U5      (       a5  [        U 5      [        U5      :X  d   e[        S [        X5       5       5      $ Uc   e[	        X5      $ [        U5      (       a  [        X5      $ X:  d   eU $ )Nc              3   ó<   #   • U  H  u  p[        X5      v •  M     g 7fr   )Úcrd2crdr   s      r   r    Úcrd2crd.<locals>.<genexpr>ä   s   é € ÐGÒ3F©4¨1œ Ÿ˜Ò3Fùr"   )r   r#   r   r%   rg   r^   )rd   rk   rl   s      r   ro   ro   Þ   s‚   € ô �‡}�}Ü�I×ÑÜ�s“8œs 9›~Ó-Ð-Ð-ÜÑG´3°sÔ3FÓGÓGÐGð Ñ(Ð(Ð(Ü˜3Ó*Ð*ä�I×ÑÜ˜3Ó*Ð*à“?Ð"�?ØˆJr   Útrgc                 ó,  • [        U 5      (       ax  [        U5      (       a]  [        U 5      [        U5      :X  d   e[        [        [	        S [        X5       VVs/ s H  u  p#[        X#5      PM     snn5      6 5      $ [        S5      eU c  U4$ gs  snnf )Nc                 ó   • U S:g  $ )Nr)   r)   r   s    r   r7   Úslice_.<locals>.<lambda>ú   s   €  ! r¢'r   z+Invalid combination: tuple crd with int trgr)   )r   r#   r   r   Úfilterr%   Úslice_rH   )rd   rq   rh   r_   s       r   rv   rv   ò   s‰   € Ü�‡}�}Ü�C�=‰=Ü�s“8œs 3›xÓ'Ð'Ð'äÜÜÙ)Ü25°c´-Ô@²-©$¨!œ ž±-Ò@óðóð ô !Ð!NÓOÐOØ	‰àˆvˆàùó As   ÁBc                 óN   • [        U 5      (       a  [        S U  5       5      $ U S L $ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Úhas_none)r   rO   s     r   r    Úhas_none.<locals>.<genexpr>  s   é € Ð*ª 1”8˜A—;�;ªùrB   )r   Úanyr0   s    r   ry   ry   	  s&   € Ü�‡{�{ÜÑ*©Ó*Ó*Ð*à�DˆyÐr   )r   r   )!Ú__doc__Ú	functoolsr   Ú	itertoolsr   Útypingr   Útyping_extensionsr   r   Úintr   r	   Ú__annotations__Úobjectr   r   r   r/   r   r+   r1   r4   r;   r@   rF   rK   rS   r^   rg   ro   rv   ry   r)   r   r   Ú<module>r„      s#  ðòBõ Ý Ý Ý $å ð ˜E /Ñ2Ñ2€ˆ)Ó 2ð"ˆfð "˜ ™ô "ð �ð  ˜6 %™=ô  ð�ð ˜U 8¨S =Ñ1ô ð�xð  Hð °ô ðˆxð ˜E # s (™Oô ð%ˆcð %�cô %ðˆxð ˜Cô ð�Xð  (ð ¨sô ð�ð ˜cô ð�(ð ˜xð ¨Hô ð$�ð $˜hð $¨8ô $ñ*�hð  hð °xõ ñ6+�ð + (ð +°H¸t±Oð +Èxõ +ð( FJñ Ø	�D‰ð Ø!)ð Ø3;¸d±?ð àõ ðB FJñØ	ðØ&ðØ3;¸d±?ðàõð(�˜‘˜dÑ"ð ¨°©ð ¸À¹ô ð.�˜‘˜dÑ"ð  tõ r   