L i>BtddlmZddlmZddlmZmZmZmZm Z ddl m Z m Z m Z mZmZddlZddlmZddlmZddlmZd d lmZmZmZmZmZmZmZmZd d lm Z m!Z!m"Z"d d l#m$Z$m%Z%d dl&m'Z'm(Z(m)Z)d dl*m+Z+m,Z,GddZ-GddZ.GddZ/GddZ0 ddZ1dZ2eefZ3 ddZ4y)) annotations) TracebackType) TYPE_CHECKINGAnyTypeCallablecast)SelfIterator Awaitable AsyncIterator assert_neverN) BaseModel) ToolUseBlock)ServerToolUseBlock) TextEvent CitationEvent ThinkingEventInputJsonEventSignatureEventMessageStopEventMessageStreamEventContentBlockStopEvent)Message ContentBlockRawMessageStreamEvent)consume_sync_iteratorconsume_async_iterator)buildconstruct_typeconstruct_type_unchecked)Stream AsyncStreamceZdZUded< ddZeddZeddZddZddZ ddZ dd Z dd Z dd Z dd Zdd ZeddZddZddZy) MessageStream Iterator[str] text_streamct||_|j|_|j|_d|_yN) _raw_stream__stream_text__r) __stream__ _iterator&_MessageStream__final_message_snapshotself raw_streams g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/anthropic/lib/streaming/_messages.py__init__zMessageStream.__init__(1%//1*8<%c.|jjSr+r,responser2s r4r:zMessageStream.response.(((r7cL|jjjdSNz request-idr:headersgetr;s r4 request_idzMessageStream.request_id2}}$$((66r7c6|jjSr+)r/__next__r;s r4rEzMessageStream.__next__6s~~&&((r7c#6K|jD]}|ywr+r/r2items r4__iter__zMessageStream.__iter__9sNN DJ sc|Sr+r;s r4 __enter__zMessageStream.__enter__=s r7c$|jyr+closer2exc_typeexcexc_tbs r4__exit__zMessageStream.__exit__@s r7c8|jjyz Close the response and release the connection. Automatically called if the response body is read to completion. Nr,rPr;s r4rPzMessageStream.closeHs  r7cV|j|jJ|jS)qWaits until the stream has been read to completion and returns the accumulated `Message` object. ) until_doner0r;s r4get_final_messagezMessageStream.get_final_messagePs, ,,888,,,r7c N|j}g}|jD]-}|jdk(s|j|j/|s@t ddj |jDcgc]}|jc}ddj |Scc}w)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().contentr\contenttypeappendr_ RuntimeErrorjoinr2message text_blocksblockbs r4get_final_textzMessageStream.get_final_textXs((*!# __ /EzzV#""5::. /vwzwwRYRaRaAbMNBCBHBHAbxcwdduv ww{##Abs0B"ct|y)z)Blocks until the stream has been consumedN)rr;s r4r[zMessageStream.until_donems d#r7c6|jJ|jSr+)r0r;s r4current_message_snapshotz&MessageStream.current_message_snapshotr ,,888,,,r7c#K|jD]@}t||j|_t||j}|D]}|BywN)eventcurrent_snapshot)rvmessage_snapshot)r,accumulate_eventr0 build_eventsrrr2 sse_eventevents_to_firervs r4r.zMessageStream.__stream__ws\)) I,<!%!>!>-D ) * DLiLijN'    sAAc#K|D]D}|jdk(s|jjdk(s-|jjFywNcontent_block_delta text_deltarfdeltar_r2chunks r4r-zMessageStream.__stream_text__sC 'Ezz22u{{7G7G<7Wkk&&& 'sA A A N)r3zStream[RawMessageStreamEvent]returnNonerzhttpx.Responserz str | Nonerr)rzIterator[MessageStreamEvent]rr rRztype[BaseException] | NonerSzBaseException | NonerTzTracebackType | Nonerrrrrrrstr)rr()__name__ __module__ __qualname____annotations__r5propertyr:rBrErJrMrUrPr\ror[rrr.r-rLr7r4r'r's= ))77),"%   !-$*$ -- 'r7r'c@eZdZdZ ddZddZ ddZy) MessageStreamManagerzWrapper over MessageStream that is returned by `.stream()`. ```py with client.messages.stream(...) as stream: for chunk in stream: ... ``` c d|_||_yr+)_MessageStreamManager__stream"_MessageStreamManager__api_requestr2 api_requests r4r5zMessageStreamManager.__init__s/3 (r7cZ|j}t||_|jSr+)rr'rr1s r4rMzMessageStreamManager.__enter__s&'') %j1 }}r7cR|j|jjyyr+)rrPrQs r4rUzMessageStreamManager.__exit__s# == $ MM   ! %r7N)rz+Callable[[], Stream[RawMessageStreamEvent]]rr)rr'r)rrr__doc__r5rMrUrLr7r4rrsN)@) ) ","""% "  "r7rceZdZUded< ddZeddZeddZddZddZ ddZ dd Z dd Z dd Z dd Zdd ZeddZddZddZy)AsyncMessageStreamAsyncIterator[str]r)ct||_|j|_|j|_d|_yr+)r,r-r)r.r/+_AsyncMessageStream__final_message_snapshotr1s r4r5zAsyncMessageStream.__init__r6r7c.|jjSr+r9r;s r4r:zAsyncMessageStream.responser<r7cL|jjjdSr>r?r;s r4rBzAsyncMessageStream.request_idrCr7cRK|jjd{S7wr+)r/ __anext__r;s r4rzAsyncMessageStream.__anext__s^^--////s '%'cHK|j23d{}|7 6ywr+rGrHs r4 __aiter__zAsyncMessageStream.__aiter__s&..  $J .s "  " "cK|Swr+rLr;s r4 __aenter__zAsyncMessageStream.__aenter__s  sc@K|jd{y7wr+rOrQs r4 __aexit__zAsyncMessageStream.__aexit__s jjls cTK|jjd{y7wrWrXr;s r4rPzAsyncMessageStream.closes $$&&&s (&(crK|jd{|jJ|jS7w)rZN)r[rr;s r4r\z$AsyncMessageStream.get_final_messages;oo,,888,,, s 757c jK|jd{}g}|jD]-}|jdk(s|j|j/|s@t ddj |jDcgc]}|jc}ddj |S7cc}ww)r^Nr_r`rarbrcrdrjs r4roz!AsyncMessageStream.get_final_texts..00!# __ /EzzV#""5::. /vwzwwRYRaRaAbMNBCBHBHAbxcwdduv ww{##1Abs&B3B,$B3>B3:B. B3.B3c6Kt|d{y7w)z(Waits until the stream has been consumedN)r r;s r4r[zAsyncMessageStream.until_dones$T***s c6|jJ|jSr+)rr;s r4rrz+AsyncMessageStream.current_message_snapshotrsr7cK|j23d{}t||j|_t||j}|D]}| I7D6ywru)r,ryrrzrrr{s r4r.zAsyncMessageStream.__stream__se#//  ),<!%!>!>-D ) * DLiLijN'    /s& AAAAAAAAcK|23d{}|jdk(s|jjdk(s3|jjM7H6ywrrrs r4r-z"AsyncMessageStream.__stream_text__ sK ' '%zz22u{{7G7G<7Wkk&&& '4s/AAAAAAAAAN)r3z"AsyncStream[RawMessageStreamEvent]rrrrr)rz!AsyncIterator[MessageStreamEvent]rrrrr)rr)rrrrr5rr:rBrrrrrPr\ror[rrr.r-rLr7r4rrs##= ))770,"%   '-$*+ -- 'r7rc@eZdZdZ ddZddZ ddZy) AsyncMessageStreamManagera"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: ... ``` c d|_||_yr+)"_AsyncMessageStreamManager__stream'_AsyncMessageStreamManager__api_requestrs r4r5z"AsyncMessageStreamManager.__init__s48 (r7cnK|jd{}t||_|jS7 wr+)rrrr1s r4rz$AsyncMessageStreamManager.__aenter__&s/--- *:6 }}.s 53!5cnK|j#|jjd{yy7wr+)rrPrQs r4rz#AsyncMessageStreamManager.__aexit__+s0 == $--%%' ' ' % 's *535N)rz-Awaitable[AsyncStream[RawMessageStreamEvent]]rr)rrr)rrrrr5rrrLr7r4rrsN )B) ) (,("(% (  (r7rc g}|jdk(r|j||S|jdk(r|j||S|jdk(r#|jttd||S|jdk(r|j||S|jdk(rL|j||j|j }|j jdk(rR|jdk(r|jttd|j j|j |S|j jd k(rR|jd k(r|jttd |j j|j |S|j jdk(rV|jdk(r!|jttd|j j|jxsg|S|j jdk(rQ|jdk(r|jttd|j j |j |S|j jdk(r=|jdk(r+|jtt"d|j$ |St&rt)|j |S|jdk(rG|j|j }|jtt*d|j ||St&r t)||S)N message_start message_delta message_stop)rfrkcontent_block_startrrr_)rfr_snapshotinput_json_deltatool_use input_json)rf partial_jsonrcitations_deltacitation)rfrrthinking_deltathinking)rfrrsignature_delta signature)rfrcontent_block_stop)rfindex content_block)rfrgr!rrerrrr_rrinputrr citationsrrrrrrr)rvrxr}rs r4rzrz5s( 02N zz_$e$X W  &e$T S ~ %e$4>ScdeP O , ,e$L K , ,e$(00= ;;  | +!!V+%%!#"[[--!.!3!3 ~ o[[  !3 3!!Z/%%&)%*[[%=%=!.!4!4 j [[[  !2 2!!V+%%%'!&!5!5!.!8!8!>B V G[[  !1 1!!Z/%%%'!&!5!5!.!7!7 B 3[[  !2 2!!Z/%%&("/"9"9  U[[)  + +(00=  '.B%++er s      r7 __json_bufc  ttt|tslttt tt tt|}ttt|tstd|dt||c|jdk(r;tjditt|jjStd|jd|jdk(rR|jjtt t#t |j$j'|S|jdk(r<|j|j(}|j*jd k(r;|jd k(r|xj,|j*j,z c_|S|j*jd k(r}t|t.rd d lm}tt4t7|t8d}|t5|j*j:dz }|r||d|_t?|t8||S|j*jdk(rk|jd k(r|j@s|j*jBg|_ |S|j@j|j*jB|S|j*jdk(r:|jdk(r|xjD|j*jDz c_"|S|j*jdk(r,|jdk(r8|j*jF|_#|StHrtK|j*|S|jdk(rG|j*jL|_&|j*jN|_'|jPjR|jP_)|jPjT%|jPjT|jP_*|jPjV%|jPjV|jP_+|jPjX%|jPjX|jP_,|jPjZ%|jPjZ|jP_-|S)N)type_valuez;Unexpected event runtime type, after deserialising twice - z - rzUnexpected event order, got z before "message_start"rrrr_rr) from_jsonr7zutf-8T) partial_moderrrrrrL). isinstancer rrrr#r TypeErrorrfr constructrkto_dictrhrergrr"r model_dumprrr_TRACKS_TOOL_INPUTjiterrbytesgetattrJSON_BUF_PROPERTYrrsetattrrrrrrr stop_reason stop_sequenceusage output_tokens input_tokenscache_creation_input_tokenscache_read_input_tokensserver_tool_use)rvrwrerjson_bufs r4ryrys d3& 2 ! $4 568MN  $sE*I6YZ_Y``cdhindocpqr r :: ($$JtC1F1F1H'IJ J9%**E\]^^ zz**  '' \9L9L9W9W9YZ  p e , ,"**5;;7 ;;  | +||v%  0 00 \ [[[  !3 3'#45+  ww8I3'OPE%++":":GDD$-hT$JGM!2H=@ ?[[  !2 2||v%(().)=)=(>G%8 5%%,,U[[-A-AB4 3[[  !1 1||z)  EKK$8$88 . -[[  !2 2||z)$)KK$9$9!( #U[[)   &',{{'>'>$).)B)B&/4{{/H/H, ;; # # /27++2J2J  " " / ;; 2 2 >AFAhAh  " " > ;; . . :=B[[=`=`  " " : ;; & & 25:[[5P5P  " " 2 r7)rvrrxrrzlist[MessageStreamEvent])rvrrwzMessage | Nonerr)5 __future__rtypesrtypingrrrrr typing_extensionsr r r r rhttpxpydanticranthropic.types.tool_use_blockr%anthropic.types.server_tool_use_blockr_typesrrrrrrrrrrr_utilsrr _modelsr!r"r# _streamingr$r%r'rrrrzrrryrLr7r4rs";;TT 7D   BACFF-h'h'V""@h'h'V((DT TT Tn! P P%P Pr7