B
    
E^                 @   s   d Z ddlmZmZ ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZee	jdZe dkZejdk ZejdkZerefneefZdd Zd	d
 Zdd Zdd Zdd Zdd ZdddZdddZ dd Z!dd Z"dd Z#dS ) z
utils
    )print_functionunicode_literalsNZSETUPTOOLS_SCM_DEBUGWindows)   c             C   s<   x(|   D ]\}}|dr
t|| q
W dd |   D S )NGIT_c             S   s(   i | ] \}}| d r|dkr||qS )r   )GIT_EXEC_PATHGIT_SSHGIT_SSH_COMMAND)
startswith).0kv r   ^/home/fristb/BIRCH/lib-linux-x86_64/python/lib/python3.7/site-packages/setuptools_scm/utils.py
<dictcomp>$   s   
zno_git_env.<locals>.<dictcomp>)itemsr
   trace)envr   r   r   r   r   
no_git_env   s
    

r   c              G   s   t rt|   tj  d S )N)DEBUGprintsysstdoutflush)r   r   r   r   r   ,   s    r   c               C   s   t o
t  d S )N)r   	traceback	print_excr   r   r   r   trace_exception2   s    r   c             C   s&   t | tr|  S | dd S d S )Nzutf-8surrogateescape)
isinstancestrstripdecode)str_or_bytesr   r   r   ensure_stripped_str6   s    
r#   c             C   s$   t str | dd |  D  | S )z`
    On Windows and Python 2, environment dictionaries must be strings
    and not unicode.
    c             s   s   | ]\}}|t |fV  qd S )N)r   )r   keyvaluer   r   r   	<genexpr>C   s    z"_always_strings.<locals>.<genexpr>)
IS_WINDOWSPY2updater   )env_dictr   r   r   _always_strings=   s    r+   c             C   s2   t j| t jt jt|ttttjdddddS )NC 1)LC_ALLLANGUAGEHGPLAIN)r   stderrcwdr   )	
subprocessPopenPIPEr   r+   dictr   osenviron)cmdr3   r   r   r   _popen_pipesG   s    r;   .c             C   s   t dt|  tjdkr0t| ttfs0t| } t	| |}|
 \}}|rXt dt| |rjt dt| |jr|t d|j t|t||jfS )Nr:   posixouterrret)r   reprr8   namer   listtupleshlexsplitr;   communicate
returncoder#   )r:   r3   pr>   r?   r   r   r   do_exZ   s    

rJ   c             C   s    t | |\}}}|rt| |S )N)rJ   r   )r:   r3   r>   r?   r@   r   r   r   doj   s    rK   c          	   C   sT   t j| dd}| }W d Q R X tdt| tdd | D }td| |S )Nzutf-8)encodingcontentc             s   s"   | ]}d |kr| d dV  qdS )z:    N)rF   )r   xr   r   r   r&   v   s    z!data_from_mime.<locals>.<genexpr>data)ioopenreadr   rA   r7   
splitlines)pathfprM   rP   r   r   r   data_from_mimeq   s    
rW   c             C   s4   t | sttr t | j}nt | j}||kS )N)inspect
isfunctionAssertionErrorr(   
getargspecargs	signature
parameters)fnargnameargspecr   r   r   function_has_arg{   s
    rb   c             C   s^   yt | dgd}W n$ tk
r6   tt   d}Y nX |  |j }|sZtd|   |S )Nhelpr<   Fz%r was not found)	r;   OSErrorr   r   exc_inforG   rH   warningswarn)rB   rI   resr   r   r   has_command   s    
ri   )r<   )r<   )$__doc__
__future__r   r   rX   rf   r   rE   r4   r8   rQ   platformr   boolr9   getr   systemr'   version_infor(   PY3r   unicodestring_typesr   r   r   r#   r+   r;   rJ   rK   rW   rb   ri   r   r   r   r   <module>   s4   





