Ë
    ³ŒjT  ã                  óV  — U d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ e
rd dlZd dl m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)  ededdef   ¬«      Z* ejV                  e,«      Z-ej\                  d(d„«       Z/ e0h d£«      Z1de2d<   d)d„Z3d*d„Z4d+d„Z5ej\                  d,d„«       Z6d-d„Z7d.d„Z8d/d„Z9d0d„Z:d1d„Z;	 	 	 	 	 	 	 	 	 	 	 	 d2d „Z<	 	 	 	 	 	 	 	 	 	 d3d!„Z= G d"„ ded#¬$«      Z>dd%dd&œ	 	 	 	 	 	 	 	 	 d4d'„Z?y)5é    )ÚannotationsN)ÚAsyncIteratorÚMappingÚSequence)ÚTYPE_CHECKINGÚAnyÚCallableÚOptionalÚTypeVarÚUnion)ÚSelfÚ	TypedDict)Úclient)Úrun_helpers)Údumps)ÚSECRET_PLACEHOLDER)ÚInputTokenDetailsÚUsageMetadata)Ú	AnthropicÚAsyncAnthropic)ÚAsyncMessageStreamÚMessageStream)Ú
CompletionÚMessageÚMessageStreamEventÚCr   r   )Úboundc                 ó:   — 	 ddl m} m} | |fS # t        $ r Y y w xY w)Nr   ©ÚNotGivenÚOmit)Úanthropic._typesr    r!   ÚImportErrorr   s     úg/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langsmith/wrappers/_anthropic.pyÚ_get_not_givenr%   "   s'   € ðß3à˜$ÐÐøÜò Ùðús   ‚ Ž	™>   ÚurlÚnameÚtypeÚtool_configurationzfrozenset[str]Ú_MCP_SERVER_SAFE_KEYSc                óø   — t        | t        t        f«      s| S g }| D ]T  }t        |t        «      r1|j	                  «       D ��ci c]  \  }}||t
        v r|nt        “Œ }}}|j                  |«       ŒV |S c c}}w )aŽ  Mask credentials in `mcp_servers` definitions before they are traced.

    Keys outside `_MCP_SERVER_SAFE_KEYS` keep their name but get
    `SECRET_PLACEHOLDER` as their value: a trace still shows that the field was
    set, without exposing it.

    Returns new dicts. The caller's `mcp_servers` are also sent to Anthropic and
    must keep their real values, so nothing is modified in place.
    )Ú
isinstanceÚlistÚtupler   Úitemsr*   r   Úappend)ÚserversÚredactedÚserverÚkeyÚvalues        r$   Ú_redact_mcp_serversr6   2   s†   € ô �g¤¤e˜}Ô-Øˆà€HÛˆÜ�fœgÔ&ð #)§,¡,¤.ôá"0‘J�C˜ð ˜cÔ%:Ñ:‘UÔ@RÑRØ"0ð ñ ð 	�‰˜Õð ð €Oùós   ÁA6c                óä  ‡— 	 t        «       x}r8| j                  «       D ��‡ci c]  \  }Št        ˆfd„|D «       «      s|‰“Œ } }}d| v r0d| d   dœg| j                  dg «      z   | d<   | j                  d«       | j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}d|v rt        |d   «      |d<   |S c c}}w # t        $ r"}t        j                  d|› �«       Y d }~Œ�d }~ww xY wc c}}w )Nc              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­w©N)r,   )Ú.0ÚtÚvs     €r$   Ú	<genexpr>z#_strip_not_given.<locals>.<genexpr>P   s   øè ø€ Ð?±Y°œ: a¨×+±Yùs   ƒzError stripping NotGiven: Úsystem)ÚroleÚcontentÚmessagesÚmcp_servers)	r%   r/   ÚanyÚ	ExceptionÚloggerÚerrorÚgetÚpopr6   )ÚdÚ	not_givenÚkr<   ÚeÚresults      `  r$   Ú_strip_not_givenrN   J   s  ø€ ð7Ü&Ó(Ð(ˆ9Ð(ð ŸG™GœIõá%‘D�A�qÜÓ?±YÓ?Ô?ð �1‘Ø%ð ñ ð �1�}Ø"*°q¸±{ÑCÐDÀqÇuÁuØ˜óH
ñ 
ˆˆ*‰ð 	
�‰ˆhŒØ Ÿw™wœyÔ:™y‘t�q˜!¨A©Mˆa�‰d˜y€FÑ:à˜ÑÜ 3°F¸=Ñ4IÓ Jˆˆ}ÑØ€Mùó#øô
 ò 7Ü�‰Ð1°!°Ð5×6Ñ6ûð7üó ;s4   ƒ B> £!B8ÁB> Â
