B
    Khh                 @   s(  d Z ddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
 e
dddee eeddd	d
Ze
dddee eeddddZe
dddee eeddddZd ee eeddddZeeeeedddZeeeeedddZeedddZe
ddddeeedddZdS )!zMNice output for Black.

The double calls are for patching purposes in tests.
    N)AnyOptional)echostyle)
mypyc_attrT)Z	patchable)messagenlstylesreturnc             K   s6   | d k	r$d|krd|d< t | f|} t| |dd d S )NZboldT)r   err)r   r   )r   r   r	    r   //tmp/pip-install-vv81h98y/black/black/output.py_out   s
    r   c             K   s6   | d k	r$d|krd|d< t | f|} t| |dd d S )NZfgZredT)r   r   )r   r   )r   r   r	   r   r   r   _err   s
    r   c             K   s   t | fd|i| d S )Nr   )r   )r   r   r	   r   r   r   out    s    r   c             K   s   t | fd|i| d S )Nr   )r   )r   r   r	   r   r   r   r   %   s    r   )aba_nameb_namer
   c                s>   t | t | fddtd D }d|S )zHReturn a unified diff string between each cell in notebooks `a` and `b`.c          	      sj   g | ]b\}}|d  dkrt dd | d d dd | d d   d|  d| qS )Z	cell_typecode cellssource
z:cell_)diffjoin).0Zcell_numbercell)r   a_nbr   b_nbr   r   
<listcomp>.   s   zipynb_diff.<locals>.<listcomp>r   r   )jsonloads	enumerater   )r   r   r   r   
diff_linesr   )r   r   r   r   r   
ipynb_diff)   s
    

r%   c       	      C   s|   ddl }| jdd}|jdd}g }xL|j||||ddD ]4}|d dkrV|| q:||d  |d	 q:W d
|S )z9Return a unified diff string between strings `a` and `b`.r   NT)keepends   )ZfromfileZtofilenr   z\ No newline at end of file
r   )difflib
splitlinesZunified_diffappendr   )	r   r   r   r   r*   Za_linesZb_linesr$   liner   r   r   r   :   s    r   )contentsr
   c             C   s   |  d}xt|D ]x\}}|ds0|dr>d| d }nF|drVd| d }n.|drnd	| d }n|d
rd| d }|||< qW d|S )z(Inject the ANSI color codes to the diff.r   z+++z---z[1mz[0mz@@z[36m+z[32m-z[31m)splitr#   
startswithr   )r.   linesir-   r   r   r   
color_diffO   s    



r5   )ensure_final_newline)outputr6   r
   c          	   G   s\   t jdddddd<}x4|D ],}|| | r|r|d dkr|d qW W d	Q R X |jS )
z;Dump `output` to a temporary file. Return path to the file.wZblk_z.logFutf8)modeprefixsuffixdeleteencodingr)   r   N)tempfileNamedTemporaryFilewritename)r6   r7   fr3   r   r   r   dump_to_file_   s    

rD   )NT)NT)NT)NT)__doc__r!   r?   typingr   r   Zclickr   r   Zmypy_extensionsr   strboolr   r   r   r   r%   r   r5   rD   r   r   r   r   <module>   s"   