
    =KiG                       S SK Jr  S SKrS SKrS SKJrJrJr  S SK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  S SKJr  S S	KJrJr  \	(       a  S SK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S\
4   S9r&\RN                  " \(5      r)\RT                  S"S j5       r+S#S jr,S$S jr-      S%S jr.S&S jr/S'S jr0S(S jr1S)S jr2            S*S jr3          S+S jr4 " S S\SS9r5SSSS .         S,S! jjr6g)-    )annotationsN)AsyncIteratorMappingSequence)TYPE_CHECKINGAnyCallableOptionalTypeVarUnion)TypeAdapter)Self	TypedDict)client)run_helpers)InputTokenDetailsUsageMetadata)	AnthropicAsyncAnthropic)AsyncMessageStreamMessageStream)
CompletionMessageMessageStreamEventCr   r   )boundc                 :     SSK Jn Jn  X4$ ! [         a     g f = f)Nr   NotGivenOmit)anthropic._typesr   r    ImportErrorr   s     _/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langsmith/wrappers/_anthropic.py_get_not_givenr$       s%    3 s   
 
c                  ^  [        5       =n(       aC  U R                  5        VV^s0 s H%  u  nm[        U4S jU 5       5      (       a  M"  UT_M'     n nnSU ;   a0  SU S   S./U R                  S/ 5      -   U S'   U R                  S5        U R                  5        VVs0 s H  u  p#Uc  M
  X#_M     snn$ s  snnf ! [         a"  n[        R                  SU 35         S nANS nAff = fs  snnf )Nc              3  <   >#    U  H  n[        TU5      v   M     g 7fN)
isinstance).0tvs     r#   	<genexpr>#_strip_not_given.<locals>.<genexpr>0   s     ?Y:a++Ys   zError stripping NotGiven: system)rolecontentmessages)r$   itemsany	Exceptionloggererrorgetpop)d	not_givenkr+   es      ` r#   _strip_not_givenr=   *   s    7&((9( GGI%DAq?Y?? 1%   1}"*q{CDquuH
 
* 	
hWWY8YTQ!DADY88
  71!5667 9s:   %B= !B7B7B=  	C,-C,7B= =
C)C$$C)c                ^   [        U5      nUR                  S5      nU(       a  [        U[        5      (       a  U/n1 SknUR	                  5        VVs0 s H  u  pVXT;   d  M  XV_M     nnnSSUR                  SS 5      UR                  SS 5      UR                  SS 5      U0 U EUES.$ s  snnf )	Nstop>   top_ktop_pstreamthinkingmcp_servers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)r=   r7   r(   strr2   )prepopulated_invocation_paramskwargsstrippedr?   allowed_invocation_keysr;   r+   invocation_paramss           r#   _infer_ls_paramsrX   =   s    'H<<D
4%%v "))Q-I)  
 #!gt4",,}d;!lD9!
,!
!
 	s   B)"B)c                f    SSK Jn  Uc5  U R
                  S:X  a  U R                  $ [        SU R
                   S35      eU R
                  S:X  aQ  [        U5      nUR                  U R                  R                  5       5      nUR                  R                  U5        U$ U R
                  S:X  an  UR                  U R                     nUR
                  S	:X  aC  U R                  R
                  S
:X  a)  U=R                   U R                  R                   -  sl        U$ U R
                  S:X  a[  U R                  R"                  Ul        U R                  R$                  Ul        U R&                  R(                  UR&                  l        U$ ! [         a    [        R	                  S5        Us $ f = f)Nr   )ContentBlockzError importing ContentBlockmessage_startzUnexpected event order, got z before "message_start"content_block_startcontent_block_deltatext
text_deltamessage_delta)anthropic.typesrZ   r"   r5   debugtypemessageRuntimeErrorr   validate_pythoncontent_block
model_dumpr0   appendindexdeltar^   stop_reasonstop_sequenceusageoutput_tokens)eventcurrent_snapshotrZ   adaptercontent_block_instancer0   s         r#   _accumulate_eventrt   b   sz    0
 ::(== *5::,6MN
 	
 zz***<8!(!8!8**,"
 	  ''"	
  
,	,"**5;;7<<6!ekk&6&6,&FLLEKK,,,L  
	&',{{'>'>$).)B)B&/4{{/H/H,=   34 s   F !F0/F0c                ,   S nU  H  n [        X!S9nM     Uc  SU 0$ UR	                  5       n[        UR                  S0 5      5      US'   UR                  SS 5        SU0$ ! [         a(  n[        R                  SU 35        SU 0s S nAs  $ S nAff = f)N)rp   rq   z/Error accumulating event in Anthropic Wrapper: outputrn   usage_metadatarc   rd   )rt   re   r5   rb   rh   _create_usage_metadatar8   )
all_chunksfull_messagechunkr<   r9   s        r#   _reduce_chat_chunksr|      s    L	*,5XL  *%%!A0w1CDAEE&$q>  	*LLJ1#NOj))	*s   	A!!
B+BBBc                F   U R                  S5      =(       d    SnU R                  S5      =(       d    SnX-   nSU R                  SS5      U R                  SS5      -   0n[        UUU[        S0 UR                  5        VVs0 s H  u  pVUc  M
  XV_M     snnD6S9$ s  snnf )	Ninput_tokensr   ro   
cache_readcache_creation_input_tokenscache_read_input_tokens)r~   ro   total_tokensinput_token_details )r7   r   r   r2   )anthropic_token_usager~   ro   r   r   r;   r+   s          r#   rx   rx      s    (,,^<AL)--o>C!M/L+//0MqQ

#
#$=q
AB! !#!- 
 3 9 9 ;M ;qtqt ;M
	 
 Ns   	BBc                    / nU  H%  nUR                   nUc  M  UR                  U5        M'     SR                  U5      nU (       a  U S   R                  5       nSU0/US'   U$ SSU0/0nU$ )N r^   choices)
completionri   joinrh   )ry   all_contentr{   r0   r9   s        r#   _reduce_completionsr      s    K""w'  ggk"GrN%%')*) H &'*+,H    c                    [        U S5      (       a+  [        U R                  5      (       a   U R                  5       n U R	                  5       nUR                  SS 5      nU(       a  [        U5      OS US'   UR                  SS 5        SU0$ ! [         a     N[f = f! [         a&  n[        R                  SU 35        SU 0s S nA$ S nAff = f)Nparsern   rw   rc   rd   z"Error processing chat completion: rv   )
hasattrcallabler   r4   rh   r8   rx   BaseExceptionr5   rb   )outputsrdictr   r<   s       r#   _process_chat_completionr      s    #
 7G$$'--)@)@!--/ ""$ %		'4 8 % ##89 	
 			&$5!!    #9!=>'""#s@   +B B AB 
BB BB 
C'CCCTracingExtrac                   ^ ^^^^ [         R                  " T 5      UU UUU4S j5       n[         R                  " T 5      UU UUU4S j5       n[        R                  " T 5      (       a  U$ U$ )Nc                    > UR                  S5      n[        R                  " STSU(       a  TOS [        [        [
        R                  " [        T5      S.T	D6nU" T5      " U 0 UD6nU$ NrB   llm)namerun_type	reduce_fnprocess_inputsprocess_outputs_invocation_params_fnr   r7   r   	traceabler=   r   	functoolspartialrX   
argsrT   rB   	decoratorresultr   original_createrS   r   tracing_extras
        r#   create_get_wrapper.<locals>.create   sr    H%)) 

#)it+4"+"3"3 "@#

 

	 ?+T<V<r   c                    >#    UR                  S5      n[        R                  " STSU(       a  TOS [        [        [
        R                  " [        T5      S.T	D6nU" T5      " U 0 UD6I S h  vN nU$  N7fr   r   r   s
        r#   acreate_get_wrapper.<locals>.acreate   s~     H%)) 

#)it+4"+"3"3 "@#

 

	 !14B6BB Cs   A*A6-A4.A6)r   wrapsr   is_async)r   r   r   rS   r   r   r   s   `````  r#   _get_wrapperr      sd     ___%  &" ___%  &  "**?;;7GGr   c                  ^ ^^^	^
 S[        T 5      R                  5       ;   n[        R                  " SU[        S[
        [        R                  " [        U5      S.UD6m	[        R                  " SUS[
        [        [        R                  " [        U5      S.UD6m
U(       a   " U	U
4S jS5      m " UU 4S jS5      nU$  " U	U
4S	 jS
5      m " UU 4S jS5      nU$ )z;Create a wrapper for Anthropic's streaming context manager.asyncr   )r   r   r   r   r   )r   r   r   r   r   c                     > \ rS rSr    SS jr\U4S j5       r\SS j5       r\SS j5       rSS jr	SU 4S j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rg)6_get_stream_wrapper.<locals>.AsyncMessageStreamWrapperi   c                    Xl         X l        g r'   _wrapped_kwargsselfwrappedrT   s      r#   __init__?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__init__!      
 !(%r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc                   >#    TR                   R                    S h  vN nU7v   M   N
 [        R                  " 5       nTR                   R	                  5       I S h  vN  n[        U5      Ul        g 7fr'   r   text_streamr   get_current_run_treeget_final_messager   r   )_r{   run_treefinal_messager   s       r#   _text_streamX_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream.<locals>._text_stream+  sZ     '+}}'@'@ $e#$'@*??AH*.--*I*I*K$K$KM'?'NH$s+   A6,*,A6,3A6A" A6r   r   r   r   configured_traceable_texts   ` r#   r   B_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.text_stream)  s+    *O +O $3dll33r   c                .    U R                   R                  $ r'   r   responser   s    r#   r   ?_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.response5      }}---r   c                .    U R                   R                  $ r'   r   
