ó
    lQjq,  ã                  óš  • S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJrJrJrJrJr  SSKrSr\R&                  " SS	9rS
r " S S\SS9r " S S\SS9r " S S\SS9r " S S\5      r " S S\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r#      S-S  jr$S.S! jr% " S" S#5      r&g)/z1LangSmith profile configuration and auth helpers.é    )ÚannotationsN)ÚMapping)ÚPath)ÚAnyÚ
NamedTupleÚOptionalÚ	TypedDictÚcastzlangsmith-clié   )Úminutesé
   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg)ÚProfileOAuthé   ÚstrÚaccess_tokenÚrefresh_tokenÚ
expires_at© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/langsmith/_internal/_profiles.pyr   r      s   ‡ ØÓØÓØ†Or   r   F)Útotalc                  ó>   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   Srg	)
ÚProfileConfigé   r   Úapi_keyÚapi_urlÚworkspace_idr   Úoauthr   Nr   r   r   r   r!   r!      s   ‡ ØƒLØƒLØÓØÖr   r!   c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚProfileConfigFileé!   r   Úcurrent_profilezdict[str, ProfileConfig]Úprofilesr   Nr   r   r   r   r(   r(   !   s   ‡ ØÓØ&Ö&r   r(   c                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
ÚProfileStateé&   r   Úpathr(   Úconfigr   Úprofile_namer   Nr   r   r   r   r-   r-   &   s   ‡ Ø
ƒJØÓØÖr   r-   c                  óŒ   • \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S\S'   Sr
S\S	'   SrS
\S'   \SS j5       rSrg)ÚProfileClientConfigé,   NúOptional[str]r$   r#   r%   Úoauth_access_tokenÚoauth_refresh_tokenÚoauth_expires_atúOptional[ProfileState]Úprofile_statec                óR   • [        U R                  =(       d    U R                  5      $ ©N)Úboolr6   r7   ©Úselfs    r   Ú	has_oauthÚProfileClientConfig.has_oauth5   s   € ä�D×+Ñ+×G¨t×/GÑ/GÓHÐHr   r   ©Úreturnr=   )r   r   r   r   r$   r   r#   r%   r6   r7   r8   r:   Úpropertyr@   r   r   r   r   r3   r3   ,   s`   ‡ Ø!€Gˆ]Ó!Ø!€Gˆ]Ó!Ø"&€L�-Ó&Ø(,Ð˜Ó,Ø)-Ð˜Ó-Ø&*Ð�mÓ*Ø,0€MÐ)Ó0àóIó óIr   r3   c                ó„   • U (       d  g U R                  5       R                  S5      R                  S5      nU=(       d    S $ )NÚ"Ú')Ústrip)ÚvalueÚtrimmeds     r   Útrim_auth_valuerK   :   s3   € ÞØØ�k‰k‹m×!Ñ! #Ó&×,Ñ,¨SÓ1€GØ�?�dÐr   c                 ó¼   • [         R                  R                  S5      =n (       a  [        U 5      $  [        R                  " 5       S-  S-  $ ! [
         a     g f = f)NÚLANGSMITH_CONFIG_FILEz
.langsmithzconfig.json)ÚosÚenvironÚgetr   ÚhomeÚRuntimeError)Úconfig_files    r   Ú_profile_config_pathrT   A   sS   € Ü—j‘j—n‘nÐ%<Ó=Ð=€{Õ=Ü�KÓ Ð ðÜ�yŠy‹{˜\Ñ)¨MÑ9Ð9øÜó Ùðús   ³A Á
AÁAc                 ó”  • [        5       n U b  U R                  5       (       d  g  [        R                  " U R	                  SS95      n[        U[        5      (       d  g UR                  S5      n[        U[        5      (       d  g [        R                  R                  S5      nU(       d8  UR                  S5      n[        U[        5      (       a
  U(       a  UnOSU;   a  SnU(       a$  [        UR                  U5      [        5      (       d  g [        U [        [        U5      U5      $ ! [
        [        R                  4 a     g f = f)Núutf-8©Úencodingr+   ÚLANGSMITH_PROFILEr*   Údefault)rT   ÚexistsÚjsonÚloadsÚ	read_textÚOSErrorÚJSONDecodeErrorÚ
isinstanceÚdictrP   rN   rO   r   r-   r
   r(   )r/   Úrawr+   r1   r*   s        r   Ú_load_profile_staterd   J   s  € ÜÓ!€DØ�|˜4Ÿ;™;Ÿ=™=ØðÜ�jŠj˜Ÿ™°˜Ð9Ó:ˆô �cœ4× Ñ ØØ�w‰w�zÓ"€HÜ�h¤×%Ñ%ØÜ—:‘:—>‘>Ð"5Ó6€LÞØŸ'™'Ð"3Ó4ˆÜ�o¤s×+Ñ+¶Ø*‰LØ˜(Ó"Ø$ˆLÞœz¨(¯,©,°|Ó*DÄd×KÑKØÜ˜œdÔ#4°cÓ:¸LÓIÐIøô! ”T×)Ñ)Ð*ó Ùðús   ¥#D* Ä*EÅEc                óÌ   • U R                   R                  S5      =(       d    0 nUR                  U R                  5      n[        U[        5      (       d  g [        [        U5      $ )Nr+   )r0   rP   r1   ra   rb   r
   r!   )Ústater+   Úprofiles      r   Ú_profile_from_staterh   c   sL   € Ø�|‰|×Ñ 
Ó+×1¨r€HØ�l‰l˜5×-Ñ-Ó.€GÜ�gœt×$Ñ$ØÜ”˜wÓ'Ð'r   c                 óœ  • [        5       n U c
  [        5       $ [        U 5      nUc
  [        5       $ UR                  S5      =(       d    0 n[        UR                  S5      [	        UR                  S5      5      UR                  S5      [	        UR                  S5      5      [	        UR                  S5      5      UR                  S5      U S9$ )	Nr&   r$   r#   r%   r   r   r   )r$   r#   r%   r6   r7   r8   r:   )rd   r3   rh   rP   rK   )rf   rg   r&   s      r   Úload_profile_client_configrj   k   sª   € ÜÓ!€EØ�}Ü"Ó$Ð$Ü! %Ó(€GØ�Ü"Ó$Ð$Ø�K‰K˜Ó ×& B€EÜØ—‘˜IÓ&Ü §¡¨IÓ 6Ó7Ø—[‘[ Ó0Ü*¨5¯9©9°^Ó+DÓEÜ+¨E¯I©I°oÓ,FÓGØŸ™ <Ó0Øñð r   c                óº   • U R                  S5      (       a  U S S n U R                  S5      (       a  M  SnU R                  U5      (       a  U S [        U5      *  $ U $ )NÚ/éÿÿÿÿz/api/v1)ÚendswithÚlen)r$   Úsuffixs     r   Ú_normalize_profile_api_urlrq   ~   s_   € Ø
×
Ñ
˜3×
Ñ
Ø˜#˜2�,ˆð ×
Ñ
˜3×
Ó
à€FØ×Ñ˜×ÑØ�~œ#˜f›+˜Ð&Ð&Ø€Nr   c                óî   •  [         R                   R                  U R                  SS5      5      nUR                  c'  UR                  [         R
                  R                  S9nU$ ! [         a     g f = f)NÚZú+00:00)Útzinfo)ÚdatetimeÚfromisoformatÚreplaceÚ
ValueErrorru   ÚtimezoneÚutc)r   Úparseds     r   Ú_parse_profile_expires_atr}   ‡   sk   € ðÜ×"Ñ"×0Ñ0°×1CÑ1CÀCÈÓ1RÓSˆð ‡}�}ÑØ—‘¤x×'8Ñ'8×'<Ñ'<�Ð=ˆØ€Møô	 ó Ùðús   ‚/A' Á'
A4Á3A4c                ód  • U R                  S5      =(       d    0 nUR                  S5      (       d  gUR                  S5      (       d  gUR                  S5      nU(       d  g[        U5      nUc  gU[        R                  R                  [        R                  R
                  5      [        -   :*  $ )Nr&   r   Fr   Tr   )rP   r}   rv   Únowrz   r{   Ú_TOKEN_REFRESH_LEEWAY)rg   r&   r   r|   s       r   Úshould_refresh_profile_tokenr�   ‘   s�   € Ø�K‰K˜Ó ×& B€EØ�9‰9�_×%Ñ%ØØ�9‰9�^×$Ñ$ØØ—‘˜<Ó(€JÞØÜ& zÓ2€FØ�~Øà”(×#Ñ#×'Ñ'¬×(9Ñ(9×(=Ñ(=Ó>ÔAVÑVÑVðr   c                ó�  • [        U =(       d    S5      n [        R                  " U S3S[        US.SS0[        S9nUR                  S:  d  UR                  S	:¼  a  g  UR                  5       n[        U[        5      (       a  UR                  S
5      (       d  g U$ ! [        R
                   a     g f = f! [         a     g f = f)Nzhttps://api.smith.langchain.comz/oauth/tokenr   )Ú
grant_typeÚ	client_idr   zContent-Typez!application/x-www-form-urlencoded)ÚdataÚheadersÚtimeoutéÈ   i,  r   )rq   ÚrequestsÚpostÚ_OAUTH_CLIENT_IDÚ_TOKEN_REFRESH_TIMEOUTÚRequestExceptionÚstatus_coder\   ry   ra   rb   rP   )r$   r   Úrefresh_urlÚresponseÚtokens        r   Ú_refresh_profile_oauth_tokenr’   ¢   sÒ   € ô -Ø×4Ð4ó€KðÜ—=’=Øˆm˜<Ð(à-Ü-Ø!.ñð
 $Ð%HÐIÜ*ñ	
ˆð ×Ñ˜cÓ! X×%9Ñ%9¸SÓ%@ØðØ—‘“ˆô �eœT×"Ñ"¨%¯)©)°N×*CÑ*CØØ€Løô ×$Ñ$ó Ùðûô ó Ùðús#   –(B Á B8 ÂB5Â4B5Â8
CÃCc                ó2  • U R                  S0 5      nUR                  S5      n[        U[        5      (       a  U(       a  X2S'   UR                  S5      n[        U[        5      (       a  U(       a  XBS'   UR                  S5      n[        U[        [
        45      (       aw  US:”  ap  [        R                  R                  [        R                  R                  5      [        R                  " US9-   nUR                  5       R                  SS5      US	'   g g g )
Nr&   r   r   Ú
expires_inr   )Úsecondsrt   rs   r   )Ú
setdefaultrP   ra   r   ÚintÚfloatrv   r   rz   r{   Ú	timedeltaÚ	isoformatrx   )rg   r‘   r&   r   r   r”   r   s          r   Ú_apply_profile_token_responser›   À   sç   € ð ×Ñ˜w¨Ó+€EØ—9‘9˜^Ó,€LÜ�,¤×$Ñ$®Ø ,ˆnÑØ—I‘I˜oÓ.€MÜ�-¤×%Ñ%®-Ø!.ˆoÑØ—‘˜<Ó(€JÜ�*œs¤E˜l×+Ñ+°
¸Q³Ü×&Ñ&×*Ñ*¬8×+<Ñ+<×+@Ñ+@ÓAÄH×DVÒDVØñE
ñ 
ˆ
ð )×2Ñ2Ó4×<Ñ<¸XÀsÓKˆˆlÒð	 1?Ð+r   c                ól  •  U R                   R                  SSSS9  U R                  U R                   S35      nUR	                  [
        R                  " USS9S-   SS	9  [        R                  " US
5        [        R                  " X 5        [        R                  " U S
5        g ! [         a     g f = f)NiÀ  T)ÚmodeÚparentsÚexist_okz.tmpé   )ÚindentÚ
rV   rW   i€  )ÚparentÚmkdirÚ	with_nameÚnameÚ
write_textr\   ÚdumpsrN   Úchmodrx   r_   )r/   r0   Ú	temp_paths      r   Ú_save_profile_configr«   Ò   s–   € ðØ�‰×Ñ˜u¨d¸TÐÑBØ—N‘N d§i¡i [°Ð#5Ó6ˆ	Ø×ÑœTŸZšZ¨°qÑ9¸DÑ@È7ÐÑSÜ
�Š�˜EÔ"Ü
�
Š
�9Ô#Ü
�Š��uÕøÜó Ùðús   ‚B#B& Â&
B3Â2B3c                  óÊ   • \ rS rSr      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rSS jrSS jrSS jrSrg) ÚProfileAuthéÞ   c               óÀ   • UR                   U l        X l        [        R                  " 5       U l        [        5       U l        U R                  U R                  SS95        g ©NF©Úrefresh)
r:   Ú_stateÚ_api_key_headerÚ	threadingÚLockÚ_lockÚsetÚ_managed_auth_headersÚ_remember_auth_headersÚ_auth_headers)r?   r0   Úapi_key_headers      r   Ú__init__ÚProfileAuth.__init__ß   sK   € ð ×*Ñ*ˆŒØ-ÔÜ—^’^Ó%ˆŒ
Ü;>»5ˆÔ"Ø×#Ñ# D×$6Ñ$6¸uÐ$6Ð$EÕFr   c                ó(  • U R                  5       nUc  gUR                  S5      =(       d    0 n[        [        UR                  S5      5      =(       d;    [        UR                  S5      5      =(       d    [        UR                  S5      5      5      $ )NFr&   r   r   r#   )Ú_profilerP   r=   rK   )r?   rg   r&   s      r   Úhas_authÚProfileAuth.has_authë   sr   € à—-‘-“/ˆØ‰?ØØ—‘˜GÓ$×*¨ˆÜÜ˜EŸI™I nÓ5Ó6÷ 7Ü˜uŸy™y¨Ó9Ó:÷7ä˜wŸ{™{¨9Ó5Ó6ó
ð 	
r   c                óŽ   • U R                  5       nUc  g [        UR                  S5      =(       d    0 R                  S5      5      $ )Nr&   r   )rÀ   rK   rP   ©r?   rg   s     r   r6   ÚProfileAuth.oauth_access_token÷   s9   € à—-‘-“/ˆØ‰?ØÜ §¡¨GÓ 4× :¸×?Ñ?ÀÓOÓPÐPr   c                óN   • U R                  5       nUS L=(       a    [        U5      $ r<   )rÀ   r�   rÄ   s     r   Úneeds_refreshÚProfileAuth.needs_refreshþ   s#   € Ø—-‘-“/ˆØ˜dÐ"×LÔ'CÀGÓ'LÐLr   c                óF   • U R                  SS9nU R                  U5        U$ r°   ©r»   rº   ©r?   r†   s     r   Úcurrent_auth_headersÚ ProfileAuth.current_auth_headers  s(   € Ø×$Ñ$¨UÐ$Ð3ˆØ×#Ñ# GÔ,Øˆr   c                óF   • U R                  SS9nU R                  U5        U$ )NTr±   rÊ   rË   s     r   Úget_auth_headersÚProfileAuth.get_auth_headers  s(   € Ø×$Ñ$¨TÐ$Ð2ˆØ×#Ñ# GÔ,Øˆr   c                óþ   • [        U5      n[        UR                  5       5       H  u  p4U R                  X45      (       d  M  X#	 M!     U R	                  U5      (       d  UR                  U R                  5       5        U$ )zBReplace stale profile-managed auth while preserving explicit auth.)rb   ÚlistÚitemsÚ_is_profile_auth_headerÚ_has_auth_headerÚupdaterÌ   )r?   r†   Úrequest_headersÚkeyrI   s        r   Úprepare_request_headersÚ#ProfileAuth.prepare_request_headers  sl   € ä˜w›-ˆÜ˜×4Ñ4Ó6Ö7‰JˆCØ×+Ñ+¨C×7Ó7Ø#Ò(ñ 8ð ×$Ñ$ _×5Ñ5Ø×"Ñ" 4×#<Ñ#<Ó#>Ô?ØÐr   c                óH   • U R                   c  g [        U R                   5      $ r<   )r³   rh   r>   s    r   rÀ   ÚProfileAuth._profile  s   € Ø�;‰;ÑØÜ" 4§;¡;Ó/Ð/r   c               ó0  • U R                  5       nUc  0 $ U(       aY  [        U5      (       aI  U R                     U R                  5       nUb!  [        U5      (       a  U R                  U5        S S S 5        U R	                  U5      $ ! , (       d  f       N= fr<   )rÀ   r�   r·   Ú_refreshÚ_headers_from_profile)r?   r²   rg   s      r   r»   ÚProfileAuth._auth_headers  st   € Ø—-‘-“/ˆØ‰?ØˆIÞÔ3°G×<Ñ<Ø—“ØŸ-™-›/�ØÑ&Ô+GÈ×+PÑ+PØ—M‘M 'Ô*÷ ð ×)Ñ)¨'Ó2Ð2÷	 •ús   ¹5BÂ
Bc                ó  • [        UR                  S5      =(       d    0 R                  S5      5      nUb  U R                  c  g UR                  S5      n[        X25      nUc  g [	        X5        U R                  R
                  R                  S5      =(       d    0 nXU R                  R                  '   XPR                  R
                  S'   [        U R                  R                  U R                  R
                  5        g )Nr&   r   r$   r+   )	rK   rP   r³   r’   r›   r0   r1   r«   r/   )r?   rg   r   r$   r‘   r+   s         r   rÞ   ÚProfileAuth._refresh&  sÅ   € Ü'Ø�[‰[˜Ó!×' R×,Ñ,¨_Ó=ó
ˆð Ñ  D§K¡KÑ$7ØØ—+‘+˜iÓ(ˆÜ,¨WÓDˆØ‰=ØÜ% gÔ5Ø—;‘;×%Ñ%×)Ñ)¨*Ó5×;¸ˆØ-4�—‘×)Ñ)Ñ*Ø)1�‰×Ñ˜:Ñ&Ü˜TŸ[™[×-Ñ-¨t¯{©{×/AÑ/AÕBr   c                óî   • Uc  0 $ [        UR                  S5      =(       d    0 R                  S5      5      nU(       a  SSU 30$ [        UR                  S5      5      nU(       a  U R                  U0$ 0 $ )Nr&   r   ÚAuthorizationzBearer r#   )rK   rP   r´   )r?   rg   r6   r#   s       r   rß   Ú!ProfileAuth._headers_from_profile6  sx   € Ø‰?ØˆIÜ,Ø�[‰[˜Ó!×' R×,Ñ,¨^Ó<ó
Ðö Ø# wÐ/AÐ.BÐ%CÐDÐDÜ! '§+¡+¨iÓ"8Ó9ˆÞØ×(Ñ(¨'Ð2Ð2Øˆ	r   c                óÎ   • UR                  5        HQ  u  p#U R                  U5      (       d  M  U(       d  M&  U R                  R                  UR	                  5       U45        MS     g r<   )rÓ   Ú_is_auth_header_namer¹   ÚaddÚlower)r?   r†   r¦   rI   s       r   rº   Ú"ProfileAuth._remember_auth_headersC  sH   € Ø"Ÿ=™=ž?‰KˆDØ×(Ñ(¨×.Ó.·5°5Ø×*Ñ*×.Ñ.°·
±
³¸eÐ/DÖEò +r   c                ó@   • UR                  5       U4U R                  ;   $ r<   )ré   r¹   )r?   r¦   rI   s      r   rÔ   Ú#ProfileAuth._is_profile_auth_headerH  s   € Ø—
‘
“˜eÐ$¨×(BÑ(BÑBÐBr   c                óJ   ^ • [        U 4S jUR                  5        5       5      $ )Nc              3  ón   >#   • U  H*  u  pTR                  U5      =(       a    [        U5      v •  M,     g 7fr<   )rç   r=   )Ú.0r¦   rI   r?   s      €r   Ú	<genexpr>Ú/ProfileAuth._has_auth_header.<locals>.<genexpr>L  s1   øé € ð 
â.‘�ð ×%Ñ% dÓ+×;´°U³Ô;Ú.ùs   ƒ25)ÚanyrÓ   rË   s   ` r   rÕ   ÚProfileAuth._has_auth_headerK  s#   ø€ Üô 
à&Ÿ}™}œó
ó 
ð 	
r   c                ó\   • UR                  5       SU R                  R                  5       1;   $ )NÚauthorization)ré   r´   )r?   r¦   s     r   rç   Ú ProfileAuth._is_auth_header_nameQ  s'   € Ø�z‰z‹| °×1EÑ1E×1KÑ1KÓ1MÐNÑNÐNr   )r´   r·   r¹   r³   N)r0   r3   r¼   r   rC   ÚNonerB   )rC   r5   )rC   údict[str, str])r†   úMapping[str, str]rC   rø   )rC   úOptional[ProfileConfig])r²   r=   rC   rø   )rg   r!   rC   r÷   )rg   rú   rC   rø   )r†   rù   rC   r÷   )r¦   r   rI   r   rC   r=   )r†   rù   rC   r=   )r¦   r   rC   r=   )r   r   r   r   r½   rD   rÁ   r6   rÇ   rÌ   rÏ   rÙ   rÀ   r»   rÞ   rß   rº   rÔ   rÕ   rç   r   r   r   r   r­   r­   Þ   s’   † ð
Gà#ð
Gð ð	
Gð
 
ô
Gð ó	
ó ð	
ð óQó ðQôMôô
ô
ô0ô
	3ôCô ôFô
Cô
÷Or   r­   )rI   r5   rC   r5   )rC   zOptional[Path])rC   r9   )rf   r-   rC   rú   )rC   r3   )r$   r   rC   r   )r   r   rC   zOptional[datetime.datetime])rg   r!   rC   r=   )r$   r5   r   r   rC   zOptional[dict[str, Any]])rg   r!   r‘   zMapping[str, Any]rC   r÷   )r/   r   r0   r(   rC   r÷   )'Ú__doc__Ú
__future__r   rv   r\   rN   rµ   Úcollections.abcr   Úpathlibr   Útypingr   r   r   r	   r
   r‰   r‹   r™   r€   rŒ   r   r!   r(   r-   r3   rK   rT   rd   rh   rj   rq   r}   r�   r’   r›   r«   r­   r   r   r   Ú<module>r      s  ðÙ 7å "ã Û Û 	Û Ý #Ý ß =Õ =ã à"Ð Ø ×*Ò*°1Ñ5Ð ØÐ ô�9 Eò ô�I Uò ô'˜	¨ò 'ô
�:ô ôI˜*ô IôôôJô2(ôô&ôôð"ØðØ+.ðàôð<LØðLØ#4ðLà	ôLô$	÷tOò tOr   