a
    `gy                     @   s   d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	 e
eZedZee ee dddZG d	d
 d
e	ddZejdddeedddZdS )z-Fetch information about any current git repo.    N)ListOptionalTypeVar)	TypedDictT)commandreturnc                 C   s8   zt jdg|  dt jd W S  ty2   Y d S 0 d S )Ngitzutf-8)encodingstderr)
subprocesscheck_outputDEVNULLstripBaseException)r    r   `/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langsmith/env/_git.pyexec_git   s    r   c                   @   sz   e Zd ZU ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed< ee ed	< d
S )GitInfo	repo_name
remote_urlcommitbranchauthor_nameauthor_emailcommit_timedirtytagsN)__name__
__module____qualname__r   str__annotations__boolr   r   r   r   r      s   
r   F)total   )maxsizeorigin)remoter   c                 C   s   t ddgs&tdddddddddd	S t dd| gt ddgt g dt g d	t g d
t ddgdkt g dt g dt ddgpddd d	S )z)Get information about the git repository.	rev-parsez--is-inside-work-treeN)	r   r   r   r   r   r   r   r   r   r(   zget-urlHEAD)log-1z--format=%ct)r)   z--abbrev-refr*   )Zdescribez--tagsz--exact-matchz--alwaysz--dirtystatusz--porcelain )r+   r,   z--format=%an)r+   r,   z--format=%aez--show-toplevel/)	r   r   r   r   r   r   r   r   r   )r   r   split)r(   r   r   r   get_git_info$   s0    




r2   )r'   )__doc__	functoolsloggingr   typingr   r   r   Ztyping_extensionsr   	getLoggerr   loggerr   r!   r   r   	lru_cacher2   r   r   r   r   <module>   s   
	
