U
    hy                     @   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   s:   zt jdg|  dt jd W S  tk
r4   Y d S X d S )Ngitzutf-8)encodingstderr)
subprocesscheck_outputDEVNULLstripBaseException)r    r   6/tmp/pip-unpacked-wheel-cqvhoa9t/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 dd	d
gt dddgt dddddgt ddgdkt dd	dgt dd	dgt ddgpddd d	S )z)Get information about the git repository.z	rev-parsez--is-inside-work-treeN)	r   r   r   r   r   r   r   r   r   r(   zget-urlHEADlogz-1z--format=%ctz--abbrev-refZdescribez--tagsz--exact-matchz--alwaysz--dirtystatusz--porcelain z--format=%anz--format=%aez--show-toplevel/)	r   r   r   r   r   r   r   r   r   )r   r   split)r(   r   r   r   get_git_info$   s0    
r0   )r'   )__doc__	functoolsloggingr   typingr   r   r   Ztyping_extensionsr   	getLoggerr   loggerr   r!   r   r   	lru_cacher0   r   r   r   r   <module>   s   
	
