
    6|h                     J   d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZ 	 ddlZda ej$                  e      Zdefd	Zdeee
eef   f   fd
Z ej4                  d      defd       Z ej4                  d      de	e   fd       Z ej4                  d      de	e   fd       Z ej4                  d      de	e   fd       Z ej4                  d      de	e   fd       Z ej4                  d      de	ee      fd       Z  ej4                  d      defd       Z!defdZ" ej4                  d      defd       Z# ej4                  d      de	e   fd       Z$ ej4                  d      deeef   fd       Z%y# e$ r daY kw xY w)zEnvironment information.    N)DictListOptionalUnion)get_docker_compose_command)exec_gitTFreturnc                  .    i t               t               S )z/Get the runtime information as well as metrics.)get_runtime_environmentget_system_metrics     Y/var/www/html/test/engine/venv/lib/python3.12/site-packages/langsmith/env/_runtime_env.pyget_runtime_and_metricsr      s    @%'@+=+?@@r   c                     t         si S 	 t        j                  t        j                               } i }| j                         5  | j                         }t        | j                               |d<   dt        |j                        i|d<   | j                         }| j                         }|j                  |j                  dt        |j                        t        |j                        d| j!                         d|d<   ddd       |S # 1 sw Y   |S xY w# t"        $ r$}d	a t$        j'                  d
|       i cY d}~S d}~ww xY w)z&Get CPU and other performance metrics.thread_countrssmem)sysuser)	voluntaryinvoluntary)timectx_switchespercentcpuNFz Failed to get system metrics: %s)_PSUTIL_AVAILABLEpsutilProcessosgetpidoneshotmemory_infofloatnum_threadsr   num_ctx_switches	cpu_timessystemr   r   r   cpu_percent	Exceptionloggerdebug)processmetricsmem_infor   r'   es         r   r   r      s-    	..-13__ 	**,H&+G,?,?,A&BGN#uX\\*GEN #335L))+I %++%NN
 "'|'='=!>#()A)A#B! #..0
GEN	& '	&   "7;	s<   9D B>D	D DD D 	E!E :E E   )maxsizec            
          ddl m}  t               }d| dt        j                         dt        j                         t        j
                         t               t               d	|S )&Get information about the environment.r   )__version__zlangsmith-py	langsmithpython)	sdksdk_versionlibraryplatformruntimepy_implementationruntime_versionlangchain_versionlangchain_core_version)r6   r5   get_release_shasr;   python_implementationpython_versionget_langchain_environmentget_langchain_core_version)r5   shass     r   r   r   A   s_     &D"%%'%;;=#22468"<">  r   c                  2    	 dd l } | j                  S #  Y y xY wNr   )	langchainr5   )rI   s    r   rD   rD   V   s     $$$s    c                  B    	 dd l } | j                  S # t        $ r Y y w xY wrH   )langchain_corer5   ImportError)rK   s    r   rE   rE   `   s(    ))) s    	c                      dd l } 	  | j                  ddg      j                  d      j                         }|S # t        $ r d}Y |S  Y y xY w)Nr   docker	--versionutf-8unknown
subprocesscheck_outputdecodestripFileNotFoundError)rS   docker_versions     r   get_docker_versionrY   j   sa    #J##X{$;<CCGLRRT 	 	  #" s   19 A
A
c                      	 t        j                  ddg      j                  d      j                         } | S # t        $ r d} Y | S  Y y xY w)Nzdocker-composerO   rP   rQ   rR   )docker_compose_versions    r   get_docker_compose_versionr\   y   sZ    	##%5{$CDVG_UW 	 "!	  +!* "!s   48 A	A	c                  Z    	 t               } | S # t        $ r}d| g} Y d }~| S d }~w Y y xY w)NzNOT INSTALLED: )r   
ValueError)compose_commandr0   s     r   _get_compose_commandr`      sC    46
 	  2,QC01 s   
 	*#*c                  h    t               } t               | dj                  |       ndt               dS )r4   N )rX   docker_compose_commandr[   )r`   rY   joinr\   )r_   s    r   get_docker_environmentre      s5     +,O,.)8)DCHH_%$"<"> r   c                  (   t         j                  j                         D  ci c]  \  } }| j                  d      s| | }} }t	        |      D ]:  }d|j                         v s||   }|dd dt        |      dz
  z  z   |dd z   ||<   < |S c c}} w )-Retrieve the langchain environment variables.
LANGCHAIN_keyN   *   )r    environitems
startswithlistlowerlen)kvenv_varsri   s       r   get_langchain_env_varsrw      s    !#!1!1!3RAq||L7Q1RHRH~ @CIIKAbqEC3q6A:$6623?HSM@ O Ss
   BBc                     h d} t         j                  j                         D ci c]d  \  }}|j                  d      s|j                  d      r=|| vr9d|j	                         vr'd|j	                         vrd|j	                         vr||f }}}|j                  dd      }|r||d	<   |S t               x}r||d	<   |S c c}}w )
rg   >   LANGCHAIN_API_KEYLANGCHAIN_PROJECTLANGCHAIN_SESSIONLANGCHAIN_ENDPOINTLANGCHAIN_TRACING_V2LANGSMITH_RUNS_ENDPOINTSrh   
LANGSMITH_ri   secrettokenLANGCHAIN_REVISION_IDNrevision_id)r    rn   ro   rp   rr   pop_get_default_revision_id)excludedrt   ru   langchain_metadataenv_revision_iddefault_revision_ids         r   get_langchain_env_var_metadatar      s    H JJ$$&AqLL&!,,|*DX"AGGI%1779$ 	
1  ),,-DdKO,;=)  !9 :	:		:,?=)s   A)C c                  <    	 t        g d      S # t        $ r Y yw xY w)z4Get the default revision ID based on `git describe`.)describez--tagsz--alwaysz--dirtyN)r   BaseExceptionr   r   r   r   r      s%    EFF s    	c                  n    g d} i }| D ])  }t         j                  j                  |      }|%|||<   + |S )N)VERCEL_GIT_COMMIT_SHA!NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA
COMMIT_REFRENDER_GIT_COMMITCI_COMMIT_SHACIRCLE_SHA1CF_PAGES_COMMIT_SHAREACT_APP_GIT_SHASOURCE_VERSION
GITHUB_SHATRAVIS_COMMIT
GIT_COMMITBUILD_VCS_NUMBERbamboo_planRepository_revisionzBuild.SourceVersionBITBUCKET_COMMITDRONE_COMMIT_SHASEMAPHORE_GIT_SHABUILDKITE_COMMIT)r    rn   get)common_release_envsrF   envenv_vars       r   rA   rA      sH    * D"  **..%DI  Kr   )&__doc__	functoolsloggingr    r;   rS   typingr   r   r   r   langsmith.utilsr   langsmith.env._gitr   r   r   rL   	getLogger__name__r+   dictr   strr$   r   	lru_cacher   rD   rE   rY   r\   r`   re   rw   r   r   rA   r   r   r   <module>r      sL      	   . . 6 ' 
		8	$A A
"DeE4K&8!89 "J Q   ( Q8C=    QHSM    QHSM    Q"HSM "  " QhtCy1    Q	 	  	  Q   8 Q(3-    Q$sCx.     s   F F"!F"