request_idr   s    r#   r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.request_id9      }}///r   c                ^   #    U R                  5       nUR                  5       I S h  vN $  N7fr'   )	__aiter__	__anext__)r   aiters     r#   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__anext__=  s$     ("__....s   $-+-c               p   >^ #    TU 4S j5       nU" S0 T R                   D6  S h  vN nU7v   M   N
 g 7f)Nc                 8   > TR                   R                  5       $ r'   )r   r   r   r   s    r#   traced_iterU_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__.<locals>.traced_iterB  s    ==2244r   r   r   )r   r   r{   configured_traceables   `  r#   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aiter__A  s=     %5 &5 $/#>#>  %K #>s   6424646c                V   #    U R                   R                  5       I S h  vN   U $  N7fr'   )r   
__aenter__r   s    r#   r   A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aenter__I  s%     mm..000 1s   )')c                R   #    U R                   R                  " U6 I S h  vN   g  N7fr'   )r   	__aexit__r   excs     r#   r   @_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.__aexit__M       mm--s333   '%'c                T   #    U R                   R                  5       I S h  vN   g  N7fr'   r   closer   s    r#   r   <_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.closeP  s     mm))+++   (&(c                R   #    U R                   R                  5       I S h  vN $  N7fr'   r   r   r   s    r#   r   H_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_messageS  s     !]]<<>>>>   '%'c                R   #    U R                   R                  5       I S h  vN $  N7fr'   r   get_final_textr   s    r#   r   E_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.get_final_textV  s     !]]99;;;;r   c                T   #    U R                   R                  5       I S h  vN   g  N7fr'   r   
until_doner   s    r#   r  A_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.until_doneY  s     mm..000r   c                .    U R                   R                  $ r'   r   current_message_snapshotr   s    r#   r  O_get_stream_wrapper.<locals>.AsyncMessageStreamWrapper.current_message_snapshot\      }}===r   r   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	  rR   )__name__
__module____qualname____firstlineno__r   propertyr   r   r   r   r   r   r   r   r   r   r  r  __static_attributes__r   r   s   r#   AsyncMessageStreamWrapperr      s    &+& 	& 	4 	4 . . 0 0/ 4,?<1 > >r   r  c                  0   > \ rS rSrS rU U4S jrS rSrg)>_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapperi`  c                    Xl         g r'   r   r   rT   s     r#   r   G_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__init__a      %r   c                   >#    T" S0 U R                   D6U l        U R                  R                  5       I S h  vN nT" U40 U R                   D6$  N7fNr   )r   _managerr   )r   rB   r  original_streams     r#   r   I_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aenter__d  sG      / ?$,, ?#}}77990H4<<HH :s   5AAAc                R   #    U R                   R                  " U6 I S h  vN   g  N7fr'   )r!  r   r   s     r#   r   H_get_stream_wrapper.<locals>.AsyncMessagesStreamManagerWrapper.__aexit__i  r   r   r   r!  N)r  r  r  r  r   r   r   r  )r  r"  s   r#   !AsyncMessagesStreamManagerWrapperr  `  s    &I
4r   r'  c                     > \ rS rSr    SS jr\SS j5       r\SS j5       r\U4S j5       rSS jr	U 4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rg)1_get_stream_wrapper.<locals>.MessageStreamWrapperio  c                    Xl         X l        g r'   r   r   s      r#   r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.__init__p  r   r   c                .    U R                   R                  $ r'   r   r   s    r#   r   :_get_stream_wrapper.<locals>.MessageStreamWrapper.responsex  r   r   c                .    U R                   R                  $ r'   r   r   s    r#   r   <_get_stream_wrapper.<locals>.MessageStreamWrapper.request_id|  r   r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc               ;     >#    TR                   R                   S h  vN   [        R                  " 5       nTR                   R	                  5       n[        U5      Ul        g  ND7fr'   r   )r   r   r   r   s      r#   r   S_get_stream_wrapper.<locals>.MessageStreamWrapper.text_stream.<locals>._text_stream  sK     #}}8888*??AH$(MM$C$C$EM'?'NH$ 9s   A$A"AA$r   r   r   s   ` r#   r   =_get_stream_wrapper.<locals>.MessageStreamWrapper.text_stream  s+    *O +O $3dll33r   c                >    U R                  5       R                  5       $ r'   )__iter____next__r   s    r#   r6  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__next__  s    }}//11r   c                @   >^  TU 4S j5       nU" S0 T R                   D6$ )Nc                 8   > TR                   R                  5       $ r'   )r   r5  r   s    r#   r   O_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__.<locals>.traced_iter  s    ==1133r   r   r   )r   r   r   s   ` r#   r5  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__iter__  s)    %4 &4 #2T\\22r   c                :    U R                   R                  5         U $ r'   )r   	__enter__r   s    r#   r=  ;_get_stream_wrapper.<locals>.MessageStreamWrapper.__enter__  s    '')r   c                6    U R                   R                  " U6   g r'   )r   __exit__r   s     r#   r@  :_get_stream_wrapper.<locals>.MessageStreamWrapper.__exit__      &&,r   c                8    U R                   R                  5         g r'   r   r   s    r#   r   7_get_stream_wrapper.<locals>.MessageStreamWrapper.close  s    ##%r   c                6    U R                   R                  5       $ r'   r   r   s    r#   r   C_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_message  s    }}6688r   c                6    U R                   R                  5       $ r'   r   r   s    r#   r   @_get_stream_wrapper.<locals>.MessageStreamWrapper.get_final_text  s    }}3355r   c                6    U R                   R                  5       $ r'   r   r   s    r#   r  <_get_stream_wrapper.<locals>.MessageStreamWrapper.until_done  s    }}//11r   c                .    U R                   R                  $ r'   r  r   s    r#   r  J_get_stream_wrapper.<locals>.MessageStreamWrapper.current_message_snapshot  r  r   r  N)r   r   r	  r
  )r	  r   r  r  r  r  r  r  )r  r  r  r  r   r  r   r   r   r6  r5  r=  r@  r   r   r   r  r  r  r  s   r#   MessageStreamWrapperr)  o  s    &&& 	& . . 0 0 4 423-&962 > >r   rM  c                  0   > \ rS rSrS rU U4S jrS rSrg)9_get_stream_wrapper.<locals>.MessagesStreamManagerWrapperi  c                    Xl         g r'   r   r  s     r#   r   B_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__init__  r  r   c                   > T" S0 U R                   D6U l        T" U R                  R                  5       40 U R                   D6$ r   )r   r!  r=  )r   rM  r"  s    r#   r=  C_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__enter__  s7     / ?$,, ?+DMM,C,C,EVVVr   c                6    U R                   R                  " U6   g r'   )r!  r@  r   s     r#   r@  B_get_stream_wrapper.<locals>.MessagesStreamManagerWrapper.__exit__  rB  r   r&  N)r  r  r  r  r   r=  r@  r  )rM  r"  s   r#   MessagesStreamManagerWrapperrO    s    &W-r   rV  r   )
