o
    ?HhA                  	   @   s  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d Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Z d"d# Z!d$d% Z"d&d' Z#ej$j%d(d) Z&d*d+ Z'd,d- Z(d.d/ Z)ej$j*d0d1 Z+d2d3 Z,d4d5 Z-d6d7 Z.ej$/d8g d9ej$/d:g d;ej$/d<d=d>gej$/d?d@dAgej$/dBd@dAgdCdD Z0ej$/dEej1gdFdG Z2dS )H    N)BytesIO)assert_equalassert_assert_array_equalbreak_cyclessuppress_warningsIS_PYPY)raiseswarns)wavfilec                 C   s   t jt jtd| S )Ndata)ospathjoindirname__file__)fn r   [/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/io/tests/test_wavfile.pydatafile   s   r   c                  C   T   dD ]%} d}t jt|| d\}}t|d tt|jtj t|j	d ~qd S )NFTtest-44100Hz-le-1ch-4bytes.wavmmapD  )i:  
r   readr   r   r   np
issubdtypedtypeint32shaper   filenamerater   r   r   r   test_read_1      
r&   c                  C   r   )Nr   ztest-8000Hz-le-2ch-1byteu.wavr   @  )i      )
r   r   r   r   r   r   r   r    uint8r"   r#   r   r   r   test_read_2    r'   r+   c                  C   r   )Nr   z#test-44100Hz-2ch-32bit-float-le.wavr   r   i  r)   )
r   r   r   r   r   r   r   r    float32r"   r#   r   r   r   test_read_3-   r'   r.   c               	   C   s   dD ]?} t  }|tjd d}tjt|| d\}}W d    n1 s&w   Y  t|d tt	|j
tj t|jd ~q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   r   r   r   test_read_4:   s   
r3   c                  C   sz   dD ]8} d}t jt|| d\}}t|d tt|jtj t|jj	dkp1t
j	dko1|jj	dk t|jd ~qd S )	Nr   z#test-44100Hz-2ch-32bit-float-be.wavr   r   >big=r,   )r   r   r   r   r   r   r   r    r-   	byteordersysr"   r#   r   r   r   test_read_5J   s   

r9   c                  C   s   dD ]A} d}t jt|| d\}}t|d tt|jtj t|j	d t|d@ d t|
 d t|d	 d
 t| d ~qd S )Nr   ztest-8000Hz-le-5ch-9S-5bit.wavr   r(   )	         r      r   r      )r   r   r   r   r   r   r   r    r*   r"   maxminr#   r   r   r   test_5_bit_odd_size_no_padY   s   
rB   c                  C   s   dD ]A} d}t jt|| d\}}t|d tt|jtj t|j	d t|d@ d t|
 d t|d	 d t| d
 ~qd S )Nr   ztest-8000Hz-le-4ch-9S-12bit.wavr   r(   )r:         r   i  r>   i )r   r   r   r   r   r   r   r    int16r"   r@   rA   r#   r   r   r   test_12_bit_even_sizep   s   
rF   c                  C   s~   d} t jt| dd\}}t|d tt|jtj t|j	d t|d@ d t|g dg d	g d
g dg dg d S )Ntest-8000Hz-le-3ch-5S-24bit.wavFr   r(   r;         r   )i   i  i )i   i  i r   r   r   )i   @i ?   ) rM   i   r   r$   r%   r   r   r   r   test_24_bit_odd_size_with_pad   s   


rO   c                  C   st   d} t jt| dd\}}t|d tt|jtj t|j	d t|d@ d t|d@ 
  t|g d	 d S )
N&test-1234Hz-le-1ch-10S-20bit-extra.wavFr     )
   rJ   r   i   )
