
    3j@(              	       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/wildlama/miniconda3/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    ayy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    ayyVAYY{{x{{1vQTC'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     :Aqwqz!zAs   !#)r   r#   r   )r'   s    r   r+   r+   G   s1    {{q6Q;: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    gdm(;r   r   )r   r   r0   s    r   r4   r4   U   s     {{;QBBr   c                    [        U 5      (       aI  [        U5      (       a9  [        U 5      [        U5      :w  a  [        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     =941=&&9r"   )r   r#   AssertionErrorsumr%   r&   s     r   r;   r;   \   s\    {{x{{q6SV  =3q9===A;;(1++  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>i   s     +A9Q<<   )r   maxr0   s    r   rA   rA   g   s!    {{++++r   c                    [        U 5      (       aT  [        U5      (       a9  [        U 5      [        U5      :w  a  [        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>s   s     @idaA))ir"   z#Invalid combination: tuple with int)r   r#   r=   r   r%   rG   r4   r&   s     r   rG   rG   n   sl    {{A;;1vQ$$@c!i@@@ !FGGA;;a,,5Lr   c                    [        U 5      (       a  [        U5      (       a9  [        U 5      [        U5      :w  a  [        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     ?YTQ1Yr"   r   r   )r   r#   r=   r   r%   appendrK   r4   )r   r   rvs       r   rK   rK   ~   s    {{A;;1vQ$$?SY??? A1)a,  8OA;;Q
++EQJ!%1*$$EAI!##r   initc                    [        U 5      (       a  [        U5      (       a9  [        U 5      [        U5      :w  a  [        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   r%   rangerM   rS   r4   reverse)r   rP   rN   r,   s       r   rS   rS      s    {{D>>1vT"$$G#a,GGG
 A 3q6A:r2.d34gadm+ /
 IIK8OD>> !KLLKr   Nidxshapestridec                 N  ^  Uc  [        U5      n[        T 5      (       a}  [        U5      (       ab  [        U5      (       aR  [        T 5      [        U5      :X  a  [        U5      [        U5      :X  d  [        e[	        S [        T X5       5       5      $ [        S5      e[        U5      (       aL  [        U5      (       a<  [        U5      [        U5      :w  a  [        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      Q9PgaA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     K8Ja++8Js   )rS   r   r#   r=   r   r%   )rX   rY   rZ   s   `  r   r^   r^      s    ~&}}E??x//HE
*s6{c%j/H$$QS%9PQQQ !MNNE??x//5zS[($$KE8JKKK(6"2"2$$6MU**r   crdc           	         Uc  [        U5      n[        U 5      (       a  [        U5      (       ab  [        U5      (       aR  [        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      :w  a  [        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      O7NGA!wqQ''7Nrb   zInvalid combination: crd=z, shape=r   r   rU   )	rS   r   r#   r=   r>   r%   rV   rg   r4   )rd   rY   rZ   resultr,   s        r   rg   rg      sX    ~&}}E??x//HE
*s6{c%j/H$$Os3v7NOOO #<SE%!QRR;CE??x//5zS[($$F3u:>1b1'#(9"958VYOOWUX.. 2 5zA~'#Qx;;M(6"2"2$$<r   	dst_shape	src_shapec                 ,   [        U 5      (       a]  [        U5      (       a9  [        U 5      [        U5      :w  a  [        e[        S [	        X5       5       5      $ Uc  [        e[        X5      $ [        U5      (       a  [        X5      $ X:  a  [        eU $ )Nc              3   <   #    U  H  u  p[        X5      v   M     g 7fr   )crd2crdr   s      r   r    crd2crd.<locals>.<genexpr>   s     G3F413Fr"   )r   r#   r=   r   r%   rg   r^   )rd   rk   rl   s      r   ro   ro      s     }}I3x3y>)$$G3s3FGGG  $$3**I3**$$Jr   trgc                 4   [        U 5      (       a|  [        U5      (       aa  [        U 5      [        U5      :w  a  [        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   r   filterr%   slice_)rd   rq   rh   r_   s       r   rv   rv     s    }}C==3x3s8#$$)25c-@-$!-@  !!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     *18A;;rC   )r   anyr0   s    r   ry   ry     s&    {{****Dyr   )r   r   )!__doc__	functoolsr   	itertoolsr   typingr   typing_extensionsr   r   intr   r	   __annotations__objectr   r   r   r/   r   r+   r1   r4   r;   rA   rG   rK   rS   r^   rg   ro   rv   ry   r)   r   r   <module>r      s#  B    $  E/22) 2"f " "   6%=   U8S=1 x H  x E#s(O %c %c %x C X ( s  c ( x H  $ $h $8 $.h h x 8+ +( +HtO +x +. FJ 	D !) 3;d?  H FJ	&3;d?.d"   0d" t r   