
    bi&              	         d dl mZ d dlZd dlmZ d dlZd dlZd dlm	Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZmZ g dZg d	Z e
j.                         s^ ej0                  d
      j3                  dd      Z e
j6                  ed      Z e
j6                  ed      Z e
j6                  ed      Zej>                  jA                  de      d        Z!ej>                  jA                  de      d        Z"ej>                  jA                  de      d        Z#ej>                  jA                  de      d        Z$ej>                  jA                  de      d        Z%d Z&ej>                  jA                  de      ej>                  jA                  dddg      d               Z'ej>                  jA                  dddg      ej>                  jA                  de      ej>                  jA                  dddg      d                      Z(ej>                  jA                  dddg      ej>                  jA                  de      ej>                  jA                  dddg      d                      Z)ej>                  jA                  d g d!      ej>                  jA                  d"d#d$d%ejT                  z  g      ej>                  jA                  d&d' d( g      d)                      Z+ej>                  jA                  d g d!      ej>                  jA                  d"d#d$d%ejT                  z  g      ej>                  jA                  d&d* d+ g      d,                      Z,ej>                  jA                  dd-d.g      ej>                  jA                  d/g d0      ej>                  jA                  d1d2d3gd2d4gd2d2gg      d5                      Z-ej>                  jA                  d6d7d8g      ej>                  jA                  d/g d0      ej>                  jA                  d1d2d3gd2d4gd2d2gg      d9                      Z.ej>                  jA                  dg d:      d;        Z/y)<    )annotationsN)combinations_with_replacement)normalize_chunks)fft_wrap)NUMPY_GE_200)	assert_eq	same_keys)fftifftrfftirffthfftihfft)fft2ifft2fftnifftnrfft2irfft2rfftnirfftnd   
   )   r   chunks)r   r   )r   r   funcnamec                   t        t        j                  |       }t        j                  t        d      }t        |j                        D ].  }t        j                  t              5   |||       d d d        0 y # 1 sw Y   ;xY w)N)   r   r   axis)
getattrdar
   
from_arraynparrrangendimpytestraises
ValueError)r   da_fftbad_darris       T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_fft.pytest_cant_fft_chunked_axisr/   %   sj    RVVX&F}}U62H8==! %]]:& 	%8!$	% 	%%	% 	%s   'A==B	c                    t        t        j                  |       }t        t        j                  |       }t	         |t
               |t                     y N)r"   r#   r
   npr   darrr%   r   r+   np_ffts      r.   test_fftr6   /   s4    RVVX&FRVVX&FfTlF5M*    c                   t        t        j                  j                  |       }t        t        j                  |       }t         |t               |t                     t         |t        dd       |t        dd             t         |t        dd       |t        dd             t        r-| j                  d      rt        j                  t        d      }nt        j                         }|5   |t        d      }d d d        |5   |t        d      }d d d        t               y # 1 sw Y   .xY w# 1 sw Y   "xY w)N)   	   r   r   axes)      r   z0`axes` should not be `None` if `s` is not `None`match)r"   daskarrayr
   r2   r   darr3r%   r   endswithr(   warnsDeprecationWarning
contextlibnullcontext)r   r+   r5   ctxexpectactuals         r.   test_fft2n_shapesrM   7   s    TZZ^^X.FRVVX&FfUmVE]+fUF0&V2TUuhV,fUH6.R ))&1llD

 $$&	 'v&'	 'v&'ff	' '' 's   4D/D;/D8;Ec           	     \   t        t        j                  |       }t        t        j                  |       }t	         |t
        d       |t        d             t	         |t
        d       |t        d             t	         |t
        dd       |t        dd             t	         |t
        dd       |t        dd             t	         |t
        dd       |t        dd             t	         |t        d       |t        d             t	         |t        dd       |t        dd             t	         |t        ddd	       |t        ddd	             t	         |t        d
dd	       |t        d
dd	             t	         |t        d
dd	       |t        d
dd	             y )Nr      backward)normorthoforwardr   r    )r!   rQ   r>   )r"   r#   r
   r2   r   r3   r%   darr2r4   s      r.   test_fft_n_kwargrU   O   sI   RVVX&FRVVX&FfT1oveQ/0fT2ub 12fT2J/r
