
    YhG              	       ,   d dl Z d dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZmZmZ d dlZd dlmZmZ d dlmZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#ej$        j%        d             Z& G d d          Z'd Z(d Z)d Z*d Z+ej$        j,        d             Z-d Z.d  Z/d! Z0ej$        1                    d"g d#          ej$        1                    d$g d%          ej$        1                    d&d'd(g          ej$        1                    d)d*d+g          ej$        1                    d,d*d+g          d-                                                             Z2ej$        1                    d.ej3        g          d/             Z4dS )0    N)BytesIO)assert_equalassert_assert_array_equalbreak_cyclessuppress_warningsIS_PYPY)raiseswarns)wavfilec                     t           j                            t           j                            t                    d|           S )Ndata)ospathjoindirname__file__)fns    m/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/io/tests/test_wavfile.pydatafiler      s(    7<<1162>>>    c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           ~d S )NFTtest-44100Hz-le-1ch-4bytes.wavmmapD  )i:  
r   readr   r   r   np
issubdtypedtypeint32shaper   filenamerater   s       r   test_read_1r(      s      3\(8"4"44@@@
dT5!!!dj"(33444TZ)))D r   c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           ~d S )Nr   test-8000Hz-le-2ch-1byteu.wavr   @  )i      )
r   r   r   r   r   r    r!   r"   uint8r$   r%   s       r   test_read_2r.       s      2\(8"4"44@@@
dT4   dj"(33444TZ***D r   c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           ~d S )Nr   #test-44100Hz-2ch-32bit-float-le.wavr   r   i  r,   )
r   r   r   r   r   r    r!   r"   float32r$   r%   s       r   test_read_3r3   -   s      8\(8"4"44@@@
dT5!!!dj"*55666TZ***D r   c                     dD ]} t                      5 }|                    t          j        d           d}t          j        t          |          |           \  }}d d d            n# 1 swxY w Y   t          |d           t          t          j	        |j
        t          j                             t          |j        d           ~d S )Nr   z,Chunk .non-data. not understood, skipping itz)test-48000Hz-2ch-64bit-float-le-wavex.wavr   i  )i  r,   )r   filterr   WavFileWarningr   r   r   r   r    r!   r"   float64r$   )r   supr&   r'   r   s        r   test_read_4r9   :   s        	ECJJw-EG G GBH hx&8&8tDDDJD$		E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	T5!!!dj"*55666TZ***D s   A	A((A,	/A,	c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t	          |j        j	        dk    pt          j	        dk    o|j        j	        dk               t          |j        d           ~d S )	Nr   #test-44100Hz-2ch-32bit-float-be.wavr   r   >big=r1   )r   r   r   r   r   r    r!   r"   r2   	byteordersysr$   r%   s       r   test_read_5rA   J   s     
 
8\(8"4"44@@@
dT5!!!dj"*55666
$+ M0F 1L04
0D0K	N 	N 	NTZ***D
 
r   c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           t          |
                                d           t          |d	         d
           t          |                                d           ~d S )Nr   test-8000Hz-le-5ch-9S-5bit.wavr   r+   )	         r      r   r      )r   r   r   r   r   r    r!   r"   r-   r$   maxminr%   s       r   test_5_bit_odd_size_no_padrL   Y   s       3\(8"4"44@@@
dT4   dj"(33444TZ((( 	TJ&*** 	TXXZZ,,,T$Z%%%TXXZZ###D! r   c                     dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           t          |
                                d           t          |d	         d           t          |                                d
           ~d S )Nr   test-8000Hz-le-4ch-9S-12bit.wavr   r+   )rD         r   i  rH   i )r   r   r   r   r   r    r!   r"   int16r$   rJ   rK   r%   s       r   test_12_bit_even_sizerR   p   s       4\(8"4"44@@@
dT4   dj"(33444TZ((( 	T//333 	TXXZZ!4555T$Z###TXXZZ!5666D! r   c            	      f   d} t          j        t          |           d          \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           t          |g dg d	g d
g dg dg           d S )Ntest-8000Hz-le-3ch-5S-24bit.wavFr   r+   rE         r   )i   i  i )i   i  i r   r   r   )i   @i ?   ) rZ   i   r   r&   r'   r   s      r   test_24_bit_odd_size_with_padr\      s     1Hhx00u===JD$tBM$*bh//000V$$$ a    <<<<<<<<<<<<<<<	> ? ? ? ? ?r   c                     d} t          j        t          |           d          \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           t	          |dz  
                                           t          |g d	           d S )
N&test-1234Hz-le-1ch-10S-20bit-extra.wavFr     )
   rW   r   i   )
i i  i ?i  i i  i i  i i  )r   r   r   r   r   r    r!   r"   r#   r$   anyr[   s      r   test_20_bit_extra_datarb      s     8Hhx00u===JD$tBM$*bh//000U### a    TE\  !!!  
 
 
 
 
 
 
 