C,ÂC,Â8B> Â>	C)ÃC$Ã$C)c                óD  — t        |«      }|j                  d«      }|rt        |t        «      r|g}h d£}|j	                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}dd|j                  dd «      |j                  dd «      |j                  dd «      |i | ¥|¥dœS c c}}w )	NÚstop>   Útop_kÚtop_pÚstreamÚthinkingÚtool_choiceÚservice_tierÚ	anthropicÚchatÚmodelÚtemperatureÚ
max_tokens)Úls_providerÚls_model_typeÚls_model_nameÚls_temperatureÚls_max_tokensÚls_stopÚls_invocation_params)rN   rG   r,   Ústrr/   )Úprepopulated_invocation_paramsÚkwargsÚstrippedrP   Úallowed_invocation_keysrK   r<   Úinvocation_paramss           r$   Ú_infer_ls_paramsri   a   sÄ   € Ü Ó'€Hà�<‰<˜Ó€DÙ”
˜4¤Ô%ØˆvˆòÐð "Ÿ™Ô)ôÙ)‘��A¨QÐ2IÒ-Iˆˆ1‰Ð)ð ñ ð
 #ØØ!Ÿ™ g¨tÓ4Ø"Ÿ,™, }°dÓ;Ø!Ÿ™ l°DÓ9Øð!
Ø,ð!
àð!
ñð ùó	s   Á	BÁBc                 ó2   — 	 ddl m}  | S # t        $ r Y y w xY w)Nr   ©Úaccumulate_event)Ú!anthropic.lib.streaming._messagesrl   r#   rk   s    r$   Ú_get_sdk_accumulate_eventrn   †   s"   € ðÝFàÐøÜò Ùðús   ‚
 Š	•c                óð  — | j                  d«      xs d}| j                  d«      xs d}i }| j                  d«      xs d}|r||d<   | j                  d«      xs i }|r9|j                  d«      xs d}|j                  d«      xs d}|r||d<   |r"||d<   n| j                  d	«      xs d}|r||d<   t        |j                  «       «      }	||	z   }