i i  i ?i  i i  i i  i i  )r   r   r   r   r   r   r   r    r!   r"   anyrN   r   r   r   test_20_bit_extra_data   s   
rT   c                  C      d} t jt| dd\}}t|d tt|jtj t|j	d t|d@ d g dg d	g d
g dg dg}t|| d S )Ntest-8000Hz-le-3ch-5S-36bit.wavFr   r(   rH   ir   )         l   ` i   )         l   ` i   rK   )            l      ` i   )      ` rZ       
r   r   r   r   r   r   r   r    int64r"   r$   r%   r   correctr   r   r   test_36_bit_odd_size      
r`   c                  C   rU   )Ntest-8000Hz-le-3ch-5S-45bit.wavFr   r(   rH   i r   )rW   l   i  )rX   l   i  rK   )rY   l      i   )      rc   i   r\   r^   r   r   r   test_45_bit_even_size   ra   rd   c                  C   rU   )Ntest-8000Hz-le-3ch-5S-53bit.wavFr   r(   rH   i  r   )rW   l x i )rX   l x i rK   )rY   l    x i   )    x rf   i   r\   r^   r   r   r   test_53_bit_odd_size   ra   rg   c                  C   s   dD ];} d}t jt|| d\}}t|d tt|jtj t|j	d g dg dg dg d	g d
g}t|| ~qd S )Nr   ztest-8000Hz-le-3ch-5S-64bit.wavr   r(   rH   )rW   l )rX   l rK   )rY   l       )    rk   r)   r\   )r   r$   r%   r   r_   r   r   r   test_64_bit_even_size  s   

rl   c               	   C   sP   dD ]#} t tdd tjt| dd\}}W d    n1 s w   Y  qd S )N>   rG   rV   rb   re   rP   zmmap.*not compatiblematchTr   )r	   
ValueErrorr   r   r   rN   r   r   r   test_unsupported_mmap  s   rp   c                  C   R   dD ]$\} }t jt| dd\}}t jt|dd\}}t|| t|| qd S )N>   ztest-44100Hz-be-1ch-4bytes.wavr   ztest-8000Hz-be-3ch-5S-24bit.wavrG   Fr   )r   r   r   r   )rifxriffrate1data1rate2data2r   r   r   	test_rifx&     
rz   c                  C   rq   )N>   z#test-44100Hz-le-1ch-4bytes-rf64.wavr   z$test-8000Hz-le-3ch-5S-24bit-rf64.wavrG   Fr   )r   r   r   r   )rf64ru   rv   rw   rx   ry   r   r   r   	test_rf642  r{   r   c                 C   s   t d}t| d}d}t jddd|}t||| tj	|dd\}}t
|| |j d	}|jjd
v s>J |t|| d|d< d S )N<i8temp.wavr   r      )r[   Tr   z! byteorder not in ('<', '=', '|')<r6   |)r   r    strr   randomrandintastyper   writer   r   r7   r   )tmpdirr    tmpfiler%   r   rx   ry   msgr   r   r   test_write_roundtrip_rf64>  s   


r   c               
   C   z   dD ]8} d}t t|d%}ttdd tj|| d W d    n1 s&w   Y  W d    n1 s5w   Y  qd S )Nr   zexample_1.ncrbz)CDF.*'RIFF', 'RIFX', and 'RF64' supportedrm   r   openr   r	   ro   r   r   r   r$   fpr   r   r   test_read_unknown_filetype_failQ     r   c               
   C   r   )Nr   zTransparent Busy.anir   zNot a WAV file.*ACONrm   r   r   r   r   r   r    test_read_unknown_riff_form_typeZ  r   r   c               
   C   r   )Nr   z!test-8000Hz-le-1ch-1byte-ulaw.wavr   z2Unknown wave file format.*MULAW.*Supported formatsrm   r   r   r   r   r   r   test_read_unknown_wave_formatc  s   r   c               
   C   s   dD ]L} d}t t|d9}ttjdd" tj|| d\}}|jdks&J |dks,J d|d< W d    n1 s:w   Y  W d    n1 sIw   Y  qd S )	Nr   z(test-44100Hz-le-1ch-4bytes-early-eof.wavr   zReached EOFrm   r   r   r   )r   r   r
   r   r0   r   size)r   r$   r   r%   r   r   r   r   test_read_early_eof_with_datam  s   
r   c               
   C   r   )Nr   z0test-44100Hz-le-1ch-4bytes-early-eof-no-data.wavr   zUnexpected end of file.rm   r   r   r   r   r   r   test_read_early_eof{  r   r   c               
   C   r   )Nr   z/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wavr   zIncomplete chunk ID.*b'f'rm   r   r   r   r   r   r   test_read_incomplete_chunk  r   r   c               
   C   r   )Nr   z,test-8000Hz-le-3ch-5S-24bit-inconsistent.wavr   zheader is invalidrm   r   r   r   r   r   r   test_read_inconsistent_header  r   r   dt_str)z<i2z<i4r   z<f4z<f8z>i2z>i4z>i8z>f4z>f8z|u1channels)rj   r)   r;   r%   r(   i }  r   FTrealfilec                 C   sR  t |}| rt|tt d}tjtj	|dd nt
 }t jd|}|dkr5|d d df }|jdkr@||}n|d |}t||| tj||d	\}	}
t||	 t|
jjd
v |
jd t||
 | rsd|
d< ntjtdd d|
d< W d    n1 sw   Y  | r|rtrtjdkrt  t  d S d S d S d S d S )Nr   T)exist_okd   rj   r   fr?   r   r   )r   z	read-onlyrm   win32)r   r    r   r   	threadingget_native_idr   makedirsr   r   r   r   randkindr   r   r   r   r   r   r7   r   pytestr	   ro   r   r8   platformr   )r   r   r%   r   r   r   r    r   r   rx   ry   r   r   r   test_write_roundtrip  s2   






r   r    c                 C   sp   t | d}tjd}|d|}d}tjtdd t	
||| W d    d S 1 s1w   Y  d S )Nr   rQ   )r   r;   r(   Unsupportedrm   )r   r   r   r   default_rngr   r   r	   ro   r   r   )r   r    r   rngr   r%   r   r   r   test_wavfile_dtype_unsupported  s   "r   )3r   r8   ior   r   numpyr   numpy.testingr   r   r   r   r   r   r   r	   r
   scipy.ior   r   r&   r+   r.   r3   r9   rB   rF   rO   rT   r`   rd   rg   rl   rp   rz   r   markxslowr   r   r   r   thread_unsafer   r   r   r   parametrizer   float16r   r   r   r   r   <module>   sX     
		

		%