
    ̺iI                       S SK Jr  S SKJr  S SKJrJrJrJrJ	r	J
r
  S SKJrJrJrJrJr  S SKrS SKJr  S SKJr  S SKJr  S	S
KJrJrJrJrJrJrJrJ r   SSKJ!r!  SSKJ"r"J#r#  SSK$J%r%J&r&  SSK'J(r(J)r)J*r*  SSK+J,r,J-r-  SSK.J/r/  SSK0J1r1J2r2  SSK3J4r4J5r5   " S S\\1   5      r6 " S S\\1   5      r7 " S S\\1   5      r8 " S S\\1   5      r9      S!S jr:Sr;\\4r<\"S.       S"S  jjr=g)#    )annotations)TracebackType)TYPE_CHECKINGAnyTypeGenericCallablecast)SelfIterator	AwaitableAsyncIteratorassert_neverN)	BaseModel)ToolUseBlock)ServerToolUseBlock   )	TextEventCitationEventThinkingEventInputJsonEventSignatureEventParsedMessageStopEventParsedMessageStreamEventParsedContentBlockStopEvent   )RawMessageStreamEvent)	NOT_GIVENNotGiven)consume_sync_iteratorconsume_async_iterator)buildconstruct_typeconstruct_type_unchecked)StreamAsyncStream)is_given   )ResponseFormatT
parse_text)ParsedMessageParsedContentBlockc                      \ rS rSr% S\S'          SS jr\SS j5       r\SS j5       rSS jr	SS jr
SS	 jr        SS
 jrSS jrSS jrSS jrSS jr\SS j5       rSS jrSS jrSrg)MessageStream!   Iterator[str]text_streamc                ~    Xl         U R                  5       U l        U R                  5       U l        S U l        X l        g N)_raw_stream__stream_text__r1   
__stream__	_iterator&_MessageStream__final_message_snapshot_MessageStream__output_formatself
raw_streamoutput_formats      `/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/anthropic/lib/streaming/_messages.py__init__MessageStream.__init__,   7    
 &//1*OS%,    c                .    U R                   R                  $ r3   r4   responser;   s    r>   rE   MessageStream.response7       (((rB   c                L    U R                   R                  R                  S5      $ Nz
request-idrE   headersgetrF   s    r>   
request_idMessageStream.request_id;       }}$$((66rB   c                6    U R                   R                  5       $ r3   )r7   __next__rF   s    r>   rR   MessageStream.__next__?   s    ~~&&((rB   c              #  :   #    U R                    H  nUv   M	     g 7fr3   r7   r;   items     r>   __iter__MessageStream.__iter__B   s     NNDJ #s   c                    U $ r3    rF   s    r>   	__enter__MessageStream.__enter__F   s    rB   c                $    U R                  5         g r3   closer;   exc_typeexcexc_tbs       r>   __exit__MessageStream.__exit__I   s     	

rB   c                8    U R                   R                  5         gzr
Close the response and release the connection.

Automatically called if the response body is read to completion.
Nr4   r`   rF   s    r>   r`   MessageStream.closeQ   s     	 rB   c                X    U R                  5         U R                  c   eU R                  $ )aWaits until the stream has been read to completion and returns
the accumulated `Message` object.
)
until_doner8   rF   s    r>   get_final_messageMessageStream.get_final_messageY   s,     	,,888,,,rB   c           	     d   U R                  5       n/ nUR                   H0  nUR                  S:X  d  M  UR                  UR                  5        M2     U(       dB  [        SSR                  UR                   Vs/ s H  oDR                  PM     sn5       S35      eSR                  U5      $ s  snf )Returns all `text` content blocks concatenated together.

> [!NOTE]
> Currently the API will only respond with a single content block.

Will raise an error if no `text` content blocks were returned.
textc.get_final_text() can only be called when the API returns a `text` content block.
The API returned ,Q content block type(s) that you can access by calling get_final_message().content rn   contenttypeappendrr   RuntimeErrorjoinr;   messagetext_blocksblockbs        r>   get_final_textMessageStream.get_final_texta   s     ((*!#__EzzV#""5::. % vwzww  RY  Ra  Ra  Ab  Ra  MN  BH  BH  Ra  Ab  xc  wd  du  v  ww{## Abs   9B-c                    [        U 5        g)z)Blocks until the stream has been consumedN)r    rF   s    r>   rm   MessageStream.until_donev   s
    d#rB   c                8    U R                   c   eU R                   $ r3   )r8   rF   s    r>   current_message_snapshot&MessageStream.current_message_snapshot{        ,,888,,,rB   c              #     #    U R                    HG  n[        UU R                  U R                  S9U l        [	        XR
                  S9nU H  nUv   M	     MI     g 7fN)eventcurrent_snapshotr=   )r   message_snapshot)r4   accumulate_eventr8   r9   build_eventsr   r;   	sse_eventevents_to_firer   s       r>   r6   MessageStream.__stream__   sX     ))I,<!%!>!>"22-D) *	LiLijN' ( *s   AAc              #     #    U  HI  nUR                   S:X  d  M  UR                  R                   S:X  d  M1  UR                  R                  v   MK     g 7fNcontent_block_delta
text_deltary   deltarr   r;   chunks     r>   r5   MessageStream.__stream_text__   s=     Ezz22u{{7G7G<7Wkk&&& s   AAA__final_message_snapshot__output_formatr7   r4   r1   N)r<   zStream[RawMessageStreamEvent]r=   ResponseFormatT | NotGivenreturnNoner   zhttpx.Responser   z
str | Noner   z)ParsedMessageStreamEvent[ResponseFormatT])r   z3Iterator[ParsedMessageStreamEvent[ResponseFormatT]]r   r   rb   ztype[BaseException] | Nonerc   zBaseException | Nonerd   zTracebackType | Noner   r   r   r   r   ParsedMessage[ResponseFormatT]r   str)r   r0   )__name__
__module____qualname____firstlineno____annotations__r?   propertyrE   rN   rR   rX   r\   re   r`   rn   r   rm   r   r6   r5   __static_attributes__r[   rB   r>   r.   r.   !   s    	-1	- 2	- 
		- ) ) 7 7), " %	
 