|
|z   }t        |
||¬
«      }|rt	        di |¤Ž|d<   |S )NÚinput_tokensr   Úoutput_tokensÚcache_read_input_tokensÚ
cache_readÚcache_creationÚephemeral_5m_input_tokensÚephemeral_1h_input_tokensÚcache_creation_input_tokens)rp   rq   Útotal_tokensÚinput_token_details© )rG   ÚsumÚvaluesr   r   )Úanthropic_token_usagerp   rq   ry   rs   Úcache_creation_objÚephemeral_5mÚephemeral_1hrt   Úcache_token_sumÚadjusted_inputÚadjusted_totalrM   s                r$   Ú_create_usage_metadatar„   �   s;  € Ø(×,Ñ,¨^Ó<ÒAÀ€LØ)×-Ñ-¨oÓ>ÒCÀ!€Mà "ÐØ&×*Ñ*Ð+DÓEÒJÈ€JÙØ,6Ð˜LÑ)à.×2Ñ2Ð3CÓDÒJÈÐÙØ)×-Ñ-Ð.IÓJÒOÈaˆØ)×-Ñ-Ð.IÓJÒOÈaˆÙØ?KÐÐ ;Ñ<ÙØ?KÐÐ ;Ò<à.×2Ñ2Ð3PÓQÒVÐUVˆÙØ4BÐÐ 0Ñ1ô Ð-×4Ñ4Ó6Ó7€OØ! OÑ3€NØ# mÑ3€NäØ#Ø#Ø#ô€Fñ
 Ü(9Ñ(PÐ<OÑ(PˆÐ$Ñ%Ø€Mó    c                óš  — t        | d«      rCt        j                  «       5  t        j                  d«       | j	                  «       }ddd«       n| j	                  «       }j                  dd«      }|rt        |«      |d<   |j                  dd«       |j                  d«      xs g }|D �cg c]*  }t        |t        «      sŒ|j                  d«      dk(  sŒ)|‘Œ, }}|rÎ|D �cg c]8  }t        |t        «      r&|j                  d«      d	k(  r|j                  d	d
«      ‘Œ: }}d
j                  |«      xs d|d<   t        |«      D ��cg c]Y  \  }}|j                  dd|› �«      d||j                  dd
«      t        |j                  di «      «      j                  «       dœdœ‘Œ[ c}}|d<   |S # 1 sw Y   �ŒZxY wc c}w c c}w c c}}w )zHConvert an Anthropic Message to a flat outputs dict with usage_metadata.Úparsed_outputÚignoreNÚusageÚusage_metadatar(   r@   Útool_useÚtextÚ ÚidÚcall_Úfunctionr'   Úinput)r'   Ú	arguments)rŽ   r(   Úindexr�   Ú
tool_calls)ÚhasattrÚwarningsÚcatch_warningsÚsimplefilterÚ
model_dumprH   r„   rG   r,   ÚdictÚjoinÚ	enumerateÚ_dumpsÚdecode)	ÚmessageÚoutputsr}   r@   ÚbÚtool_use_blocksÚ
text_partsÚiÚblocks	            r$   Ú_message_to_outputsr¦   ¶   sÈ  € ô ˆw˜Ô(Ü×$Ñ$Õ&Ü×!Ñ! (Ô+Ø×(Ñ(Ó*ˆG÷ 'Ð&ð ×$Ñ$Ó&ˆØ#ŸK™K¨°Ó6ÐÙÜ$:Ð;PÓ$QˆÐ Ñ!Ø‡K�K�˜Ôà�k‰k˜)Ó$Ò*¨€GáóÙˆaœj¨¬DÕ1°a·e±e¸F³mÀzÓ6QŠ�7ð ð ñ ñ ó
á�Ü˜!œTÔ" q§u¡u¨V£}¸Ò'>ð �E‰E�&˜"ÕØð 	ð 
ð
  ŸW™W ZÓ0Ò8°Dˆ�	Ñô & oÔ6ô!
ñ 7‘��5ð —i‘i ¨¨a¨S kÓ2Ø"Øà!ŸI™I f¨bÓ1Ü!'¨¯	©	°'¸2Ó(>Ó!?×!FÑ!FÓ!Hñó	ð 7ò!
ˆ�Ñð €N÷C 'Ñ&üòùò
ùó!
s*   ¡&F0Â-F=ÃF=ÃF=Ã$=GÅ	AGÆ0F:c                óÔ   — t        «       }|€d| iS d }| D ]  }	  |||¬«      }Œ |€d| iS t	        |«      S # t        $ r(}t        j                  d|› �«       d| icY d }~c S d }~ww xY w)NÚoutput)ÚeventÚcurrent_snapshotz/Error accumulating event in Anthropic Wrapper: )rn   ÚRuntimeErrorrE   Údebugr¦   )Ú
all_chunksÚ
accumulateÚfull_messageÚchunkrL   s        r$   Ú_reduce_chat_chunksr±   á   sŽ   € Ü*Ó,€JØÐØ˜*Ð%Ð%Ø€LÛˆð	*Ù%ØØ!-ô‰Lð ð ÐØ˜*Ð%Ð%Ü˜|Ó,Ð,øô ò 	*Ü�L‰LÐJÈ1È#ÐNÔOØ˜jÐ)×)ûð	*ús   ™
6¶	A'¿A"ÁA'Á"A'c                óÆ   — g }| D ]"  }|j                   }|€Œ|j                  |«       Œ$ dj                  |«      }| r| d   j                  «       }d|ig|d<   |S dd|igi}|S )Nr�   éÿÿÿÿrŒ   Úchoices)Ú
completionr0   r›   r™   )r­   Úall_contentr°   r@   rI   s        r$   Ú_reduce_completionsr·   ô   s†   € Ø€KÛˆØ×"Ñ"ˆØÑØ×Ñ˜wÕ'ð ð �g‰g�kÓ"€GÙØ�r‰N×%Ñ%Ó'ˆØ Ð)Ð*ˆˆ)‰ð €Hð ˜& 'Ð*Ð+Ð,ˆà€Hr…   c                ó   — 	 t        | d«      r&t        | j                  «      r	 | j                  «       } t	        | «      S # t        $ r Y Œw xY w# t
        $ r&}t        j                  d|› �«       d| icY d }~S d }~ww xY w)NÚparsez"Error processing chat completion: r¨   )r•   Úcallabler¹   rD   r¦   ÚBaseExceptionrE   r¬   )r    rL   s     r$   Ú_process_chat_completionr¼     s   € ð#ô
 �7˜GÔ$¬°'·-±-Ô)@ðØ!Ÿ-™-›/�ô # 7Ó+Ð+øô ò Ùðûô ò #Ü�‰Ð9¸!¸Ð=Ô>Ø˜'Ð"Õ"ûð#ús=   ‚!A ¤? ´
