
    qi4&              	          U d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 e
ed   z  Zeed	<   d
edee
   fdZd
edee   fdZd
edeedf   fdZdededefdZdedee
df   fdZde
de
fdZdede
fdZdedede
fdZdede
fdZdededefdZdededefdZd*dededefdZd+deded edz  defd!Z	 d+d"edz  ded edz  de
fd#Z	 d+d"ed$ed%edz  defd&Zd"dez  e
z  d'ee
z  dee
z  fd(Zddez  e
z  defd)Z y),z&
Functions for manipulating IntTuples
    )reduce)chain)	TypeAlias)TypeIs   )Integer)IntTuple.r	   xreturnc                 "    t        | t              S N)
isinstancer   r
   s    i/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/distributed/_pycute/int_tuple.pyis_intr   1   s    a!!    c                 "    t        | t              S r   )r   tupler   s    r   is_tupler   5   s    ar   .c                 "    t        |       r| fS | S r   )r   r   s    r   as_tupler   9   s    aytHr   abc                     t        |       rt        |      ryt        |       r@t        |      r5t        |       t        |      k(  xr t        d t	        | |      D              S y)NTc              3   :   K   | ]  \  }}t        ||        y wr   )match_structure.0r
   ys      r   	<genexpr>z"match_structure.<locals>.<genexpr>C   s     'T$!Q1(='T   F)r   r   lenallzipr   r   s     r   r   r   ?   sL    ayVAY{x{1vQTC'T#aQR)'T$TTr   tc                 `    t        |       r!t        |       dk(  ryt        d | D              S | fS )Nr    c              3   @   K   | ]  }t        |      D ]  }|   y wr   )flatten)r   r   is      r   r    zflatten.<locals>.<genexpr>L   s      :qwqz:!::s   )r   r"   r   )r&   s    r   r*   r*   G   s/    {q6Q;:A:::tr   c                 <    t        | dkD        t        | dk        z
  S )Nr   )boolr   s    r   signumr/   Q   s    A;a!e$$r   c                 8    t        |       rt        d | d      S | S )Nc                     | t        |      z  S r   )product)valelems     r   <lambda>zproduct.<locals>.<lambda>W   s    gdm(; r   r   )r   r   r.   s    r   r2   r2   U   s    {;QBBr   c                     t        |       r@t        |      r5t        |       t        |      k(  sJ t        d t        | |      D              S t        |       st        |      rJ | |z  S )Nc              3   :   K   | ]  \  }}t        ||        y wr   )inner_productr   s      r   r    z inner_product.<locals>.<genexpr>_   s     =41a=A&=r!   )r   r"   sumr$   r%   s     r   r8   r8   \   sX    {x{1vQ=3q!9===A;x{221ur   c                 @    t        |       rt        d | D              S | S )Nc              3   2   K   | ]  }t        |        y wr   )	tuple_max)r   r
   s     r   r    ztuple_max.<locals>.<genexpr>g   s     +A9Q<+   )r   maxr.   s    r   r<   r<   e   s    {++++r   c                     t        |       rKt        |      r5t        |       t        |      k(  sJ t        d t        | |      D              S t	        d      t        |      rt        | t        |            S | |z  S )Nc              3   :   K   | ]  \  }}t        ||        y wr   )
elem_scaler   s      r   r    zelem_scale.<locals>.<genexpr>p   s     @daAq)@r!   z#Invalid combination: tuple with int)r   r"   r   r$   AssertionErrorrA   r2   r%   s     r   rA   rA   l   sj    {A;q6SV###@c!Qi@@@ !FGGA;a,,q5Lr   c                    t        |       rt        |      r5t        |       t        |      k(  sJ t        d t        | |      D              S g }| D ]2  }|j	                  t        ||             t        |t        |            }4 t        |      S t        |      rt        | t        |            S | |z  dk(  s
|| z  dk(  sJ | |z   dz
  |z  S )Nc              3   :   K   | ]  \  }}t        ||        y wr   )	shape_divr   s      r   r    zshape_div.<locals>.<genexpr>   s     ?TQ1a?r!   r   r   )r   r"   r   r$   appendrE   r2   )r   r   rvs       r   rE   rE   {   s    {A;q6SV###?SAY??? A -1a)a,- 8OA;Q
++q5A:Q!++EAI!##r   initc                    t        |       rt        |      r5t        |       t        |      k(  sJ t        d t        | |      D              S g }t	        t        |       dz
  dd      D ]1  }|j                  t        | |   |             |t        | |         z  }3 |j                          t        |      S t        |      rt        d      |S )Nc              3   :   K   | ]  \  }}t        ||        y wr   )suffix_product)r   r
   r+   s      r   r    z!suffix_product.<locals>.<genexpr>   s     G$!Q1-Gr!   r   z(Invalid combination: int with tuple init)
