
    %YHh7                        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	  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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         V/var/www/html/planif/env/lib/python3.12/site-packages/numba/cuda/cudadrv/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__2   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_offsetP   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__S   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.normalizeW   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_contiguoush   s    {{h&&r   )NNNNN)__name__
__module____qualname____doc__	__slots__r   r&   r*   r-   r0   r2   r6    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>m   s     >41aq||A>s    )sumzip)r   dimss     r   compute_indexrF   l   s    >3w+=>>>r   c                       e Zd ZdZd Zd Zy)ElementFc                     || _         y r(   extent)r   rK   s     r   r   zElement.__init__s   s	    r   c              #   (   K   | j                    y wr(   rJ   r   s    r   iter_contiguous_extentzElement.iter_contiguous_extentv   s     kks   N)r7   r8   r9   is_arrayr   rN   r<   r   r   rH   rH   p   s    Hr   rH   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   )rD   r   append)	clsoffsetshapestridesr5   rE   ashapeastridedims	            r   	from_desczArray.from_desc   s`    "5'2 	OFGffv'77"$CKKF		
 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?   rZ   s     r   rB   z!Array.__init__.<locals>.<genexpr>   s     93889   c              3   4   K   | ]  }|j                     y wr(   r4   r^   s     r   rB   z!Array.__init__.<locals>.<genexpr>   s     =CSZZ=r_   r   )tuplerE   lenr	   rV   rW   r5   	functoolsreduceoperatormulr   _compute_extentrK   _compute_layoutflags)r   rE   r5   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   rk   rl   )rE   anyr   r5   reversedr   )r   rZ   ri   sds       r   rh   zArray._compute_layout   s    yy$($?? 4995C

a56$)5AA!%t< ]]DII& 	Cxx1}(,dCCxx1}::#,1E.)chh	 ]]99 	C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	   rV   rF   rE   r5   maxr   )r   firstidxslastidxr   r   s         r   rg   zArray._compute_extent   ss    3?"&**-Q1q5--h		2Wdii04==@4eT""	 .s   A>c                 <    d| j                   d| j                  dS )Nz<Array dims=z
 itemsize=>)rE   r5   rM   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   ra   listrb   rE   r!   rS   r   rD   r&   r   r   rQ   r5   reshaperH   rK   )
r   r"   nitemr	   rZ   itrE   rA   newshapearrs
             r   r&   zArray.__getitem__   s
   $&6D:DD	499~4<5GHH $i$KKdD)* $i$ 47tyy$3GHR#HH$(9qAFF99D$--(3;;)!,,3::&& I9s   (D+
D1D1c                      | j                   d   S )Nrk   ri   rM   s    r   is_c_contigzArray.is_c_contig       zz.))r   c                      | j                   d   S )Nrl   r   rM   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   rK   rE   r   rV   r6   r5   range	itertoolsproductrF   r   r   )	r   innerdim	outerdims
outershapers   oslenr   r/   rU   s	            r   rN   zArray.iter_contiguous_extent   sp     t//++yy|""TYYr]%9%9999Q< IIabM	!ZZ^
99R= IIcrN	!ZZ_
%%dmm4+56aq66(00%8 FG()<D/1EEEF ,0::6aq66(00%8 9G*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rV   rW   r5   ) r	   rb   rV   pop	TypeErrorkeys
ValueError	enumerater   rc   rd   re   rf   r   r   rx   iter_strides_c_contigiter_strides_f_contigAssertionErrornpempty	ctypeslibc_intparrayrW   r
   r5   NotImplementedErrorr[   rK   r   rN   )r   newdimskwsoldndnewndr   
unknownidx	knownsizer@   rZ   newsize
newstridesolddims
oldstridesr$   s                  r   ry   zArray.reshape  s   		Gdjj :%:SXXZGHH.// 
	( 	!FAsQw#!"J$%MNNS 		! ?A~Y!6!!;  "9 : : "!J/yyI-/0j1no./ ""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   )rD   rV   rW   rS   r   ra   r   r   r[   rK   r   r5   rx   rN   )	r   axisr|   r   lengthr   axr@   newarrs	            r   squeezezArray.squeeze`  s1   !2*<"%djj$,,"? .Q;OOF+%%f-.
 dE*w ::b>Q&$+  (1TZZ1N'O .##FFD=OOF+%%f-. 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   r5   r[   rK   r   rx   rN   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   )r7   r8   r9   r:   rO   classmethodr[   r   rh   rg   r-   r&   propertyr   r   rN   ry   r   r   r<   r   r   rQ   rQ   z   sz    . H# #,$L#J'0 * * * *94K8Z;8Gr   rQ   c              #   |   K   || j                   n|}| j                  }| d}|dd D ]  }||z  }||z    yw)z$yields the f-contiguous strides
    Nr   r   )rV   r5   )r}   rV   r5   rC   rs   s        r   r   r     sR      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   )rn   )rC   rs   r5   rV   s     r   genz"iter_strides_c_contig.<locals>.gen  s>     %)$ 	!A1HC. 	!s   '*)rV   r5   rn   rx   )r}   rV   r   r@   r5   s    `  @r   r   r     sG      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   rB   z&is_element_indexing.<locals>.<genexpr>  s     <z"e,<s   T)r   r   ra   rb   rm   )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   rc   re   ctypesnumpyr   numbar   r   	CFUNCTYPEc_intc_longr   	ndpointerr   	c_helpersr
   objectr   rF   rH   rQ   r   r   r   r    r<   r   r   <module>r      sE   "      	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 OGF OGd	"%r   