!-$*$
 - -
'rB   r.   c                  R    \ rS rSrSr      SS jrS	S jr        S
S jrSrg)MessageStreamManager   zWrapper over MessageStream that is returned by `.stream()`.

```py
with client.messages.stream(...) as stream:
    for chunk in stream:
        ...
```
c               *    S U l         Xl        X l        g r3   )_MessageStreamManager__stream"_MessageStreamManager__api_request$_MessageStreamManager__output_formatr;   api_requestr=   s      r>   r?   MessageStreamManager.__init__   s     @D(,rB   c                j    U R                  5       n[        XR                  S9U l        U R                  $ Nr=   )r   r.   r   r   r;   r<   s     r>   r\   MessageStreamManager.__enter__   s,    '')
%j@T@TU}}rB   c                T    U R                   b  U R                   R                  5         g g r3   )r   r`   ra   s       r>   re   MessageStreamManager.__exit__   s#     ==$MM! %rB   __api_requestr   __streamN)r   z+Callable[[], Stream[RawMessageStreamEvent]]r=   r   r   r   )r   zMessageStream[ResponseFormatT]r   )	r   r   r   r   __doc__r?   r\   re   r   r[   rB   r>   r   r      sX    -@- 2	-
 
-
"," "" %	"
 
"rB   r   c                      \ rS rSr% S\S'          SS jr\SS j5       r\SS j5       rSS jr	SS jr
SS	 jr        SS
 jrSS jrSS jrSS jrSS jr\SS j5       rSS jrSS jrSrg)AsyncMessageStream   AsyncIterator[str]r1   c                ~    Xl         U R                  5       U l        U R                  5       U l        S U l        X l        g r3   )r4   r5   r1   r6   r7   +_AsyncMessageStream__final_message_snapshot"_AsyncMessageStream__output_formatr:   s      r>   r?   AsyncMessageStream.__init__   rA   rB   c                .    U R                   R                  $ r3   rD   rF   s    r>   rE   AsyncMessageStream.response   rH   rB   c                L    U R                   R                  R                  S5      $ rJ   rK   rF   s    r>   rN   AsyncMessageStream.request_id   rP   rB   c                R   #    U R                   R                  5       I S h  vN $  N7fr3   )r7   	__anext__rF   s    r>   r   AsyncMessageStream.__anext__   s     ^^--////s   '%'c               J   #    U R                     S h  vN nU7v   M   N
 g 7fr3   rU   rV   s     r>   	__aiter__AsyncMessageStream.__aiter__   s     .. 	$J	.s   #!!#!#c                   #    U $ 7fr3   r[   rF   s    r>   
__aenter__AsyncMessageStream.__aenter__   s
     s   c                @   #    U R                  5       I S h  vN   g  N7fr3   r_   ra   s       r>   	__aexit__AsyncMessageStream.__aexit__   s      jjls   c                T   #    U R                   R                  5       I Sh  vN   g N7frh   ri   rF   s    r>   r`   AsyncMessageStream.close   s      $$&&&s   (&(c                t   #    U R                  5       I Sh  vN   U R                  c   eU R                  $  N7f)rl   N)rm   r   rF   s    r>   rn   $AsyncMessageStream.get_final_message   s:      oo,,888,,, 	 s   86 8c           	       #    U R                  5       I Sh  vN n/ nUR                   H0  nUR                  S:X  d  M  UR                  UR                  5        M2     U(       dB  [        SSR                  UR                   Vs/ s H  oDR                  PM     sn5       S35      eSR                  U5      $  Ns  snf 7f)rq   Nrr   rs   rt   ru   rv   rw   r}   s        r>   r   !AsyncMessageStream.get_final_text   s      ..00!#__EzzV#""5::. % vwzww  RY  Ra  Ra  Ab  Ra  MN  BH  BH  Ra  Ab  xc  wd  du  v  ww{## 1 Abs'   B>B7#B>AB>B9 B>9B>c                6   #    [        U 5      I Sh  vN   g N7f)z(Waits until the stream has been consumedN)r!   rF   s    r>   rm   AsyncMessageStream.until_done
  s     $T***s   c                8    U R                   c   eU R                   $ r3   )r   rF   s    r>   r   +AsyncMessageStream.current_message_snapshot  r   rB   c                  #    U R                     S h  vN n[        UU R                  U R                  S9U l        [	        XR
                  S9nU H  nU7v   M
     MP   NK
 g 7fr   )r4   r   r   r   r   r   r   s       r>   r6   AsyncMessageStream.__stream__  s`     #// 		),<!%!>!>"22-D) *	LiLijN' (		/s&   A#A!AA!AA#A!!A#c                  #    U   S h  vN nUR                   S:X  d  M  UR                  R                   S:X  d  M7  UR                  R                  7v   MR   NM
 g 7fr   r   r   s     r>   r5   "AsyncMessageStream.__stream_text__   sD      	'%zz22u{{7G7G<7Wkk&&&	'4s/   AAAAAAAAAr   N)r<   z"AsyncStream[RawMessageStreamEvent]r=   r   r   r   r   r   r   )r   z8AsyncIterator[ParsedMessageStreamEvent[ResponseFormatT]]r   r   r   r   r   )r   r   )r   r   r   r   r   r?   r   rE   rN   r   r   r   r   r`   rn   r   rm   r   r6   r5   r   r[   rB   r>   r   r      s    ##	-6	- 2	- 
		- ) ) 7 70, " %	
 