A ¿	AÁA Á
AÁA Á	A=ÁA8Á2A=Á8A=ÚTracingExtrac                óÂ   ‡ ‡‡‡‡— t        j                  ‰ «      ˆˆ ˆˆˆfd„«       }t        j                  ‰ «      ˆˆ ˆˆˆfd„«       }t        j                  ‰ «      r|S |S )Nc                 óÆ   •— |j                  d«      }t        j                  d‰d|r‰nd t        t        t        j                  t        ‰«      dœ‰	¤Ž}  |‰«      | i |¤Ž}|S ©NrS   Úllm)r'   Úrun_typeÚ	reduce_fnÚprocess_inputsÚprocess_outputsÚ_invocation_params_fnrz   ©rG   r   Ú	traceablerN   r¼   Ú	functoolsÚpartialri   ©
Úargsre   rS   Ú	decoratorrM   r'   Úoriginal_createrd   rÃ   Útracing_extras
        €€€€€r$   Úcreatez_get_wrapper.<locals>.create  st   ø€ à—‘˜HÓ%ˆÜ×)Ñ)ð 

ØØÙ#)‘i¨tÜ+Ü4Ü"+×"3Ñ"3Ü Ð"@ó#ñ

ð ñ

ˆ	ð ,‘˜?Ó+¨TÐ<°VÑ<ˆØˆr…   c               Ÿ  óâ   •K  — |j                  d«      }t        j                  d‰d|r‰nd t        t        t        j                  t        ‰«      dœ‰	¤Ž}  |‰«      | i |¤Žƒ d {  –—† }|S 7 Œ­wrÀ   rÇ   rË   s
        €€€€€r$   Úacreatez_get_wrapper.<locals>.acreate.  s�   øè ø€ à—‘˜HÓ%ˆÜ×)Ñ)ð 

ØØÙ#)‘i¨tÜ+Ü4Ü"+×"3Ñ"3Ü Ð"@ó#ñ

ð ñ

ˆ	ð 2‘y Ó1°4ÐB¸6ÑB×BˆØˆð Cús   ƒA#A/Á&A-Á'A/)rÉ   Úwrapsr   Úis_async)rÎ   r'   rÃ   rd   rÏ   rÐ   rÒ   s   `````  r$   Ú_get_wrapperrÕ     sW   ü€ ô ‡_�_�_Ó%÷ó &ðô" ‡_�_�_Ó%÷ó &ðô  "×*Ñ*¨?Ô;ˆ7ÐGÀÐGr…   c                ó¢  ‡ ‡‡‡	‡
— dt        ‰ «      j                  «       v }t        j                  d|t        dt
        t        j                  t        |«      dœ|¤ŽŠ	t        j                  d|dt
        t        t        j                  t        |«      dœ|¤ŽŠ
|r G ˆ	ˆ
fd„d«      Š G ˆˆ fd„d«      }|S  G ˆ	ˆ
fd	„d
«      Š G ˆˆ fd„d«      }|S )z;Create a wrapper for Anthropic's streaming context manager.ÚasyncrÁ   )r'   rÃ   rÂ   rÄ   rÆ   )r'   rÂ   rÄ   rÅ   rÆ   c                  ó¬   •— e Zd Z	 	 	 	 dd„Zeˆfd„«       Zedd„«       Zedd„«       Zdd„Zdˆ fd„Z	dd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zedd„«       Zy)ú6_get_stream_wrapper.<locals>.AsyncMessageStreamWrapperc                ó    — || _         || _        y r9   ©Ú_wrappedÚ_kwargs©ÚselfÚwrappedre   s      r$   Ú__init__z?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__init__b  ó   € ð
 !(�”Ø%�•r…   c                ó>   •‡ — ‰ˆ fd„«       } |di ‰ j                   ¤ŽS )Nc                ó6  •K  — ‰j                   j                  2 3 d {  –—† }|­–— Œ7 Œ