1STfT2G,fUBW.MNfT2I.uby0QRfU#VE%:;fUAA&uaa(@Aubqz2ubqz2 ubqw/rPW1X ubqy1ubqy1r7   c                   t        t        j                  |       }t         |t        d       |t        d            sJ t         |t
        dd       |t
        dd            sJ t         |t        d       |t        d            rJ y )Nr   r   r    rO   )r"   r#   r
   r	   r3   rT   )r   r+   s     r.   test_fft_consistent_namesrW   h   sp    RVVX&FVD!_fT1o666VE11-veQQ/GHHHa&r*:;;;;r7   c                     t        j                  t              5  t        t        j
                         d d d        y # 1 sw Y   y xY wr1   )r(   r)   r*   r   r2   ones r7   r.   test_wrap_bad_kindr[   q   s/    	z	"   s	   =Adtypefloat32float64c                F   t        t        j                  |       }t        t        j                  |       }d}d}t        j                  t        j
                  |      |      j                  |      }t        j                  ||      }t        d|j                        D ]  }t        t        |j                        |      D ]  }	t        |      }
|	D ]
  }||   |
|<    |j                  |
      }t        t        |	            t        |	      k  r-t        j                   t"              5   |||	       d d d        { |||	      } |||	      }|j$                  |j$                  k(  sJ |j&                  |j&                  k(  sJ t)        ||         y # 1 sw Y   xY w)N)   r9   r:   )   ra   ra   )r\   r   r   r<   )r"   r2   r
   r#   arangeprodreshaper$   r&   r'   r   listrechunklensetr(   r)   r*   r\   shaper   )r   r\   r5   r+   ri   
chunk_sizeadnum_axesr=   csr-   d2rers                  r.   test_nd_ffts_axesrr   v   s`    RVVX&FRVVX&FEJ
		"''%..66u=A
a
+A!QVV$ !1%-J 	!Dj!B !a1!2B3t9~D	)]]:. *2D)* * 2D)AD)ww"((***ww"((***!R 	!!* *s   (FF modname	numpy.fft	scipy.fftc           	        t        j                  |       }	 t        ||      }t
        j                  |      }t        j                  |      }t        j                  |      }t              } ||      j                   ||      j                  k(  sJ  ||      j                   ||      j                  k(  sJ t         ||       ||             t         ||d       ||d             t         ||d       ||d             t         ||t        |      dz
         ||t        |      dz
               t         ||d|j                  d   dz
         |||j                  d   dz
               t         ||d|j                  d   dz
         ||d|j                  d   dz
               y # t        $ r  t        j                  d|  d| d       Y w xY w)	N`` missing function ``.r   r    r   )n)r!   rz   )r(   importorskipr"   AttributeErrorskipr3   astyperT   r%   r   r\   ri   r   rg   	rs   r   r\   fft_modfuncdarrcdarr2cnparrcwfuncs	            r.   test_wrap_fftsr      s    !!'*GCw) KKE\\% F\\% FTNE<f!3!3333<f!3!3333eElDL)eE"Da$89eF#T&q%9:eESZ!^,d6SZ!^.LMe!u{{1~12Vu{{1~)* f1Q! 34V!v||A23%  Cay 4XJbABCs   F; ;%G$#G$c           	        t        j                  |       }	 t        ||      }t
        j                  |      j                  t
        j                        }t        j                  |      j                  t        j                        }t        j                  |      }t              } ||      j                   ||      j                  k(  sJ  ||      j                   ||      j                  k(  sJ t         ||       ||             t         ||d       ||d             t         ||d       ||d             t         |||j                  d   dz
  |j                  d   dz
  fd       |||j                  d   dz
  |j                  d   dz
  fd             y # t        $ r  t        j                  d|  d| d       Y w xY w)	Nrw   rx   ry   r;   r<   r   r   r   r   )r(   r{   r"   r|   r}   r3   r~   rf   ri   rT   r%   r   r\   r   r   s	            r.   test_wrap_fftnsr      s    !!'*GCw) KK&&tzz2E\\% ((5F\\% FTNE<f!3!3333<f!3!3333eElDL)eE'f6)BCeF($vF*CDfv||A*FLLOa,?@&IVfll1o)6<<?Q+>?H  Cay 4XJbABCs   F& &%GGrz   )r      ra      r`   rl   g      ?g      ?r   cc                    | S r1   rZ   ms    r.   <lambda>r      s     r7   c                    d| dz
  fS )Nr   rZ   r   s    r.   r   r      s    q!a%j r7   c                     ||       }t         j                  j                  | |      }t        j                  j                  | ||      }t	        ||j
                        |j                  k(  sJ t        ||       y )Nr   )r2   r
   fftfreqr#   r   ri   r   r   )rz   rl   r   r1r2s        r.   test_fftfreqr      s`     	