'-$*+
 - -
'rB   r   c                  X    \ rS rSrSr\S.     S	S jjrS
S jr        SS jrSr	g)AsyncMessageStreamManageri&  a  Wrapper over AsyncMessageStream that is returned by `.stream()`
so that an async context manager can be used without `await`ing the
original client call.

```py
async with client.messages.stream(...) as stream:
    async for chunk in stream:
        ...
```
r   c               *    S U l         Xl        X l        g r3   )"_AsyncMessageStreamManager__stream'_AsyncMessageStreamManager__api_request)_AsyncMessageStreamManager__output_formatr   s      r>   r?   "AsyncMessageStreamManager.__init__2  s     EI(,rB   c                ~   #    U R                   I S h  vN n[        XR                  S9U l        U R                  $  N(7fr   )r   r   r   r   r   s     r>   r   $AsyncMessageStreamManager.__aenter__<  s4     ---
*:EYEYZ}} .s   =;)=c                p   #    U R                   b#  U R                   R                  5       I S h  vN   g g  N7fr3   )r   r`   ra   s       r>   r   #AsyncMessageStreamManager.__aexit__A  s/      ==$--%%''' %'s   +646r   N)r   z-Awaitable[AsyncStream[RawMessageStreamEvent]]r=   r   r   r   )r   z#AsyncMessageStream[ResponseFormatT]r   )
r   r   r   r   r   r   r?   r   r   r   r[   rB   r>   r   r   &  s]    	 5>	-B- 2	-
 
