
    xKg7                         d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ  edddg      Z  ej                  ej                  ej                  ej                   j#                  ej                   j$                  d	      ej                   j#                  ej                   j$                  d	      ej                  ej                   j#                  ej                   j$                  d	      ej                   j#                  ej                   j$                  d	      ej                  ej                  	      e	j&                  d
         Z G d de      Zd Z G d de      Z G d de      ZddZddZd Zd Zy)    )
namedtupleN)
_helperlib)configExtentbeginend   )ndimattempt_nocopy_reshapec                   @    e Zd ZdZdZd Zd Zd Zd Zd Z	dd	Z
d
 Zy)DimzA single dimension of the array

    Attributes
    ----------
    start:
        start offset
    stop:
        stop offset
    size:
        number of items
    stride:
        item stride
    startstopsizestridesinglec                 ^    || _         || _        || _        || _        || _        |r|dk(  sJ y y Nr	   r   selfr   r   r   r   r   s         Y/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/misc/dummyarray.py__init__zDim.__init__,   s8    
		TQY&&Y6    c                    t        |t              r|j                  | j                        \  }}}|| j                  z  }| j
                  |t        | j                        z  z   }| j
                  |t        | j                        z  z   }|dk(  rd}nt        |||      }t        ||||d      }|S |dk7  r| ||dz    n| dd  }|j                  dk7  rt        t        |j
                  |j                  |j                  |j                  d      S )Nr   r	   Fr   T)