r   r"   r   r$   rangerF   rL   r2   reverserB   )r   rI   rG   r+   s       r   rL   rL      s    {D>q6SY&&&G#a,GGG
 A 3q6A:r2. ,!d34gadm+,
 IIK8OD> !KLLKr   Nidxshapestridec                     |t        |      }t               rnt        |      rXt        |      rMt               t        |      k(  rt        |      t        |      k(  sJ t        d t	         ||      D              S t        d      t        |      rBt        |      r7t        |      t        |      k(  sJ t         fdt	        ||      D              S t        |      st        |      rJ  |z  |z  S )Nc              3   >   K   | ]  \  }}}t        |||        y wr   idx2crd)r   r+   sds       r   r    zidx2crd.<locals>.<genexpr>   s     QgaAAq)Q   z*Invalid combination: tuple with int stridec              3   >   K   | ]  \  }}t        ||        y wr   rU   )r   rW   rX   rP   s      r   r    zidx2crd.<locals>.<genexpr>   s     K1a+Ks   )rL   r   r"   r   r$   rB   )rP   rQ   rR   s   `  r   rV   rV      s    ~&}E?x/s8s5z)c&kSZ.GGGQS%9PQQQ !MNNE?x/u:V,,,KE68JKKKx/???6MU**r   crdc           	         |t        |      }t        |       rtt        |      rXt        |      rMt        |       t        |      k(  rt        |      t        |      k(  sJ t        d t	        | ||      D              S t        d|  d|       | d} t        |      rt        |      rt        |      t        |      k(  sJ d}t        t        |      dz
  dd      D ]8  }|t        | t        ||         z  ||   ||         z  }| t        ||         z  } : t        |      dkD  r|t        | |d   |d         z  }|S t        |      st        |      rJ | |z  S )Nc              3   >   K   | ]  \  }}}t        |||        y wr   )crd2idx)r   crW   rX   s       r   r    zcrd2idx.<locals>.<genexpr>   s     OGAq!wq!Q'OrY   zInvalid combination: crd=z, shape=r   r   rM   )	rL   r   r"   r9   r$   rB   rN   r^   r2   )r[   rQ   rR   resultr+   s        r   r^   r^      sZ    ~&}E?x/s8s5z)c&kSZ.GGGOs3v7NOOO #<SE%!QRR;CE?x/u:V,,,F3u:>1b1 /'#a(9"958VAYOOWU1X../ 5zA~'#uQx;;Mx/???<r   	dst_shape	src_shapec                     t        |       rPt        |      r5t        |       t        |      k(  sJ t        d t        | |      D              S |J t	        | |      S t        |      rt        | |      S | |k  sJ | S )Nc              3   :   K   | ]  \  }}t        ||        y wr   )crd2crdr   s      r   r    zcrd2crd.<locals>.<genexpr>   s     G41aAGr!   )r   r"   r   r$   r^   rV   )r[   ra   rb   s      r   re   re      s     }Is8s9~---G3sI3FGGG (((3	**I3	**?"?Jr   trgc                    t        |       rrt        |      r\t        |       t        |      k(  sJ t        t        t	        d t        | |      D cg c]  \  }}t        ||       c}}             S t        d      | |fS yc c}}w )Nc                     | dk7  S )Nr(   r(   r   s    r   r5   zslice_.<locals>.<lambda>   s
    !r' r   z+Invalid combination: tuple crd with int trgr(   )r   r"   r   r   filterr$   slice_rB   )r[   rf   r_   rW   s       r   rj   rj      s    }C=s8s3x''')25c3-@$!Q1@  !!NOO	v As   Bc                 D    t        |       rt        d | D              S | d u S )Nc              3   2   K   | ]  }t        |        y wr   )has_none)r   rH   s     r   r    zhas_none.<locals>.<genexpr>  s     *18A;*r=   )r   anyr.   s    r   rm   rm   	  s$    {****Dyr   )r   r   )!__doc__	functoolsr   	itertoolsr   typingr   typing_extensionsr   r   intr   r	   __annotations__objectr   r   r   r-   r   r*   r/   r2   r8   r<   rA   rE   rL   rV   r^   re   rj   rm   r(   r   r   <module>rw      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 6+ +( +HtO +x +( FJ 	D !) 3;d?  B FJ	&3;d?(us"   .us" t r   