o
    Zh                     @   s  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 zddlZdaW n eyA   daY nw eeZdefd	d
Zdeee
eef f fddZejdddefddZejddde	e fddZejddde	e fddZejddde	e fddZejddde	e fddZejddde	ee  fddZ ejdddefddZ!defddZ"ejdddefdd Z#ejddde	e fd!d"Z$ejdddeeef fd#d$Z%dS )%zEnvironment information.    N)DictListOptionalUnion)get_docker_compose_command)exec_gitTFreturnc                   C   s   i t  t S )z/Get the runtime information as well as metrics.)get_runtime_environmentget_system_metrics r   r   Q/var/www/html/lang_env/lib/python3.10/site-packages/langsmith/env/_runtime_env.pyget_runtime_and_metrics   s   r   c               
   C   s   t si S zWtt } i }|  ? |  }t|  |d< dt|j	i|d< | 
 }|  }|j|jdt|jt|jd|  d|d< W d   |W S 1 sTw   Y  |W S  tyw } zd	a td
| i W  Y d}~S d}~ww )z&Get CPU and other performance metrics.Zthread_countrssZmem)sysuser)	voluntaryinvoluntary)timectx_switchespercentcpuNFz Failed to get system metrics: %s)_PSUTIL_AVAILABLEpsutilProcessosgetpidZoneshotZmemory_infofloatZnum_threadsr   Znum_ctx_switches	cpu_timessystemr   r   r   Zcpu_percent	Exceptionloggerdebug)processZmetricsZmem_infor   r   er   r   r   r
      s<   


r
      )maxsizec               
   C   s>   ddl m}  t }d| dt dt t t t d	|S )&Get information about the environment.r   )__version__zlangsmith-py	langsmithpython)	ZsdkZsdk_versionZlibraryplatformruntimeZpy_implementationZruntime_versionZlangchain_versionZlangchain_core_version)r(   r'   get_release_shasr*   python_implementationpython_versionget_langchain_environmentget_langchain_core_version)r'   shasr   r   r   r	   A   s   
r	   c                  C   s   zdd l } | jW S    Y d S Nr   )	langchainr'   )r3   r   r   r   r/   V   s
   r/   c                  C   s&   zdd l } | jW S  ty   Y d S w r2   )langchain_corer'   ImportError)r4   r   r   r   r0   `   s   r0   c                  C   sJ   dd l } z| ddgd }W |S  ty   d}Y |S    Y d S )Nr   docker	--versionutf-8unknown
subprocesscheck_outputdecodestripFileNotFoundError)r;   docker_versionr   r   r   get_docker_versionj   s   rA   c                  C   sB   zt ddgd } W | S  ty   d} Y | S    Y d S )Nzdocker-composer7   r8   r9   r:   )docker_compose_versionr   r   r   get_docker_compose_versiony   s   	rC   c               
   C   sJ   zt  } W | S  ty } zd| g} W Y d }~| S d }~w   Y d S )NzNOT INSTALLED: )r   
ValueError)compose_commandr#   r   r   r   _get_compose_command   s   rF   c                  C   s(   t  } t | durd| ndt dS )r&   N )r@   Zdocker_compose_commandrB   )rF   rA   joinrC   )rE   r   r   r   get_docker_environment   s
   rI   c                  C   sf   dd t j D } t| D ]"}d| v r0| | }|dd dt|d   |dd  | |< q| S )	-Retrieve the langchain environment variables.c                 S   s    i | ]\}}| d r||qS )
LANGCHAIN_)
startswith.0kvr   r   r   
<dictcomp>   s     z*get_langchain_env_vars.<locals>.<dictcomp>keyN   *   )r   environitemslistlowerlen)Zenv_varsrR   rP   r   r   r   get_langchain_env_vars   s   ,r\   c                     sR   h d  fddt j D } | dd}|r|| d< | S t  }r'|| d< | S )rJ   >   ZLANGSMITH_RUNS_ENDPOINTSZLANGCHAIN_ENDPOINTZLANGCHAIN_SESSIONZLANGCHAIN_API_KEYZLANGCHAIN_TRACING_V2ZLANGCHAIN_PROJECTc                    sV   i | ]'\}}| d s| dr)| vr)d| vr)d| vr)d| vr||qS )rK   Z
LANGSMITH_rR   secrettoken)rL   rZ   rM   excludedr   r   rQ      s    z2get_langchain_env_var_metadata.<locals>.<dictcomp>ZLANGCHAIN_REVISION_IDNZrevision_id)r   rW   rX   pop_get_default_revision_id)Zlangchain_metadataZenv_revision_idZdefault_revision_idr   r_   r   get_langchain_env_var_metadata   s   
	
rc   c                   C   s$   zt g dW S  ty   Y dS w )z4Get the default revision ID based on `git describe`.)Zdescribez--tagsz--alwaysz--dirtyN)r   BaseExceptionr   r   r   r   rb      s
   rb   c                  C   s6   g d} i }| D ]}t j|}|d ur|||< q|S )N)ZVERCEL_GIT_COMMIT_SHAZ!NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHAZ
COMMIT_REFZRENDER_GIT_COMMITZCI_COMMIT_SHAZCIRCLE_SHA1ZCF_PAGES_COMMIT_SHAZREACT_APP_GIT_SHAZSOURCE_VERSIONZ
GITHUB_SHAZTRAVIS_COMMITZ
GIT_COMMITZBUILD_VCS_NUMBERZbamboo_planRepository_revisionzBuild.SourceVersionZBITBUCKET_COMMITZDRONE_COMMIT_SHAZSEMAPHORE_GIT_SHAZBUILDKITE_COMMIT)r   rW   get)Zcommon_release_envsr1   envenv_varr   r   r   r,      s   r,   )&__doc__	functoolsloggingr   r*   r;   typingr   r   r   r   Zlangsmith.utilsr   Zlangsmith.env._gitr   r   r   r5   	getLogger__name__r    dictr   strr   r
   	lru_cacher	   r/   r0   rA   rC   rF   rI   r\   rc   rb   r,   r   r   r   r   <module>   sN    

%

	
	