isinstancesliceindicesr   r   r   abs_compute_sizer   
IndexErrorr   )	r   itemr   r   stepr   r   retsliceds	            r   __getitem__zDim.__getitem__4   s   dE" $TYY 7E4DKK'FJJT[[)9!99E::s4;;'7 77D{$UD&9C J,0BJT$tax(DIF{{a  ll[[[[}} r   c                 :    | j                   || j                  z  z   S N)r   r   )r   idxs     r   
get_offsetzDim.get_offsetR   s    zzC$++---r   c                 h    d}|| j                   | j                  | j                  | j                  fz  S )Nz*Dim(start=%s, stop=%s, size=%s, stride=%s))r   r   r   r   )r   strfmts     r   __repr__zDim.__repr__U   s+    =TYY		4;;GGGr   c                     t        | j                  |z
  | j                  |z
  | j                  | j                  | j
                        S )Nr   )r   r   r   r   r   r   )r   bases     r   	normalizezDim.normalizeY   s:    d*T1A		$++dkkK 	Kr   Nc                     || j                   }|| j                  }|| j                  }|| j                  }|| j                  }t        |||||      S r)   )r   r   r   r   r   r   r   s         r   copyzDim.copy]   s[    =JJE<99D<99D>[[F>[[F5$ff55r   c                      | j                   |k(  S r)   r   )r   itemsizes     r   is_contiguouszDim.is_contiguousj   s    {{h&&r   )NNNNN)__name__
__module____qualname____doc__	__slots__r   r'   r+   r.   r1   r3   r7    r   r   r   r      s3     <I'<.HK6'r   r   c                 :    t        d t        | |      D              S )Nc              3   D   K   | ]  \  }}|j                  |        y wr)   )r+   ).0ids      r   	<genexpr>z compute_index.<locals>.<genexpr>o   s     >+=41aq||A+=s    )sumzip)r   dimss     r   compute_indexrG   n   s    >3w+=>>>r   c                       e Zd ZdZd Zd Zy)ElementFc                     || _         y r)   extent)r   rL   s     r   r   zElement.__init__u   s	    r   c              #   (   K   | j                    y wr)   rK   r   s    r   iter_contiguous_extentzElement.iter_contiguous_extentx   s     kks   N)r8   r9   r:   is_arrayr   rO   r=   r   r   rI   rI   r   s    Hr   rI   c                   ~    e Zd ZdZdZed        Zd Zd Zd Z	d Z
d Zed	        Zed
        Zd Zd ZddZddZy)Arraya  A dummy numpy array-like object.  Consider it an array without the
    actual data, but offset from the base data pointer.

    Attributes
    ----------
    dims: tuple of Dim
        describing each dimension of the array

    ndim: int
        number of dimension

    shape: tuple of int
        size of each dimension

    strides: tuple of int
        stride of each dimension

    itemsize: int
        itemsize

    extent: (start, end)
        start and end offset containing the memory region
    Tc                     g }t        ||      D ].  \  }}t        ||||z  z   ||d      }|j                  |       d}0  | ||      S )NF)r   r   )rE   r   append)	clsoffsetshapestridesr6   rF   ashapeastridedims	            r   	from_desczArray.from_desc   s[    "5'2OFGffv'77"$CKKF	  3
 4""r   c                    t        |      | _        t        | j                        | _        t        d | j                  D              | _        t        d | j                  D              | _        || _        t        j                  t        j                  | j                  d      | _        | j                         | _        | j                         | _        y )Nc              3   4   K   | ]  }|j                     y wr)   )r   r@   r[   s     r   rC   z!Array.__init__.<locals>.<genexpr>   s     9y388y   c              3   4   K   | ]  }|j                     y wr)   r5   r_   s     r   rC   z!Array.__init__.<locals>.<genexpr>   s     =9CSZZ9r`   r	   )tuplerF   lenr
   rW   rX   r6   	functoolsreduceoperatormulr   _compute_extentrL   _compute_layoutflags)r   rF   r6   s      r   r   zArray.__init__   s    $K			N	9tyy99
=499== $$X\\4::qA	**,))+
r   c                 ,   | j                   sdddS t        | j                   D cg c]  }|j                  dk(   c}      rdddS ddd}| j                  }t	        | j                         D ]K  }|j
                  dk(  rdddc S |j
                  dk7  s)|j                  |k7  rd|d<   ||j
                  z  }M | j                  }| j                   D ]9  }|j
                  dk7  s|j                  |k7  r	d|d<   |c S ||j
                  z  }; |S c c}w )NT)C_CONTIGUOUSF_CONTIGUOUSr   Fr	   rl   rm   )rF   anyr   r6   reversedr   )r   r[   rj   sds       r   ri   zArray._compute_layout   s
    yy$($?? 49959C

a956$)5AA!%t< ]]DII&Cxx1}(,dCCxx1}::#,1E.)chh ' ]]99Cxx1}::#,1E.) Lchh  3 6s   Dc                    dg| j                   z  }| j                  D cg c]  }|dz
  	 }}t        || j                        }t        || j                        | j                  z   }t        ||      }t        ||      S c c}w )Nr   r	   )r
   rW   rG   rF   r6   maxr   )r   firstidxslastidxr   r   s         r   rh   zArray._compute_extent   st    3?"&**-*Q1q5*-h		2Wdii04==@4eT""	 .s   A>c                 <    d| j                   d| j                  dS )Nz<Array dims=z
 itemsize=>)rF   r6   rN   s    r   r.   zArray.__repr__   s    04		4==IIr   c                 l   t        |t              s|g}nt        |      }t        |      }t        | j                        }||kD  rt        d||z
  fz        t        |      |k  r*|j                  t        d d              t        |      |k  r*t        | j                  |      D cg c]  \  }}|j                  |       }}}|D cg c]  }|j                  r|j                   }}t        || j                        }	|r |	j                  | d   S t        |	j                         S c c}}w c c}w )Nz%d extra indices givenr   )r   rb   listrc   rF   r"   rT   r   rE   r'   r   r   rR   r6   reshaperI   rL   )
r   r#   nitemr
   r[   itrF   rB   newshapearrs
             r   r'   zArray.__getitem__   s   $&6D:DD	499~4<5GHH $i$KKdD)* $i$ 47tyy$3GH3GR#3GH$(9DqAFFD9D$--(3;;)!,,3::&& I9s   (D+
D1D1c                      | j                   d   S )Nrl   rj   rN   s    r   is_c_contigzArray.is_c_contig       zz.))r   c                      | j                   d   S )Nrm   r   rN   s    r   is_f_contigzArray.is_f_contig   r   r   c              #   <  K   | j                   s| j                  r| j                   y| j                  d   j                  | j                  d   j                  k  r.| j                  d   }| j                  dd }| j
                  dd }n-| j                  d   }| j                  dd }| j
                  dd }|j                  | j                        r\|D cg c]  }t        |       }}t        j                  | D ].  }t        ||      }||j                  z   ||j                  z   f 0 y| j
                  D cg c]  }t        |       }}t        j                  | D ]+  }t        || j                        }||| j                  z   f - yc c}w c c}w w)z Generates extents
        r   r   r	   N)r   r   rL   rF   r   rW   r7   r6   range	itertoolsproductrG   r   r   )	r   innerdim	outerdims
outershapert   oslenr   r0   rV   s	            r   rO   zArray.iter_contiguous_extent   sf     t//++yy|""TYYr]%9%9999Q< IIabM	!ZZ^
99R= IIcrN	!ZZ_
%%dmm4+56:aq:6(00%8G()<D/1EEE  9 ,0::6:aq:6(00%8G*7DII>F &4=="888  9 7
 7s    CFF)AF=FAFc                    | j                   }t        |      }|| j                  k(  r| d fS |j                  dd      }|rt	        d|j                         z        |dvrt        d      d}d}t        |      D ]"  \  }}	|	dk  r|dk(  r|}t        d	      ||	z  }$ |dk\  rA|dk(  s| j                  |z  dk7  rt        d
      |d| | j                  |z  fz   ||dz   d  z   }t        j                  t        j                  |d      }
|dk(  r| j                  rdnd}|
| j                  k7  rt        d      | j                  s| j                  rC|dk(  rt        t!        | |            }n |dk(  rt        t#        | |            }nt%        d      t'        j(                  |t&        j*                  j,                        }t'        j.                  | j                  t&        j*                  j,                        }t'        j.                  | j0                  t&        j*                  j,                        }t'        j.                  |t&        j*                  j,                        }t3        ||||||| j4                  |dk(        st7        d      | j9                  | j:                  j<                  ||| j4                        }|t        | j?                               fS )NorderCzunknown keyword arguments %sCFAorder not C|F|Ar   r	   r   z&can only specify one unknown dimensionz.cannot infer valid shape for unknown dimensionAFz%reshape changes the size of the arrayunreachable)dtypezreshape would require copyrW   rX   r6   ) r
   rc   rW   pop	TypeErrorkeys
ValueError	enumerater   rd   re   rf   rg   r   r   ry   iter_strides_c_contigiter_strides_f_contigAssertionErrornpempty	ctypeslibc_intparrayrX   r   r6   NotImplementedErrorr\   rL   r   rO   )r   newdimskwsoldndnewndr   
unknownidx	knownsizerA   r[   newsize
newstridesolddims
oldstridesr%   s                  r   rz   zArray.reshape  s   		Gdjj :%:SXXZGHH.// 
	(FAsQw#!"J$%MNNS 	 ) ?A~Y!6!!; !QRR!!J/99	134!*q./23 ""8<<!<C<++CEdiiDEEt//|!"7g"FG
#!"7g"FG
$]33%)<)<=J hhtzz1D1DEG$,,bll6I6IJJhhwbll.A.ABG)	 **FGGnnT[[..g%/$--  I D446777r   Nc                 p   g g }}|Qt        | j                  | j                        D ]-  \  }}|dk7  s|j                  |       |j                  |       / nt	        |t
              s|f}|D ]  }| j                  |   dk7  st        d       t        t        | j                  | j                              D ]/  \  }\  }}||vs|j                  |       |j                  |       1 | j                  | j                  j                  ||| j                        }|t        | j                               fS )Nr	   zDcannot select an axis to squeeze out which has size not equal to oner   )rE   rW   rX   rT   r   rb   r   r   r\   rL   r   r6   ry   rO   )	r   axisr}   r   lengthr   axrA   newarrs	            r   squeezezArray.squeezea  s$   !2*<"%djj$,,"?Q;OOF+%%f- #@
 dE*w::b>Q&$!   (1TZZ1N'O##FFD=OOF+%%f- (P KK]]	   
 tD779:::r   c                 D   |dvrt        d      |dv r| j                  s|dv rs| j                  rg| j                  f}| j                  f}| j                  | j                  j                  ||| j                        }|t        | j                               fS t        d      )Nr   r   CAFAzravel on non-contiguous array)r   r   r   r   r6   r\   rL   r   ry   rO   r   )r   r   r}   r   r~   s        r   ravelzArray.ravel}  s    .//TMd..D=T%5%5		|H--)J..!2!2Hj!%0CT88:;;; &&EFFr   r)   )r   )r8   r9   r:   r;   rP   classmethodr\   r   ri   rh   r.   r'   propertyr   r   rO   rz   r   r   r=   r   r   rR   rR   |   sz    . H# #,$L#J'0 * * * *94J8X;8Gr   rR   c              #   |   K   || j                   n|}| j                  }| d}|dd D ]  }||z  }||z    yw)z$yields the f-contiguous strides
    Nr	   r   )rW   r6   )r~   rW   r6   rD   rt   s        r   r   r     sM      CIIEE||H
N
C3BZqHn s   :<c              #      K   | j                   n| j                  fd}t        t         |                   D ]  }|  yw)z$yields the c-contiguous strides
    Nc               3   X   K    d} t        dd        D ]  }| |z  } | z    y wr   )ro   )rD   rt   r6   rW   s     r   genz"iter_strides_c_contig.<locals>.gen  s9     %)$A1HC.  %s   '*)rW   r6   ro   ry   )r~   rW   r   rA   r6   s    `  @r   r   r     sB      CIIEE||H! d35k" #s   AA
c                     t        | t              ryt        | t              r"t        |       |k(  rt	        d | D              syyy)NFc              3   <   K   | ]  }t        |t                y wr)   )r   r   )r@   r|   s     r   rC   z&is_element_indexing.<locals>.<genexpr>  s     <tz"e,ts   T)r   r   rb   rc   rn   )r#   r
   s     r   is_element_indexingr     s@    $	D%	 t9<t<<
  r   c                 L    |dkD  r| }|}n|}| }| }||k\  ry||z
  dz
  |z  dz   S )z1Algorithm adapted from cpython rangeobject.c
    r   r	   r=   )r   r   r$   lohis        r   r!   r!     sH     axu	RxGaKD 1$$r   r)   )collectionsr   r   rd   rf   ctypesnumpyr   numbar   
numba.corer   r   	CFUNCTYPEc_intc_longr   	ndpointerr   	c_helpersr   objectr   rG   rI   rR   r   r   r   r!   r=   r   r   <module>r      sJ   "        
Hw.	/
)))
LL
MMLL2<<..Q7LL2<<..Q7
MMLL2<<..Q7LL2<<..Q7
MM
LL
 /0
2 O'& O'd?f NGF NGb	"%r   