
    -hhZ                         S SK Jr  S SKrS SKrS SKr/ SQr " S S\5      rSrSr	Sr
S	r\" S
S5      rS r " S S5      r " S S5      r " S S5      rSS jrg)    )
namedtupleN)openError	Wave_read
Wave_writec                       \ rS rSrSrg)r   R    N)__name__
__module____qualname____firstlineno____static_attributes__r
       -/opt/python-3.13.8/usr/lib/python3.13/wave.pyr   r   R   s    r   r      i  s            8q)NbhNi_wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec                     [        [        U 5      5      n[        S[        U 5      U5       H'  n[        U5       H  nXU-      X#U-   S-
  U-
  '   M     M)     [        U5      $ )Nr   r   )	bytearraylenrangebytes)datawidthswapped_datar   js        r   	_byteswapr    `   s]    SY'L1c$i'uA.2q5kLUQ*+  ( r   c                   J    \ rS rSrSS jrS rS rSS jrS rSS jr	S r
S	rg
)_Chunkj   c                    SU l         X l        U(       a  SnOSnXl        UR                  S5      U l        [        U R                  5      S:  a  [        e [        R                  " US-   UR                  S5      5      S   U l	        U(       a  U R                  S-
  U l	        SU l         U R                  R                  5       U l        SU l        g ! [        R                   a    [        S ef = f! [        [         4 a
    SU l         g f = f)	NF><   Lr      T)closedalignfileread	chunknamer   EOFErrorstructunpack_from	chunksizeerror	size_readtelloffsetseekableAttributeErrorOSError)selfr,   r+   	bigendian
inclheaderstrflags         r   __init___Chunk.__init__k   s    
GG	1t~~"N	%#//TYYq\J1MDN !^^a/DN	!))..*DK !DM || 	%$	% ( 	"!DM	"s   1C *C0 C-0D
	D
c                     U R                   $ N)r.   r:   s    r   getname_Chunk.getname   s    ~~r   c                 p    U R                   (       d   U R                  5         SU l         g g ! SU l         f = f)NT)r*   skiprB   s    r   close_Chunk.close   s.    {{#		"	  #s   , 	5c                 Z   U R                   (       a  [        S5      eU R                  (       d  [        S5      eUS:X  a  XR                  -   nOUS:X  a  XR
                  -   nUS:  d  XR
                  :  a  [        eU R                  R                  U R                  U-   S5        Xl        g )NI/O operation on closed filezcannot seekr      r   )
r*   
ValueErrorr7   r9   r4   r2   RuntimeErrorr,   seekr6   )r:   poswhences      r   rN   _Chunk.seek   s     ;;;<<}}-((Q;&Cq[&C7cNN*		t{{S(!,r   c                 R    U R                   (       a  [        S5      eU R                  $ )NrJ   )r*   rL   r4   rB   s    r   r5   _Chunk.tell   s    ;;;<<~~r   c                 z   U R                   (       a  [        S5      eU R                  U R                  :  a  gUS:  a  U R                  U R                  -
  nXR                  U R                  -
  :  a  U R                  U R                  -
  nU R                  R                  U5      nU R                  [        U5      -   U l        U R                  U R                  :X  a]  U R                  (       aL  U R                  S-  (       a8  U R                  R                  S5      nU R                  [        U5      -   U l        U$ )NrJ   r   r   r   )r*   rL   r4   r2   r,   r-   r   r+   )r:   sizer   dummys       r   r-   _Chunk.read   s     ;;;<<>>T^^+!8>>DNN2D..4>>11>>DNN2Dyy~~d##d)3>>T^^+::NNQIINN1%E!^^c%j8DNr   c                 X   U R                   (       a  [        S5      eU R                  (       au   U R                  U R                  -
  nU R
                  (       a  U R                  S-  (       a  US-   nU R                  R                  US5        U R                  U-   U l        g U R                  U R                  :  a^  [        SU R                  U R                  -
  5      nU R                  U5      nU(       d  [        eU R                  U R                  :  a  M]  g g ! [         a     Nf = f)NrJ   r   i    )r*   rL   r7   r2   r4   r+   r,   rN   r9   minr-   r/   )r:   nrV   s      r   rF   _Chunk.skip   s     ;;;<<==	NNT^^3::4>>A#5AA		q!$!%!!3 nnt~~-D$..4>>9:AIIaLE	 nnt~~-  s   A3D 
D)(D))r+   r.   r2   r*   r,   r6   r7   r4   N)TTF)r   ))r   r   r   r   r>   rC   rG   rN   r5   r-   rF   r   r
   r   r   r"   r"   j   s%    !2#&
.r   r"   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)r      c                    S U l         SU l        [        USS9U l        U R                  R	                  5       S:w  a  [        S5      eU R                  R                  S5      S:w  a  [        S5      eSU l        S U l         SU l	         [        U R                  SS9nUR	                  5       nUS	:X  a  U R                  U5        SU l        ONUS
:X  aH  U R                  (       d  [        S5      eX l        UR                  U R                  -  U l        SU l	        OUR                  5         M  U R                  (       a  U R                  (       d  [        S5      eg ! [         a     M;  f = f)Nr   )r;      RIFFz file does not start with RIFF idr'      WAVEznot a WAVE filer      fmt    datazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)_convert	_soundposr"   _filerC   r   r-   _fmt_chunk_read_data_chunk_data_seek_neededr/   _read_fmt_chunkr2   
_framesize_nframesrF   )r:   r,   chunkr.   s       r   initfpWave_read.initfp   sC   Da0
::7*:;;::??1()** %&D"tzzq9 IG#$$U+'($g%++ =>>#(  %4?? B)*&JJL# $ ##4+;+;=>> ,<  s   E 
E'&E'c                     S U l         [        U[        5      (       a  [        R                  " US5      nXl          U R                  U5        g !   U R                   (       a  UR                  5         e = f)Nrb_i_opened_the_file
isinstancestrbuiltinsr   rn   rG   r:   fs     r   r>   Wave_read.__init__  sY    "&aa&A&'#	KKN	&&	   A $A1c                 $    U R                  5         g rA   rG   rB   s    r   __del__Wave_read.__del__$      

r   c                     U $ rA   r
   rB   s    r   	__enter__Wave_read.__enter__'      r   c                 $    U R                  5         g rA   r|   r:   argss     r   __exit__Wave_read.__exit__*  r   r   c                     U R                   $ rA   )rf   rB   s    r   getfpWave_read.getfp0  s    zzr   c                      SU l         SU l        g )Nr   r   )ri   re   rB   s    r   rewindWave_read.rewind3  s    !"r   c                 h    S U l         U R                  nU(       a  S U l        UR                  5         g g rA   )rf   rs   rG   r:   r,   s     r   rG   Wave_read.close7  s-    
&&&*D#JJL r   c                     U R                   $ rA   )re   rB   s    r   r5   Wave_read.tell>      ~~r   c                     U R                   $ rA   )
_nchannelsrB   s    r   getnchannelsWave_read.getnchannelsA      r   c                     U R                   $ rA   )rl   rB   s    r   
getnframesWave_read.getnframesD  s    }}r   c                     U R                   $ rA   )
_sampwidthrB   s    r   getsampwidthWave_read.getsampwidthG  r   r   c                     U R                   $ rA   )
_frameraterB   s    r   getframerateWave_read.getframerateJ  r   r   c                     U R                   $ rA   	_comptyperB   s    r   getcomptypeWave_read.getcomptypeM  r   r   c                     U R                   $ rA   	_compnamerB   s    r   getcompnameWave_read.getcompnameP  r   r   c           	          [        U R                  5       U R                  5       U R                  5       U R	                  5       U R                  5       U R                  5       5      $ rA   )r   r   r   r   r   r   r   rB   s    r   	getparamsWave_read.getparamsS  sQ    D--/1B1B1D((*DOO,='')4+;+;+=? 	?r   c                 ,    SS K nUR                  SSS9  g )Nr   zWave_read.getmarkers      removewarnings_deprecatedr:   r   s     r   
getmarkersWave_read.getmarkersX  s    3GDr   c                 @    SS K nUR                  SSS9  [        S5      e)Nr   zWave_read.getmarkr   r   no marksr   r   r   r:   idr   s      r   getmarkWave_read.getmark]  s$    0AJr   c                 ^    US:  d  XR                   :  a  [        S5      eXl        SU l        g )Nr   zposition not in ranger   )rl   r   re   ri   )r:   rO   s     r   setposWave_read.setposb  s+    7cMM)/00!"r   c                 t   U R                   (       a_  U R                  R                  SS5        U R                  U R                  -  nU(       a  U R                  R                  US5        SU l         US:X  a  gU R                  R                  XR                  -  5      nU R                  S:w  a)  [        R                  S:X  a  [        X0R                  5      nU R                  (       a  U(       a  U R                  U5      nU R                  [        U5      U R                  U R                  -  -  -   U l        U$ )Nr   r   r   big)ri   rh   rN   re   rk   r-   r   sys	byteorderr    rd   r   r   )r:   nframesrO   r   s       r   
readframesWave_read.readframesh  s    !!!!!Q'..4??2C  %%c1-%&D"a<$$W%>???aCMMU$:T??3D==T==&D#d)$//8Y*ZZr   c                     [         R                  " SUR                  S5      5      u  o l        U l        p4U[        :w  a  U[        :w  a  [        SU< 35      e [         R                  " SUR                  S5      5      S   nU[        :X  a}   [         R                  " SUR                  S5      5      u  pgnUR                  S	5      n	[        U	5      S	:  a  [        e U	[        :w  a"   SS Kn
S
U
R                  U	S9 3n[        U5      eUS-   S-  U l        U R                  (       d  [        S5      eU R                  (       d  [        S5      eU R                  U R                  -  U l        SU l        SU l        g ! [         R
                   a    [        S ef = f! [         R
                   a    [        S ef = f! [         R
                   a    [        S ef = f! [         a    Sn Nf = f)Nz<HHLLH   zunknown format: z<HrK   r   z<HHLr)      zunknown extended format: )bytes_lezunknown extended format   bad sample widthbad # of channelsNONEznot compressed)r0   r1   r-   r   r   r3   r/   WAVE_FORMAT_PCMWAVE_FORMAT_EXTENSIBLEr   r   KSDATAFORMAT_SUBTYPE_PCMuuidUUID	Exceptionr   rk   r   r   )r:   rm   
wFormatTagdwAvgBytesPerSecwBlockAlign	sampwidthcbSizewValidBitsPerSampledwChannelMask	SubFormatr   subformat_msgs               r   rj   Wave_read._read_fmt_chunk}  s   	%Z`ZlZlmuw|  xB  xB  CE  xF  [GWJ:J (Z;Q-Q
<==	%**4A?BI //)=C=O=OPVX]XbXbcdXe=f:]!JJrN	y>B&"N ' 44>&?		S\	@]?^$_M M**$q=Q.*+++,,//DOO;)? || 	%$	% || 	%$	% << )D() ! >$=M>s6   4E< )F AF: )G <FF7:GG('G()r   r   rd   rh   ri   rf   rg   r   rk   rs   r   rl   r   re   N)r   r   r   r   rn   r>   r}   r   r   r   r   rG   r5   r   r   r   r   r   r   r   r   r   r   r   rj   r   r
   r   r   r   r      sk    >?>?

 
#*"*r   r   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r Sr!g) r   i  Nc                     S U l         [        U[        5      (       a  [        R                  " US5      nXl          U R                  U5        g !   U R                   (       a  UR                  5         e = f)Nwbrr   rw   s     r   r>   Wave_write.__init__  sY    "&aa&A&'#	KKN	&&	rz   c                     Xl         S U l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l	        g )Nr   F)
rf   rd   r   r   r   rl   _nframeswritten_datawritten_datalength_headerwrittenr   s     r   rn   Wave_write.initfp  sJ    
 #r   c                 $    U R                  5         g rA   r|   rB   s    r   r}   Wave_write.__del__  r   r   c                     U $ rA   r
   rB   s    r   r   Wave_write.__enter__  r   r   c                 $    U R                  5         g rA   r|   r   s     r   r   Wave_write.__exit__  r   r   c                 j    U R                   (       a  [        S5      eUS:  a  [        S5      eXl        g )N0cannot change parameters after starting to writer   r   )r   r   r   )r:   	nchannelss     r   setnchannelsWave_write.setnchannels  s/    JKKq=+,,#r   c                 R    U R                   (       d  [        S5      eU R                   $ )Nznumber of channels not set)r   r   rB   s    r   r   Wave_write.getnchannels  s    455r   c                 v    U R                   (       a  [        S5      eUS:  d  US:  a  [        S5      eXl        g )Nr   r   r'   r   )r   r   r   )r:   r   s     r   setsampwidthWave_write.setsampwidth  s5    JKKq=IM*++#r   c                 R    U R                   (       d  [        S5      eU R                   $ )Nzsample width not set)r   r   rB   s    r   r   Wave_write.getsampwidth  s    .//r   c                     U R                   (       a  [        S5      eUS::  a  [        S5      e[        [        U5      5      U l        g )Nr   r   zbad frame rate)r   r   introundr   )r:   	framerates     r   setframerateWave_write.setframerate  s;    JKK>())eI./r   c                 R    U R                   (       d  [        S5      eU R                   $ )Nzframe rate not set)r   r   rB   s    r   r   Wave_write.getframerate  s    ,--r   c                 H    U R                   (       a  [        S5      eXl        g Nr   )r   r   rl   )r:   r   s     r   
setnframesWave_write.setnframes  s    JKKr   c                     U R                   $ rA   r   rB   s    r   r   Wave_write.getnframes      ###r   c                 v    U R                   (       a  [        S5      eUS;  a  [        S5      eXl        X l        g )Nr   )r   zunsupported compression type)r   r   r   r   )r:   comptypecompnames      r   setcomptypeWave_write.setcomptype  s5    JKK9$677!!r   c                     U R                   $ rA   r   rB   s    r   r   Wave_write.getcomptype  r   r   c                     U R                   $ rA   r   rB   s    r   r   Wave_write.getcompname  r   r   c                     Uu  p#pEpgU R                   (       a  [        S5      eU R                  U5        U R                  U5        U R	                  U5        U R                  U5        U R                  Xg5        g r  )r   r   r   r   r  r  r  )r:   paramsr   r   r  r   r  r  s           r   	setparamsWave_write.setparams  sg    GMD	i(JKK)$)$)$ ,r   c                    U R                   (       a"  U R                  (       a  U R                  (       d  [        S5      e[	        U R                   U R                  U R                  U R
                  U R                  U R                  5      $ )Nznot all parameters set)r   r   r   r   r   rl   r   r   rB   s    r   r   Wave_write.getparams&  sS    dooT__011DOOT__doommT^^T^^= 	=r   c                 @    SS K nUR                  SSS9  [        S5      e)Nr   zWave_write.setmarkr   r   zsetmark() not supportedr   )r:   r   rO   namer   s        r   setmarkWave_write.setmark,  s%    1'B-..r   c                 @    SS K nUR                  SSS9  [        S5      e)Nr   zWave_write.getmarkr   r   r   r   r   s      r   r   Wave_write.getmark1  s$    1'BJr   c                 ,    SS K nUR                  SSS9  g )Nr   zWave_write.getmarkersr   r   r   r   s     r   r   Wave_write.getmarkers6  s    4WEr   c                     U R                   $ rA   r  rB   s    r   r5   Wave_write.tell;  r  r   c                 <   [        U[        [        45      (       d  [        U5      R	                  S5      nU R                  [        U5      5        [        U5      U R                  U R                  -  -  nU R                  (       a  U R                  U5      nU R                  S:w  a)  [        R                  S:X  a  [        XR                  5      nU R                  R                  U5        U =R                  [        U5      -  sl        U R                   U-   U l        g )NBr   r   )rt   r   r   
memoryviewcast_ensure_header_writtenr   r   r   rd   r   r   r    rf   writer   r   )r:   r   r   s      r   writeframesrawWave_write.writeframesraw>  s    $	 233d#((-D##CI.d)$// AB====&D??aCMMU$:T??3D

SY&#33g=r   c                 |    U R                  U5        U R                  U R                  :w  a  U R                  5         g g rA   )r2  r   r   _patchheader)r:   r   s     r   writeframesWave_write.writeframesK  s5    D!t000 1r   c                     U R                   (       aU  U R                  S5        U R                  U R                  :w  a  U R	                  5         U R                   R                  5         S U l         U R                  nU(       a  S U l        UR                  5         g g ! S U l         U R                  nU(       a  S U l        UR                  5         f f = f)Nr   )rf   r0  r   r   r5  flushrs   rG   r   s     r   rG   Wave_write.closeP  s    	zz++A.##t'8'88%%'

  "DJ**D*.'

  DJ**D*.'

 s   A&B 4Cc                     U R                   (       df  U R                  (       d  [        S5      eU R                  (       d  [        S5      eU R                  (       d  [        S5      eU R                  U5        g g )Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)r   r   r   r   r   _write_header)r:   datasizes     r   r0  !Wave_write._ensure_header_writtenb  sW    ""??677??899??9::x( #r   c                    U R                   R                  S5        U R                  (       d   XR                  U R                  -  -  U l        U R                  U R                  -  U R                  -  U l         U R                   R                  5       U l        U R                   R                  [        R                  " SSU R
                  -   SSS[        U R                  U R                  U R                  U R                  -  U R                  -  U R                  U R                  -  U R                  S-  S5      5        U R                  b  U R                   R                  5       U l        U R                   R                  [        R                  " S	U R
                  5      5        S
U l        g ! [        [        4 a    S U l         GN/f = f)Nr`   z<L4s4sLHHLLHH4s$   ra   rb   r   r)   rc   <LT)rf   r1  rl   r   r   r   r5   _form_length_posr8   r9   r0   packr   r   _data_length_posr   )r:   
initlengths     r   r<  Wave_write._write_headerl  sN   

!}}&??T__+LMDM==4??:T__L	)$(JJOO$5D! 	

%6!!!7GRT__dooOOdoo-?OOdoo-OOa* 	+   ,$(JJOO$5D!

T4+;+;<=" ( 	)$(D!	)s   9F- -GGc                 N   U R                   U R                  :X  a  g U R                  R                  5       nU R                  R	                  U R
                  S5        U R                  R                  [        R                  " SSU R                   -   5      5        U R                  R	                  U R                  S5        U R                  R                  [        R                  " SU R                   5      5        U R                  R	                  US5        U R                   U l        g )Nr   rA  r@  )
r   r   rf   r5   rN   rB  r1  r0   rC  rD  )r:   curposs     r   r5  Wave_write._patchheader  s     0 00"

--q1

T20A0A+ABC

--q1

T4+<+<=>

",,r   )r   r   rd   rD  r   r   rf   rB  r   r   rs   r   rl   r   r   )"r   r   r   r   rf   r>   rn   r}   r   r   r   r   r   r   r  r   r  r   r  r   r   r  r   r$  r   r   r5   r2  r6  rG   r0  r<  r5  r   r
   r   r   r   r     s    4 E

$$
$
0
 
$"-=/
 

$> 
$)#*
-r   r   c                     Uc   [        U S5      (       a  U R                  nOSnUS;   a  [        U 5      $ US;   a  [        U 5      $ [	        S5      e)Nmoderq   )rrq   )wr   z$mode must be 'r', 'rb', 'w', or 'wb')hasattrrK  r   r   r   )rx   rK  s     r   r   r     sR    |1f66DD{|		!}:;;r   rA   )collectionsr   rv   r0   r   __all__r   r   r   r   r   _array_fmtsr   r    r"   r   r   r   r
   r   r   <module>rR     s   T #   
 7	I 	  X '.NPl l^F* F*Ri- i-X<r   