-
(,( "( %	(
 
(rB   r   c           	        / nU R                   S:X  a  UR                  U 5        U$ U R                   S:X  a  UR                  U 5        U$ U R                   S:X  a'  UR                  [        [        [           SUS95        U$ U R                   S:X  a  UR                  U 5        U$ U R                   S:X  GaN  UR                  U 5        UR
                  U R                     nU R                  R                   S:X  aO  UR                   S:X  a=  UR                  [        [        SU R                  R                  UR                  S	95        U$ U R                  R                   S
:X  aO  UR                   S:X  a=  UR                  [        [        SU R                  R                  UR                  S95        U$ U R                  R                   S:X  aX  UR                   S:X  aF  UR                  [        [        SU R                  R                  UR                  =(       d    / S95        U$ U R                  R                   S:X  aO  UR                   S:X  a=  UR                  [        [         SU R                  R"                  UR"                  S95        U$ U R                  R                   S:X  a;  UR                   S:X  a(  UR                  [        [$        SUR&                  S95         U$ [(        (       a  [+        U R                  5        U$ U R                   S:X  aF  UR
                  U R                     n[        [,        SU R                  US9nUR                  U5        U$ [(        (       a  [+        U 5        U$ )Nmessage_startmessage_deltamessage_stop)ry   r~   content_block_startr   r   rr   )ry   rr   snapshotinput_json_deltatool_use
input_json)ry   partial_jsonr   citations_deltacitation)ry   r  r   thinking_deltathinking)ry   r  r   signature_delta	signature)ry   r
  content_block_stop)ry   indexcontent_block)ry   rz   r"   r   r)   rx   r  r   r   rr   r   r  inputr   r  	citationsr   r  r   r
  r   r   r   )r   r   r   r  event_to_fires        r>   r   r   K  s=   
 GINzz_$e$f e 
	&e$b a 
~	%(9Xhi	
^ Y 
,	,e$V U 
,	,e$(00=;;|+!!V+%%!#"[[--!.!3!3	H y [[!33!!Z/%%&)%*[[%=%=!.!4!4	t e [[!22!!V+%%%'!&!5!5!.!8!8!>B	` Q [[!11!!Z/%%%'!&!5!5!.!7!7	L = [[!22!!Z/%%&("/"9"9 * % }U[[)" ! 
+	+(00='%++'	
 	m,  =rB   
__json_bufr   c                ,   [        [        [        U 5      [        5      (       dn  [        [        [        [        [        [           [        5      U S95      n [        [        [        U 5      [        5      (       d  [        SU  S[        U 5       35      eUcz  U R                  S:X  aQ  [        [        [           [        R                  " S0 [        [        U R                  R                  5       5      D65      $ [        SU R                   S35      eU R                  S:X  aO  UR                  R!                  [        [        [#        [$        U R&                  R)                  5       S95      5        U$ U R                  S:X  GaS  UR                  U R*                     nU R,                  R                  S	:X  a;  UR                  S
:X  a)  U=R.                  U R,                  R.                  -  sl        U$ U R,                  R                  S:X  a  [        U[0        5      (       al  SSKJn  [        [6        [9        U[:        S5      5      nU[7        U R,                  R<                  S5      -  nU(       a  U" USS9Ul        [A        U[:        U5        U$ U R,                  R                  S:X  ap  UR                  S
:X  a^  URB                  (       d  U R,                  RD                  /Ul!        U$ URB                  R!                  U R,                  RD                  5        U$ U R,                  R                  S:X  a;  UR                  S:X  a)  U=RF                  U R,                  RF                  -  sl#        U$ U R,                  R                  S:X  a-  UR                  S:X  a  U R,                  RH                  Ul$        U$ [J        (       a  [M        U R,                  5        U$ U R                  S:X  aV  UR                  U R*                     nUR                  S
:X  a+  [O        U5      (       a  [Q        UR.                  U5      Ul)        U$ U R                  S:X  GaK  U R,                  RT                  Ul*        U R,                  RV                  Ul+        U RX                  RZ                  URX                  l-        U RX                  R\                  b%  U RX                  R\                  URX                  l.        U RX                  R^                  b%  U RX                  R^                  URX                  l/        U RX                  R`                  b%  U RX                  R`                  URX                  l0        U RX                  Rb                  b%  U RX                  Rb                  URX                  l1        U$ )N)type_valuez;Unexpected event runtime type, after deserialising twice - z - r   zUnexpected event order, got z before "message_start"r   r   r   rr   r  r   )	from_jsonrB   zutf-8T)partial_moder  r  r  r	  r  r   r[   )2
isinstancer
   r   r   r   r$   r   	TypeErrorry   r+   r)   	constructr~   to_dictr{   rx   rz   r#   r,   r  
model_dumpr  r   rr   TRACKS_TOOL_INPUTjiterr  bytesgetattrJSON_BUF_PROPERTYr  r  setattrr  r  r  r
  r   r   r'   r*   parsed_outputstop_reasonstop_sequenceusageoutput_tokensinput_tokenscache_creation_input_tokenscache_read_input_tokensserver_tool_use)r   r   r=   rx   r  json_bufr  s          r>   r   r     so    d3&	22!$4 568MN
 $sE*I66YZ_Y``cdhindocpqrr::(o68O8O8uRVWZ\a\i\i\q\q\sRt8uvv9%**E\]^^zz**  ''%7u?R?R?]?]?_`	
x m 
,	,"**5;;7;;|+||v% 0 00d c [[!33'#455+
  ww8I3'OPE%++":":GDD$-hT$JGM!2H=H G [[!22||v%(().)=)=(>G%@ = %%,,U[[-A-AB< ; [[!11||z)  EKK$8$88 6 5 [[!22||z)$)KK$9$9!0 + }U[[)( ' 
+	+(00='H],C,C*4]5G5G*WM'   
	&',{{'>'>$).)B)B&/4{{/H/H, ;;##/27++2J2J""/;;22>AFAhAh"">;;..:=B[[=`=`"":;;&&25:[[5P5P""2rB   )r   r   r   r   r   z/list[ParsedMessageStreamEvent[ResponseFormatT]])r   r   r   z%ParsedMessage[ResponseFormatT] | Noner=   r   r   r   )>
__future__r   typesr   typingr   r   r   r   r	   r
   typing_extensionsr   r   r   r   r   httpxpydanticr   anthropic.types.tool_use_blockr   %anthropic.types.server_tool_use_blockr   _typesr   r   r   r   r   r   r   r   r   r   r   _utilsr    r!   _modelsr"   r#   r$   
_streamingr%   r&   _utils._utilsr'   _parse._responser)   r*   types.parsed_messager+   r,   r.   r   r   r   r   r   r  r   r[   rB   r>   <module>r;     s   "  D D T T   7 D	 	 	 + ) C F F - % : En'GO, n'b "7?3  "Fn'1 n'b"( 8 "(J[ [ 5[ 5	[| !    1:	U U <U .	U
 $UrB   