o
    +i                     @   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   W/var/www/html/psymed-ai/venv/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.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#   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)	sdksdk_versionlibraryplatformruntimepy_implementationruntime_versionlangchain_versionlangchain_core_version)r1   r0   get_release_shasr6   python_implementationpython_versionget_langchain_environmentget_langchain_core_version)r0   shasr   r   r   r	   A   s   
r	   c                  C   s   zdd l } | jW S    Y d S Nr   )	langchainr0   )rC   r   r   r   r?   V   s
   r?   c                  C   s&   zdd l } | jW S  ty   Y d S w rB   )langchain_corer0   ImportError)rD   r   r   r   r@   `   s   r@   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)rK   docker_versionr   r   r   get_docker_versionj   s   rQ   c                  C   sB   zt ddgd } W | S  ty   d} Y | S    Y d S )Nzdocker-composerG   rH   rI   rJ   )docker_compose_versionr   r   r   get_docker_compose_versiony   s   	rS   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   rV   c                  C   s(   t  } t | durd| ndt dS )r/   N )rP   docker_compose_commandrR   )rV   rQ   joinrS   )rU   r   r   r   get_docker_environment   s
   rZ   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)env_varsrc   ra   r   r   r   get_langchain_env_vars   s   ,rn   c                     sR   h d  fddt j D } | dd}|r|| d< | S t  }r'|| d< | S )r[   >   LANGCHAIN_API_KEYLANGCHAIN_PROJECTLANGCHAIN_SESSIONLANGCHAIN_ENDPOINTLANGCHAIN_TRACING_V2LANGSMITH_RUNS_ENDPOINTSc                    sV   i | ]'\}}| d s| dr)| vr)d| vr)d| vr)d| vr||qS )r\   
LANGSMITH_rc   secrettoken)r]   rk   r^   excludedr   r   rb      s    z2get_langchain_env_var_metadata.<locals>.<dictcomp>LANGCHAIN_REVISION_IDNrevision_id)r   rh   ri   pop_get_default_revision_id)langchain_metadataenv_revision_iddefault_revision_idr   rx   r   get_langchain_env_var_metadata   s   
	
r   c                   C   s$   zt g dW S  ty   Y dS w )z4Get the default revision ID based on `git describe`.)describez--tagsz--alwaysz--dirtyN)r   BaseExceptionr   r   r   r   r}      s
   r}   c                  C   s6   g d} i }| D ]}t j|}|d ur|||< q|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   rh   get)common_release_envsrA   envenv_varr   r   r   r<      s   r<   )&__doc__	functoolsloggingr   r6   rK   typingr   r   r   r   langsmith.utilsr   langsmith.env._gitr   r   r   rE   	getLogger__name__r'   dictr   strr    r
   	lru_cacher	   r?   r@   rQ   rS   rV   rZ   rn   r   r}   r<   r   r   r   r   <module>   sN    

%

	
	