6 t        j                  «       }‰j                   j	                  «       ƒ d {  –—†7  }t        |«      }||_        |j                  d«      x}r||j                  d<   y y ­w©NrŠ   ©	rÜ   Útext_streamr   Úget_current_run_treeÚget_final_messager¦   r    rG   Úmetadata)Ú_r°   Úrun_treeÚfinal_messager    r‰   rß   s         €r$   Ú_text_streamzX_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream.<locals>._text_streaml  sŒ   øè ø€ à'+§}¡}×'@Ò'@÷ $˜eØ#œð$øÐ'@ä*×?Ñ?ÓA�HØ*.¯-©-×*IÑ*IÓ*K×$KÐ$K�MÜ1°-Ó@�GØ'.�HÔ$Ø '§¡Ð,<Ó =Ð=�uÐ=Ø>C˜×)Ñ)Ð*:Ò;ð >ùs+   ƒBš+ž)Ÿ+¢B©+«2BÁA Á;Brz   ©rÝ   ©rß   rî   Úconfigured_traceable_texts   ` €r$   rç   zB_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_streamj  s+   ù€ à*óDó +ðDñ $Ñ3 d§l¡lÑ3Ð3r…   c                ó.   — | j                   j                  S r9   ©rÜ   Úresponse©rß   s    r$   rô   z?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.responsey  ó   € à—}‘}×-Ñ-Ð-r…   c                ó.   — | j                   j                  S r9   ©rÜ   Ú
request_idrõ   s    r$   rù   zA_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.request_id}  ó   € à—}‘}×/Ñ/Ð/r…   c              “  ó^   K  — | j                  «       }|j                  «       ƒ d {  –—† S 7 Œ­wr9   )Ú	__aiter__Ú	__anext__)rß   Úaiters     r$   rý   z@_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__anext__�  s%   è ø€ ØŸ™Ó(�Ø"Ÿ_™_Ó.×.Ð.Ð.ús   ‚$-¦+§-c               ól   •‡ K  — ‰ˆ fd„«       } |di ‰ j                   ¤Ž2 3 d {  –—† }|­–— Œ7 Œ
6 y ­w)Nc                 ó8   •— ‰j                   j                  «       S r9   )rÜ   rü   ©rë   rß   s    €r$   Útraced_iterzU_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__.<locals>.traced_iter†  s   ø€ àŸ=™=×2Ñ2Ó4Ð4r…   rz   rï   )rß   r  r°   Úconfigured_traceables   `  €r$   rü   z@_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__…  s?   ùè ø€ Ø%ó5ó &ð5ñ $/Ñ#>°·±Ò#>÷  ˜%Ø”Kð øÑ#>ùs   „4¡2¥0¦2©4°2²4c              “  óV   K  — | j                   j                  «       ƒ d {  –—†  | S 7 Œ­wr9   )rÜ   Ú
__aenter__rõ   s    r$   r  zA_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aenter__�  s&   è ø€ Ø—m‘m×.Ñ.Ó0×0Ð0Ø�ð 1ús   ‚) '¡)c              —  óR   K  —  | j                   j                  |Ž ƒ d {  –—†  y 7 Œ­wr9   )rÜ   Ú	__aexit__©rß   Úexcs     r$   r  z@_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aexit__‘  ó    è ø€ Ø-�d—m‘m×-Ñ-¨sÐ3×3Ò3úó   ‚'Ÿ% 'c              “  óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr9   ©rÜ   Úcloserõ   s    r$   r  z<_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.close”  s   è ø€ Ø—m‘m×)Ñ)Ó+×+Ò+úó   ‚( &¡(c              “  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr9   ©rÜ   ré   rõ   s    r$   ré   zH_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_message—  s   è ø€ Ø!Ÿ]™]×<Ñ<Ó>×>Ð>Ð>úó   ‚' %¡'c              “  óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr9   ©rÜ   Úget_final_textrõ   s    r$   r  zE_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_textš  s   è ø€ Ø!Ÿ]™]×9Ñ9Ó;×;Ð;Ð;úr  c              “  óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wr9   ©rÜ   Ú
until_donerõ   s    r$   r  zA_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.until_done�  s   è ø€ Ø—m‘m×.Ñ.Ó0×0Ò0úr  c                ó.   — | j                   j                  S r9   ©rÜ   Úcurrent_message_snapshotrõ   s    r$   r  zO_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.current_message_snapshot   ó   € à—}‘}×=Ñ=Ð=r…   N)rà   r   ÚreturnÚNone)r  zhttpx.Response©r  z
str | None©r  r   )r  z!AsyncIterator[MessageStreamEvent]©r  r   ©r  r  ©r  r   ©r  rc   )Ú__name__Ú
__module__Ú__qualname__rá   Úpropertyrç   rô   rù   rý   rü   r  r  r  ré   r  r  r  ©r  rñ   s   €€r$   ÚAsyncMessageStreamWrapperrÙ   a  s’   ø„ ð&à+ð&ð ó	&ð ó4ó ð4ð ò.ó ð.ð ò0ó ð0ó/õ óó4ó,ó?ó<ó1ð ò>ó ñ>r…   r*  c                  ó&   •— e Zd Zd„ Zˆ ˆfd„Zd„ Zy)ú>_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapperc                ó   — || _         y r9   rï   ©rß   re   s     r$   rá   zG_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__init__¥  ó	   € Ø%�•r…   c              “  ó¨   •K  —  ‰di | j                   ¤Ž| _        | j                  j                  «       ƒ d {  –—† } ‰|fi | j                   ¤ŽS 7 Œ­w©Nrz   )rÝ   Ú_managerr  )rß   rS   r*  Úoriginal_streams     €€r$   r  zI_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aenter__¨  sH   øè ø€ Ù /Ñ ?°$·,±,Ñ ?�”Ø#Ÿ}™}×7Ñ7Ó9×9�Ù0°ÑH¸4¿<¹<ÑHÐHð :ús   ƒ5A¸A¹Ac              —  óR   K  —  | j                   j                  |Ž ƒ d {  –—†  y 7 Œ­wr9   )r2  r  r  s     r$   r  zH_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aexit__­  r
  r  N)r%  r&  r'  rá   r  r  )r*  r3  s   €€r$   Ú!AsyncMessagesStreamManagerWrapperr,  ¤  s   ø„ ò&õIó
