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   h/var/www/html/cobodadashboardai.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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
      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)	ZsdkZsdk_versionlibraryplatformZ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'   )r3   r   r   r   r/   V   s
    r/   c                  C   s*   zdd l } | jW S  ty$   Y d S 0 d S r2   )langchain_corer'   ImportError)r4   r   r   r   r0   `   s
    r0   c                  C   sL   dd l } z| ddgd }W n" ty:   d}Y n   Y d S 0 |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   sD   zt ddgd } W n" ty2   d} Y n   Y d S 0 | S )Nzdocker-composer7   r8   r9   r:   )docker_compose_versionr   r   r   get_docker_compose_versiony   s    rC   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    
 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}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)Zenv_varsrS   rP   r   r   r   get_langchain_env_vars   s    .r]   c                     sP   h d  fddt j D } | dd}|r:|| d< nt  }rL|| d< | S )rJ   >   ZLANGCHAIN_ENDPOINTZLANGSMITH_RUNS_ENDPOINTSZLANGCHAIN_PROJECTZLANGCHAIN_TRACING_V2ZLANGCHAIN_API_KEYZLANGCHAIN_SESSIONc                    sV   i | ]N\}}| d s | dr| vrd| vrd| vrd| vr||qS )rK   Z
LANGSMITH_rS   secrettoken)rL   r[   rM   excludedr   r   rQ      s   z2get_langchain_env_var_metadata.<locals>.<dictcomp>ZLANGCHAIN_REVISION_IDNZrevision_id)r   rX   rY   pop_get_default_revision_id)Zlangchain_metadataZenv_revision_idZdefault_revision_idr   r`   r   get_langchain_env_var_metadata   s    
	

rd   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`.)Zdescribez--tagsz--alwaysz--dirtyN)r   BaseExceptionr   r   r   r   rc      s    rc   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   rX   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]   rd   rc   r,   r   r   r   r   <module>   sJ   

%

	
	