r   c                  j   d} t          j        t          |           d          \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           g dg d	g d
g dg dg}t          ||           d S )Ntest-8000Hz-le-3ch-5S-36bit.wavFr   r+   rU   ir   )         l   ` i   )         l   ` i   rX   )            l      ` i   )      ` rh       
r   r   r   r   r   r    r!   r"   int64r$   r&   r'   r   corrects       r   test_36_bit_odd_sizern      s    0Hhx00u===JD$tBM$*bh//000V$$$ 	!1%%% NMMMMMMMMMMMMMM	OG wr   c                  j   d} t          j        t          |           d          \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           g dg d	g d
g dg dg}t          ||           d S )Ntest-8000Hz-le-3ch-5S-45bit.wavFr   r+   rU   i r   )re   l   i  )rf   l   i  rX   )rg   l      i   )      rq   i   rj   rl   s       r   test_45_bit_even_sizerr      s    0Hhx00u===JD$tBM$*bh//000V$$$ ### LKKKKKKKKKKKKKK	MG wr   c                  j   d} t          j        t          |           d          \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           t          |dz  d           g dg d	g d
g dg dg}t          ||           d S )Ntest-8000Hz-le-3ch-5S-53bit.wavFr   r+   rU   i  r   )re   l x i )rf   l x i rX   )rg   l    x i   )    x ru   i   rj   rl   s       r   test_53_bit_odd_sizerv      s    0Hhx00u===JD$tBM$*bh//000V$$$ q!!! IHHHHHHHHHHHHHH	JG wr   c                  P   dD ]} d}t          j        t          |          |           \  }}t          |d           t	          t          j        |j        t
          j                             t          |j	        d           g dg dg dg d	g d
g}t          ||           ~d S )Nr   test-8000Hz-le-3ch-5S-64bit.wavr   r+   rU   )re   l )rf   l rX   )rg   l       )    r|   r,   rj   )r   r&   r'   r   rm   s        r   test_64_bit_even_sizer}     s      4\(8"4"44@@@
dT4   dj"(33444TZ((( JIIIIIIIIIIIIII	K 	T7###D' r   c                      dD ]V} t          t          d          5  t          j        t	          |           d          \  }}d d d            n# 1 swxY w Y   Wd S )N>   rT   rd   rp   rt   r^   zmmap.*not compatiblematchTr   )r
   