4r…   r5  c                  óª   •— e Zd Z	 	 	 	 dd„Zedd„«       Zedd„«       Zeˆfd„«       Zdd„Zˆ fd„Z	dd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zedd„«       Zy)ú1_get_stream_wrapper.<locals>.MessageStreamWrapperc                ó    — || _         || _        y r9   rÛ   rÞ   s      r$   rá   z:_get_stream_wrapper.<locals>.MessageStreamWrapper.__init__´  râ   r…   c                ó.   — | j                   j                  S r9   ró   rõ   s    r$   rô   z:_get_stream_wrapper.<locals>.MessageStreamWrapper.response¼  rö   r…   c                ó.   — | j                   j                  S r9   rø   rõ   s    r$   rù   z<_get_stream_wrapper.<locals>.MessageStreamWrapper.request_idÀ  rú   r…   c                ó>   •‡ — ‰ˆ fd„«       } |di ‰ j                   ¤ŽS )Nc               ;  ó  •K  — ‰j                   j                  E d {  –—†  t        j                  «       }‰j                   j	                  «       }t        |«      }||_        |j                  d«      x}r||j                  d<   y y 7 Œh­wrå   ræ   )rë   rì   rí   r    r‰   rß   s        €r$   rî   zS_get_stream_wrapper.<locals>.MessageStreamWrapper.text_stream.<locals>._text_streamÆ  s|   øè ø€ à#Ÿ}™}×8Ñ8×8Ð8Ü*×?Ñ?ÓA�HØ$(§M¡M×$CÑ$CÓ$E�MÜ1°-Ó@�GØ'.�HÔ$Ø '§¡Ð,<Ó =Ð=�uÐ=Ø>C˜×)Ñ)Ð*:Ò;ð >ð 9ús   ƒB�BžA)Brz   rï   rð   s   ` €r$   rç   z=_get_stream_wrapper.<locals>.MessageStreamWrapper.text_streamÄ  s+   ù€ à*óDó +ðDñ $Ñ3 d§l¡lÑ3Ð3r…   c                ó>   — | j                  «       j                  «       S r9   )Ú__iter__Ú__next__rõ   s    r$   r?  z:_get_stream_wrapper.<locals>.MessageStreamWrapper.__next__Ò  s   € Ø—}‘}“×/Ñ/Ó1Ð1r…   c                ó>   •‡ — ‰ˆ fd„«       } |di ‰ j                   ¤ŽS )Nc                 ó8   •— ‰j                   j                  «       S r9   )rÜ   r>  r  s    €r$   r  zO_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__.<locals>.traced_iterÖ  s   ø€ àŸ=™=×1Ñ1Ó3Ð3r…   rz   rï   )rß   r  r  s   ` €r$   r>  z:_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__Õ  s)   ù€ Ø%ó4ó &ð4ñ #Ñ2 T§\¡\Ñ2Ð2r…   c                ó:   — | j                   j                  «        | S r9   )rÜ   Ú	__enter__rõ   s    r$   rC  z;_get_stream_wrapper.<locals>.MessageStreamWrapper.__enter__Ü  s   € Ø—‘×'Ñ'Ô)Ø�r…   c                ó6   —  | j                   j                  |Ž  y r9   )rÜ   Ú__exit__r  s     r$   rE  z:_get_stream_wrapper.<locals>.MessageStreamWrapper.__exit__à  ó   € Ø&�—‘×&Ñ&¨Ò,r…   c                ó8   — | j                   j                  «        y r9   r  rõ   s    r$   r  z7_get_stream_wrapper.<locals>.MessageStreamWrapper.closeã  s   € Ø—‘×#Ñ#Õ%r…   c                ó6   — | j                   j                  «       S r9   r  rõ   s    r$   ré   zC_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_messageæ  s   € Ø—}‘}×6Ñ6Ó8Ð8r…   c                ó6   — | j                   j                  «       S r9   r  rõ   s    r$   r  z@_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_texté  s   € Ø—}‘}×3Ñ3Ó5Ð5r…   c                ó6   — | j                   j                  «       S r9   r  rõ   s    r$   r  z<_get_stream_wrapper.<locals>.MessageStreamWrapper.until_doneì  s   € Ø—}‘}×/Ñ/Ó1Ð1r…   c                ó.   — | j                   j                  S r9   r  rõ   s    r$   r  zJ_get_stream_wrapper.<locals>.MessageStreamWrapper.current_message_snapshotï  r  r…   N)rà   r   r  r  )r  r   r  r   r!  r"  r#  r$  )r%  r&  r'  rá   r(  rô   rù   rç   r?  r>  rC  rE  r  ré   r  r  r  r)  s   €€r$   ÚMessageStreamWrapperr7  ³  s’   ø„ ð&à&ð&ð ó	&ð ò.ó ð.ð ò0ó ð0ð ó4ó ð4ó2ô3óó-ó&ó9ó6ó2ð ò>ó ñ>r…   rL  c                  ó&   •— e Zd Zd„ Zˆ ˆfd„Zd„ Zy)ú9_get_stream_wrapper.<locals>.MessagesStreamManagerWrapperc                ó   — || _         y r9   rï   r.  s     r$   rá   zB_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__init__ô  r/  r…   c                óˆ   •—  ‰di | j                   ¤Ž| _         ‰| j                  j                  «       fi | j                   ¤ŽS r1  )rÝ   r2  rC  )rß   rL  r3  s    €€r$   rC  zC_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__enter__÷  s7   ø€ Ù /Ñ ?°$·,±,Ñ ?�”Ù+¨D¯M©M×,CÑ,CÓ,EÑVÈÏÉÑVÐVr…   c                ó6   —  | j                   j                  |Ž  y r9   )r2  rE  r  s     r$   rE  zB_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__exit__û  rF  r…   N)r%  r&  r'  rá   rC  rE  )rL  r3  s   €€r$   ÚMessagesStreamManagerWrapperrN  ó  s   ø„ ò&õWó-r…   rR  rz   )
rc   Úlowerr   rÈ   r±   rN   rÉ   rÊ   ri   r¼   )r3  r'   rd   rÏ   rÔ   r5  rR  r*  rL  r  rñ   s   `      @@@@r$   Ú_get_stream_wrapperrT  B  sà   ü€ ð œ#˜oÓ.×4Ñ4Ó6Ð6€HÜ&×0Ñ0ð 	ØÜ%ØÜ'Ü'×/Ñ/ÜÐ<ó
ñ	ð ñ	Ðô !,× 5Ñ 5ð 	!ØØÜ'Ü0Ü'×/Ñ/ÜÐ<ó
ñ	!ð ñ	!Ðñ ÷A	>ô A	>÷F
	4ô 
	4ð 1Ð0÷>	>ô >	>÷@		-ô 		-ð ,Ð+r…   c                  ó,   — e Zd ZU ded<   ded<   ded<   y)r½   zOptional[Mapping[str, Any]]rê   zOptional[list[str]]ÚtagszOptional[ls_client.Client]r   N)r%  r&  r'  Ú__annotations__rz   r…   r$   r½   r½     s   … Ø)Ó)Ø
