
    !Цia                         S r SSKrSSKJr  SSKrSSKrSSKJrJ	r	  SSK
r
SSKJrJrJr  S r\S 5       r\S 5       r\S	 5       r\S
 5       rg)z
Tests used to verify running PyWavelets transforms in parallel via
concurrent.futures.ThreadPoolExecutor does not raise errors.
    N)partial)assert_allcloseassert_array_equal)futuresmax_workersuses_futuresc                 F   [        U 5      [        U5      :w  a  g[        X5       Hy  u  p#[        U[        5      (       a!  [        X#5       H  u  pE[	        XE5        M     M;  [        U[
        5      (       a)  UR                  5        H  u  pg[	        XsU   5        M     My    g   g)NFT)lenzip
isinstancetupler   dictitems)coefs1coefs2c1c2a1a2kvs           Y/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/tests/test_concurrent.py_assert_all_coeffs_equalr      s    
6{c&k!'b%  b+"2* &D!!
"1e, #  (     c            
         [         R                  " 5          [         R                  " S[        5        [	        [
        R                  [
        R                  [
        R                  /[        R                  " S5      [        R                  " S5      [        R                  " S5      /5       H  u  p[        U SSS9n[        S5       Hf  n[        S5       Vs/ s H  o1R                  5       PM     nn[        R                   " ["        S	9 n[%        UR'                  X$5      5      nS S S 5        Mh     M     W" W5      n[)        UWS
   5        S S S 5        g s  snf ! , (       d  f       M  = f! , (       d  f       g = f)Nignore      haar   waveletlevel
   d   r   )warningscatch_warningssimplefilterFutureWarningr   pywtswtswt2swtnnponeseyer   rangecopyr   ThreadPoolExecutorr   listmapr   )swt_funcx	transform_arrsexresultsexpected_results           r   test_concurrent_swtr@   $   s   
 
	 	 	"h6$))TYY? "
BFF2Jr
CEKH&BI2Y*/*5*Q*5//KHB"266)#:;G IH E $A, '"+> 
#	" 6HH 
#	"s6   B?E*E
.E*E	#'E*E*
E'"E**
E8c            	      b   [        [        R                  [        R                  [        R                  /[
        R                  " S5      [
        R                  " S5      [
        R                  " S5      /5       H  u  p[        U SSS9n[        S5       Hf  n[        S5       Vs/ s H  o1R                  5       PM     nn[        R                  " [        S9 n[        UR                  X$5      5      nS S S 5        Mh     U" U5      n[!        UWS	   5        M     g s  snf ! , (       d  f       M  = f)
Nr   r   r      r!   r$   r%   r&   r'   )r   r,   wavedecwavedec2wavedecnr0   r1   r2   r   r3   r4   r   r5   r   r6   r7   r   )wavedec_funcr9   r:   r;   r<   r=   r>   r?   s           r   test_concurrent_wavedecrG   9   s     dmmT]]K "
BFF2Jr
CEL&B	rA&+Cj1jFFHjD1++Drvvi67 ED  $A, '"+>E 2DDs   $DD
D.c            	      d   [        [        R                  [        R                  [        R                  /[
        R                  " S5      [
        R                  " S5      [
        R                  " S5      /5       H  u  p[        U SS9n[        S5       Hf  n[        S5       Vs/ s H  o1R                  5       PM     nn[        R                  " [        S9 n[        UR                  X$5      5      nS S S 5        Mh     U" U5      n[!        U/WS   /5        M     g s  snf ! , (       d  f       M  = f)	Nr   r   r   )r"   r$   r%   r&   r'   )r   r,   dwtdwt2dwtnr0   r1   r2   r   r3   r4   r   r5   r   r6   r7   r   )dwt_funcr9   r:   r;   r<   r=   r>   r?   s           r   test_concurrent_dwtrM   J   s     DHHdii;GGAJr
BFF2J?AHf5	rA&+Cj1jFFHjD1++Drvvi67 ED  $A, /!4wr{oFA 2DDs   #DD  
D/c                  *   S=p[         R                  R                  5       u  p#US   US   -
  n[        [         R                  [
        R                  " SS5      SUS9n[        S5       Hf  n[        S5       Vs/ s H  ocR                  5       PM     nn[        R                  " [        S	9 n[        UR                  XW5      5      n	S S S 5        Mh     U" U5      n
[        U
W	S
   5       H  u  p[        XXS9  M     g s  snf ! , (       d  f       M  = f)Ng+=rB   r      z	cmor1.5-1)scalesr"   sampling_periodr$   2   r&   r'   )atolrtol)r,   dataninor   cwtr0   aranger3   r4   r   r5   r   r6   r7   r   r   )rS   rT   timesstdtr:   r;   r<   r=   r>   r?   r   r   s                r   test_concurrent_cwtr\   [   s    D		 ID	aaB1a+(*,I2Y$)"I.Iq
I.''K@B266)23G A@   nOowr{3T5 4 /@@s   9C>,D
D	)__doc__r(   	functoolsr   numpyr0   pytestnumpy.testingr   r   r,   pywt._pytestr   r   r   r   r@   rG   rM   r\    r   r   <module>rd      s{        =  ; ;$ ? ?( ? ?  G G  6 6r   