!A	1	B	1Q	'BArxx(BII555b"r7   c                    | dz  dz   fS )Nr   r   rZ   r   s    r.   r   r      s    !q&1* r7   c                    d| dz  fS )Nr   r   rZ   r   s    r.   r   r      s    1a1f+ r7   c                *    ||       D cg c]
  }|dk7  s	| }}t         j                  j                  | |      }t        j                  j                  | ||      }t	        ||j
                        |j                  k(  sJ t        ||       y c c}w )Nr   r   )r2   r
   rfftfreqr#   r   ri   r   r   )rz   rl   r   cir   r   s         r.   test_rfftfreqr      sy     d&bAg&A&	A	B	Aa	(BArxx(BII555b" 	's
   
BBfftshift	ifftshiftr=   )Nr   r   r   r   )r   r   )r   r   )r   r   r   zshape, chunks)r   r   r`   )r   ra      )r   r   r   c                    t        t        j                  |       }t        t        j                  |       }t        j                  t        j
                  |            j                  |      }t        j                  ||      } |||      } |||      }	t        |j                  |	j                        D ];  \  }
}t        |
      dk(  rt        |      dk(  sJ ||
k(  r*J t        |      dk7  r;J  t        |	|       y Nr   r   )r"   r2   r
   r#   rb   rc   rd   r$   zipr   rg   r   )r   ri   r   r=   np_funcda_funcrk   rl   a_rd_reach_d_chunkseach_d_r_chunkss               r.   test_fftshiftr      s     bffh'Gbffh'G
		"''%.!))%0A
a'A
!T
C
!T
C*-ahh

*C -&}"'1,,,"m333'1,,,- c3r7   zfuncname1, funcname2)r   r   )r   r   c                   t        t        j                  |       }t        t        j                  |      }t        j                  t        j
                  |            j                  |      }t        j                  ||      } | |||      |      }	t        |j                  |	j                        D ];  \  }
}t        |
      dk(  rt        |      dk(  sJ ||
k(  r*J t        |      dk7  r;J  t        |	|       y r   )r"   r#   r
   r2   rb   rc   rd   r$   r   r   rg   r   )	funcname1	funcname2ri   r   r=   da_func1da_func2rk   rl   r   r   r   s               r.   test_fftshift_identityr     s     rvvy)Hrvvy)H
		"''%.!))%0A
a'A
8At$d
+C*-ahh

*C -&}"'1,,,"m333'1,,,- c1r7   )rt   ru   scipy.fftpackc                   t        j                  |       }| dk(  rrt        j                  t        d      5  t	        j
                  j                  |j
                  d      t        j                  j                  d             d d d        y t	        j
                  j                  |j
                  d      t        j                  j                  d             y # 1 sw Y   y xY w)Nr   z3does not match NumPy's API and is considered legacyr@   F)allow_fftpack   )	r(   r{   rF   FutureWarningr#   r
   r   r2   random)rs   r   s     r.   !test_scipy_fftpack_future_warningr     s    !!'*G/!\\!V
 	T FFOOGKKuO=bii>N>Nr>RS	T 	T
 	59")):J:J2:NO	T 	Ts   ACC$)0
__future__r   rH   	itertoolsr   numpyr2   r(   
dask.arrayrC   r#   dask.array.fftrB   dask.array.corer   r   dask.array.numpy_compatr   dask.array.utilsr   r	   all_1d_funcnamesall_nd_funcnames_array_expr_enabledrb   rd   r%   r$   r3   rT   rD   markparametrizer/   r6   rM   rU   rW   r[   rr   r   r   pir   r   r   r   r   rZ   r7   r.   <module>r      s_   "  3     , # 0 1D 	  rBIIcN""2r*E2==w/DBMM%0EBMM%1E %56% 7% %56+ 7+ %56 7. %56 70 %56< 7<
 %569i"89! : 7!4 [+$>?%569i"89 : 7 @8 [+$>?%569i"89 : 7 @. o.sCRUU34{,@AB C 5 / o.sCRUU3468MNO P 5 / j+%>?!STi3i5KL	 U @( 68QR !STi3i5KL	 U& $OP
P Q
Pr7   