ÓØ&Ô&r…   F)ÚtotalÚChatAnthropic)rÏ   Ú	chat_nameÚcompletions_namec               óH  — |xs i }t        |j                  d«      xs i «      }|j                  di «      }|j                  «       D ��ci c]  \  }}|dk7  sŒ||“Œ }}}|r||d<   t	        | j
                  j                  |t        ||«      | j
                  _        t        | j
                  j                  |||«      | j
                  _	        t	        | j                  j                  |t        ||«      | j                  _        t        | d«      r€t        | j                  d«      rjt        | j                  j
                  d«      rJt	        | j                  j
                  j                  |t        ||«      | j                  j
                  _        t        | d«      r€t        | j                  d«      rjt        | j                  j
                  d«      rJt	        | j                  j
                  j                  |t        ||«      | j                  j
                  _        | S c c}}w )að  Patch the Anthropic client to make it traceable.

    Args:
        client: The client to patch.
        tracing_extra: Extra tracing information.
        chat_name: The run name for the messages endpoint.
        completions_name: The run name for the completions endpoint.

    Returns:
        The patched client.

    Example:
        ```python
        import anthropic
        from langsmith import wrappers

        client = wrappers.wrap_anthropic(anthropic.Anthropic())

        # Use Anthropic client same as you normally would:
        system = "You are a helpful assistant."
        messages = [
            {
                "role": "user",
                "content": "What physics breakthroughs do you predict will happen by 2300?",
            }
        ]
        completion = client.messages.create(
            model="claude-3-5-sonnet-latest",
            messages=messages,
            max_tokens=1000,
            system=system,
        )
        print(completion.content)

        # With raw response to access headers:
        raw_response = client.messages.with_raw_response.create(
            model="claude-3-5-sonnet-latest",
            messages=messages,
            max_tokens=1000,
            system=system,
        )
        print(raw_response.headers)  # Access HTTP headers
        message = raw_response.parse()  # Get parsed response

        # You can also use the streaming context manager:
        with client.messages.stream(
            model="claude-3-5-sonnet-latest",
            messages=messages,
            max_tokens=1000,
            system=system,
        ) as stream:
            for text in stream.text_stream:
                print(text, end="", flush=True)
            message = stream.get_final_message()
        ```
    rê   rb   ÚbetarA   rÐ   r¹   )rš   rG   rH   r/   rÕ   rA   rÐ   r±   rT  rS   Úcompletionsr·   r•   r]  r¹   )	r   rÏ   rZ  r[  rê   rd   rK   r<   Útracing_extra_rests	            r$   Úwrap_anthropicr`    sÛ  € ð~ "Ò' R€Mô �M×%Ñ% jÓ1Ò7°RÓ8€HØ%-§\¡\Ð2HÈ"Ó%MÐ"ð '×,Ñ,Ô.ô(Ù.‘��A°!°z³/ˆˆ1‰Ð.ð ñ (ñ Ø)1Ð˜:Ñ&ä)Ø�‰×ÑØÜØ&Øó€F‡O�OÔô 1Ø�‰×ÑØØ&Øó	€F‡O�OÔô !-Ø×Ñ×!Ñ!ØÜØ&Øó!€F×ÑÔô 	�˜ÔÜ�F—K‘K Ô,Ü�F—K‘K×(Ñ(¨(Ô3ä&2Ø�K‰K× Ñ ×'Ñ'ØÜØ*Øó'
ˆ�‰×ÑÔ#ô 	�˜ÔÜ�F—K‘K Ô,Ü�F—K‘K×(Ñ(¨'Ô2ä%1Ø�K‰K× Ñ ×&Ñ&ØÜØ*Øó&
ˆ�‰×ÑÔ"ð €Mùók(s   Á
HÁH)r  zOptional[tuple[type, ...]])r1   r   r  r   )rI   rš   r  rš   )rd   rš   re   rš   )r  zOptional[Callable])r}   rš   r  r   )rŸ   r   r  rš   )r­   r   r  rš   )r­   zlist[Completion]r  rš   )r    r   )rÎ   r	   r'   rc   rÃ   r	   rd   rš   rÏ   r½   r  r	   )
r3  r	   r'   rc   rd   rš   rÏ   r½   r  r	   )
r   r   rÏ   zOptional[TracingExtra]rZ  rc   r[  rc   r  r   )@Ú
__future__r   rÉ   Úloggingr–   Úcollections.abcr   r   r   Útypingr   r   r	   r
   r   r   Útyping_extensionsr   r   Ú	langsmithr   Ú	ls_clientr   Úlangsmith._internal._orjsonr   r�   Úlangsmith.anonymizerr   Úlangsmith.schemasr   r   ÚhttpxrW   r   r   Úanthropic.lib.streamingr   r   Úanthropic.typesr   r   r   r   Ú	getLoggerr%  rE   Ú	lru_cacher%   Ú	frozensetr*   rW  r6   rN   ri   rn   r„   r¦   r±   r·   r¼   rÕ   rT  r½   r`  rz   r…   r$   Ú<module>rq     s»  ðÞ "ã Û Û ß <Ñ <÷÷ ÷ .å )Ý !Ý 7Ý 3ß >áÛß3ßIßGÑGáˆC�u˜[Ð*:¸CÐ?Ñ@ÔA€Ø	ˆ×	Ñ	˜8Ó	$€ð ×Ñòó ðñ )2Ú1ó)Ð �~ó ó
ó0ó."ðJ ×Ñòó ðó#óL(óV-ó&ó #ð"*HØð*Hà
ð*Hð ð*Hð %)ð	*Hð
  ð*Hð ó*HðZ|,Øð|,à
ð|,ð %)ð|,ð  ð	|,ð
 ó|,ô~'�9 Eõ 'ð -1Ø$Ø'ñ{Øð{ð *ð{ð ð	{ð
 ð{ð ô{r…   