ValueErrorr   r   r   r[   s      r   test_unsupported_mmapr     s    ? E E
 J&<=== 	E 	E hx&8&8tDDDJD$	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EE Es   'AA	A	c                      dD ]q\  } }t          j        t          |           d          \  }}t          j        t          |          d          \  }}t          ||           t          ||           rd S )N>   ztest-8000Hz-be-3ch-5S-24bit.wavrT   test-44100Hz-be-1ch-4bytes.wavr   Fr   )r   r   r   r   )rifxriffrate1data1rate2data2s         r   	test_rifxr   &  s    < # #
d |HTNN???u|HTNN???uUE"""UE""""# #r   c                      dD ]q\  } }t          j        t          |           d          \  }}t          j        t          |          d          \  }}t          ||           t          ||           rd S )N>   z$test-8000Hz-le-3ch-5S-24bit-rf64.wavrT   #test-44100Hz-le-1ch-4bytes-rf64.wavr   Fr   )r   r   r   r   )rf64r   r   r   r   r   s         r   	test_rf64r   2  s    < ) )
d |HTNN???u|HTNN???u5%(((5%(((() )r   c                    t          j        d          }t          |                     d                    }d}t           j                            ddd                              |          }t          j        |||           t          j	        |d          \  }}t          ||           |j         d	}|j        j        d
v s
J |            t          ||           d|d<   d S )N<i8temp.wavr   r      )ri   Tr   z! byteorder not in ('<', '=', '|')<r>   |)r    r"   strr   randomrandintastyper   writer   r   r?   r   )tmpdirr"   tmpfiler'   r   r   r   msgs           r   test_write_roundtrip_rf64r   >  s    HUOOE&++j))**GD9QX..55e<<DM'4&&&<d333LE5u[
;
;
;C; O333S333tU###E!HHHr   c                   (    e Zd Zd Zd ZddZd ZdS )Nonseekablec                     || _         d S N)fp)selfr   s     r   __init__zNonseekable.__init__S  s    r   c                     dS )NF r   s    r   seekablezNonseekable.seekableV  s    ur   rz   c                6    | j                             |          S r   )r   r   )r   sizes     r   r   zNonseekable.readY  s    w||D!!!r   c                 8    | j                                          d S r   )r   closer   s    r   r   zNonseekable.close\  s    r   N)rz   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   R  sU            " " " "    r   r   c                     dD ]} t          |           }t          |d          5 }t          |d          5 }t          j        |          \  }}t          j        t	          |                    \  }}t          j        |d          \  }}	t          ||           t          ||           t          ||	           t          ||	           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N)r   r*   r0   r;   rC   rN   rT   r^   rd   rp   rt   rx   r   r   rbFr   )r   openr   r   r   r   )
r&   dfnamefp1fp2r   r   r   r   rate3data3s
             r   test_streamsr   `  sv   < ' ' (##&$ 	'3VT(:(: 	'c"<,,LE5"<C(8(899LE5"<U;;;LE5&&&&&&&&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' 's5   C-BC
C-CC-CC--C1	4C1	c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   zexample_1.ncr   z)CDF.*'RIFF', 'RIFX', and 'RF64' supportedr   r   r   r   r
   r   r   r   r   r&   r   s      r   test_read_unknown_filetype_failr   z  s	    , ,!(8$$d++ 	,r
*UVVV , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,4   A5AA5A""A5%A"&A55A9	<A9	c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   zTransparent Busy.anir   zNot a WAV file.*ACONr   r   r   r   s      r    test_read_unknown_riff_form_typer     s	    , ,)(8$$d++ 	,r
*@AAA , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,r   c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   z!test-8000Hz-le-1ch-1byte-ulaw.wavr   z2Unknown wave file format.*MULAW.*Supported formatsr   r   r   r   s      r   test_read_unknown_wave_formatr     s    , ,6(8$$d++ 	,r
 +, - - - , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,r   c                  J   dD ]} d}t          t          |          d          5 }t          t          j        d          5  t          j        ||           \  }}|j        dk    sJ |dk    sJ d|d<   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )	Nr   z(test-44100Hz-le-1ch-4bytes-early-eof.wavr   zReached EOFr   r   r   r   )r   r   r   r   r6   r   r   )r   r&   r   r'   r   s        r   test_read_early_eof_with_datar     s5      =(8$$d++ 	rw-]CCC  $\"4888
dy1}}}}u}}}}Q              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s5   B 4B 4B BBBBB	B	c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   z0test-44100Hz-le-1ch-4bytes-early-eof-no-data.wavr   zUnexpected end of file.r   r   r   r   s      r   test_read_early_eofr     s	    , ,E(8$$d++ 	,r
*CDDD , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,r   c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   z/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wavr   zIncomplete chunk ID.*b'f'r   r   r   r   s      r   test_read_incomplete_chunkr     s	    , ,D(8$$d++ 	,r
*EFFF , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,r   c                     dD ]}} d}t          t          |          d          5 }t          t          d          5  t	          j        ||            d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ~d S )Nr   z,test-8000Hz-le-3ch-5S-24bit-inconsistent.wavr   zheader is invalidr   r   r   r   s      r   test_read_inconsistent_headerr     s	    , ,A(8$$d++ 	,r
*=>>> , ,Rd++++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,r   dt_str)z<i2z<i4r   z<f4z<f8z>i2z>i4z>i8z>f4z>f8z|u1channels)r{   r,   rE   r'   r+   i }  r   FTrealfilec                    t          j        |          }| rut          |                    t          t	          j                              d                    }t          j        t          j        	                    |          d           nt                      }t           j                            d|          }|dk    r|d d df         }|j        dk    r|                    |          }n|dz                      |          }t          j        |||           t          j        ||	          \  }	}
t%          ||	           t'          |
j        j        d
v |
j                   t+          ||
           | rd|
d<   n8t-          j        t0          d          5  d|
d<   d d d            n# 1 swxY w Y   | r7|r7t2          r2t4          j        dk    r$t9                       t9                       d S d S d S d S d S )Nr   T)exist_okd   r{   r   frI   r   r   )r   z	read-onlyr   win32)r    r"   r   r   	threadingget_native_idr   makedirsr   r   r   r   randkindr   r   r   r   r   r   r?   r   pytestr
   r   r	   r@   platformr   )r   r   r'   r   r   r   r"   r   r   r   r   s              r   test_write_roundtripr     s-    HVE fkk#i&=&?&?"@"@*MMNN
BGOOG,,t<<<<<))9>>#x((D1}}AAAqDzzS{{5!!S  ''M'4&&&<d333LE5uEK!_4%+FFFFtU### a]:[999 	 	E!H	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  D W )@)@ 		     )@)@s   F++F/2F/r"   c                 p   t          |                     d                    }t          j                            d          }|                    d                              |          }d}t          j        t          d          5  t          j
        |||           d d d            d S # 1 swxY w Y   d S )Nr   r_   )r   rE   r+   Unsupportedr   )r   r   r    r   default_rngr   r   r
   r   r   r   )r   r"   r   rngr   r'   s         r   test_wavfile_dtype_unsupportedr     s    &++j))**G
)


%
%C::h&&u--DD	z	7	7	7 + +gtT***+ + + + + + + + + + + + + + + + + +s   B++B/2B/)5r   r@   ior   r   numpyr    numpy.testingr   r   r   r   r   r	   r   r
   r   scipy.ior   r   r(   r.   r3   r9   rA   rL   rR   r\   rb   rn   rr   rv   r}   r   r   r   markxslowr   r   r   r   r   r   thread_unsafer   r   r   r   parametrizer   float16r   r   r   r   <module>r      s   				 



              E E E E E E E E E E E E E E E E                       ? ? ?
 
 

 
 

 
 
       .  ,? ? ?.  <     0     0     0  0E E E	# 	# 	#	) 	) 	)   &       ' ' '4, , ,, , ,, , , 
 
 
, , ,, , ,, , ,  $N $N $N O OYYY//$//%//eT]33" " 43 0/ 0/ 0/O O"J 2:,//+ + 0/+ + +r   