rR   lowerr   r   r|   r=   r   r   rX   r   )r"  r   rS   r   r   r'  rV  r  rM  r   r   s   `      @@@@r#   _get_stream_wrapperrX    s     #o.4466H&00 	%''//<
	 	 !, 5 5 	!'0'//<
	! 	! >	> >	>@
	4 
	4 10;	> ;	>z		- 		- ,+r   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg	)
r   i  zOptional[Mapping[str, Any]]metadatazOptional[list[str]]tagszOptional[ls_client.Client]r   r   N)r  r  r  r  __annotations__r  r   r   r#   r   r     s    ))
&&r   F)totalChatAnthropic)r   	chat_namecompletions_namec               p   U=(       d    0 n[        UR                  S5      =(       d    0 5      nUR                  S0 5      nUR                  5        VVs0 s H  u  pgUS:w  d  M  Xg_M     nnnU(       a  XHS'   [	        U R
                  R                  U[        UU5      U R
                  l        [        U R
                  R                  UUU5      U R
                  l	        [	        U R                  R                  U[        UU5      U R                  l        [        U S5      (       a  [        U R                  S5      (       ao  [        U R                  R
                  S5      (       aJ  [	        U R                  R
                  R                  U[        UU5      U R                  R
                  l        U $ s  snnf )a0  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()
    ```
rZ  rQ   betar1   r   )dictr7   r8   r2   r   r1   r   r|   rX  rB   completionsr   r   rb  )	r   r   r_  r`  rZ  rS   r;   r+   tracing_extra_rests	            r#   wrap_anthropicrf    s{   ~ "'RM M%%j17R8H%-\\2H"%M" ',,.(.!z/.  ( )1:&)&FOO 1&	FOO !-!!&!F 	FKK,,FKK(((33&2KK  ''*'
# MQ(s   F2$F2)r	  zOptional[tuple[type, ...]])r9   rc  r	  rc  )rS   rc  rT   rc  )rp   r   rq   Message | Noner	  rg  )ry   r   r	  rc  )r   rc  r	  r   )ry   zlist[Completion]r	  rc  )r   r   )r   r	   r   rR   r   r	   rS   rc  r   r   r	  r	   )
r"  r	   r   rR   rS   rc  r   r   r	  r	   )
r   r   r   zOptional[TracingExtra]r_  rR   r`  rR   r	  r   )7
__future__r   r   loggingcollections.abcr   r   r   typingr   r   r	   r
   r   r   pydanticr   typing_extensionsr   r   	langsmithr   	ls_clientr   langsmith.schemasr   r   httpxrF   r   r   anthropic.lib.streamingr   r   ra   r   r   r   r   	getLoggerr  r5   	lru_cacher$   r=   rX   rt   r|   rx   r   r   r   rX  r   rf  r   r   r#   <module>ru     s   "   < <  ! - ) ! >3IGGCu[*:C?@A			8	$  9&"J# #4B##L $ #4*H*H
*H *H %)	*H
  *H *HZv,v,
v, %)v,  	v,
 v,r'9E ' -1$'nn *n 	n
 n nr   