3
׾(^                 @   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jdZej 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(| j  D ]\}}|jdr
t|| q
W dd | j  D S )NGIT_c             S   s*   i | ]"\}}|j d  s |dkr||qS )r   GIT_EXEC_PATHGIT_SSHGIT_SSH_COMMAND)r   r   r	   )
startswith).0kv r   F/home/birch/.local/lib/python3.6/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j  d S )N)DEBUGprintsysstdoutflush)r   r   r   r   r   ,   s    r   c               C   s   t o
tj  d S )N)r   	traceback	print_excr   r   r   r   trace_exception2   s    r   c             C   s&   t | tr| j S | jddj 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 | jdd | j 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r2t| ttf r2tj| } t	| |}|j
 \}}|rZt dt| |rlt 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}|j }W d Q R X tdt| tdd |j D }td| |S )Nzutf-8)encodingcontentc             s   s"   | ]}d |kr|j 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 j| sttr t j| j}nt j| 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j   d}Y nX |j  |j }|sZtj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   )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   





