a
    ~g                     @   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y   daY n0 eeZedd	d
Zeee
eef f dddZejddedddZejdde	e dddZejdde	e dddZejdde	e dddZejdde	e dddZejdde	ee  dddZ ejddedddZ!edddZ"ejddeddd Z#ejdde	e dd!d"Z$ejddeeef d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   _/var/www/html/emsaiapi.evdpl.com/venv/lib/python3.9/site-packages/langsmith/env/_runtime_env.pyget_runtime_and_metrics   s    r   c               
   C   s   t si S ztt } i }|  z |  }t|  |d< dt|j	i|d< | 
 }|  }|j|jdt|jt|jd|  d|d< W d   n1 s0    Y  |W S  ty } z d	a td
| i W  Y d}~S d}~0 0 dS )z&Get CPU and other performance metrics.Zthread_countrssZmem)sysuser)	voluntaryinvoluntary)timectx_switchespercentZcpuNFz Failed to get system metrics: %s)_PSUTIL_AVAILABLEpsutilProcessosgetpidoneshotZmemory_infofloatnum_threadsr   Znum_ctx_switches	cpu_timessystemr   r   r   Zcpu_percent	Exceptionloggerdebug)processmetricsZmem_infor   r   er   r   r   r
      s2    

(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)	sdkZsdk_version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 0 d S Nr   )	langchainr)   )r7   r   r   r   r3   V   s
    r3   c                  C   s*   zdd l } | jW S  ty$   Y d S 0 d S r6   )langchain_corer)   ImportError)r8   r   r   r   r4   `   s
    r4   c                  C   sL   dd l } z| ddgd }W n" ty:   d}Y n   Y d S 0 |S )Nr   Zdocker	--versionutf-8unknown
subprocesscheck_outputdecodestripFileNotFoundError)r>   docker_versionr   r   r   get_docker_versionj   s    rD   c                  C   sD   zt ddgd } W n" ty2   d} Y n   Y d S 0 | S )Nzdocker-composer:   r;   r<   r=   )docker_compose_versionr   r   r   get_docker_compose_versiony   s    rF   c               
   C   sL   z
t  } W n< ty: } zd| g} W Y d }~nd }~0    Y d S 0 | S )NzNOT INSTALLED: )r   
ValueError)compose_commandr%   r   r   r   _get_compose_command   s    
 rI   c                  C   s(   t  } t | durd| ndt dS )r(   N )rC   Zdocker_compose_commandrE   )rI   rD   joinrF   )rH   r   r   r   get_docker_environment   s
    rL   c                  C   sf   dd t j D } t| D ]D}d| v r| | }|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>       z*get_langchain_env_vars.<locals>.<dictcomp>keyN   *   )r   environitemslistlowerlen)env_varsrV   rS   r   r   r   get_langchain_env_vars   s    .ra   c                     sP   h d  fddt j D } | dd}|r:|| d< nt  }rL|| d< | S )rM   >   LANGSMITH_RUNS_ENDPOINTSLANGCHAIN_ENDPOINTZLANGCHAIN_PROJECTZLANGCHAIN_SESSIONZLANGCHAIN_TRACING_V2ZLANGCHAIN_API_KEYc                    sV   i | ]N\}}| d s | dr| vrd| vrd| vrd| vr||qS )rN   Z
LANGSMITH_rV   secrettoken)rO   r^   rP   excludedr   r   rT      s   z2get_langchain_env_var_metadata.<locals>.<dictcomp>ZLANGCHAIN_REVISION_IDNrevision_id)r   r[   r\   pop_get_default_revision_id)langchain_metadataZenv_revision_idZdefault_revision_idr   rf   r   get_langchain_env_var_metadata   s    
	

rl   c                   C   s(   zt g dW S  ty"   Y dS 0 dS )z4Get the default revision ID based on `git describe`.)describez--tagsz--alwaysz--dirtyN)r   BaseExceptionr   r   r   r   rj      s    rj   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   r[   get)Zcommon_release_envsr5   envenv_varr   r   r   r0      s    
r0   )&__doc__	functoolsloggingr   r.   r>   typingr   r   r   r   langsmith.utilsr   langsmith.env._gitr   r   r   r9   	getLogger__name__r!   dictr   strr   r
   	lru_cacher	   r3   r4   rD   rF   rI   rL   ra   rl   rj   r0   r   r   r   r   <module>   sJ   

%

	
	








