a
    g	g                     @   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   s:   | d ur(d|vrd|d< t | fi |} t| |dd d S )NZboldTr   errr   r   r   r   r	    r   O/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/black/output.py_out   s
    r   c                 K   s:   | d ur(d|vrd|d< t | fi |} t| |dd d S )NZfgZredTr   r   r   r   r   r   _err   s
    r   c                 K   s   t | fd|i| d S Nr   )r   r   r   r   r   out    s    r   c                 K   s   t | fd|i| d S 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   Za_nbr   Zb_nbr   r   
<listcomp>-   s   zipynb_diff.<locals>.<listcomp>r   r   )jsonloads	enumerater   )r   r   r   r   
diff_linesr   r"   r   
ipynb_diff)   s    



r(   c           	      C   sx   ddl }| jdd}|jdd}g }|j||||ddD ]4}|d dkrT|| q8||d  |d	 q8d
|S )z9Return a unified diff string between strings `a` and `b`.r   NT)keepends   )fromfile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}t|D ]x\}}|ds.|dr<d| d }nF|drTd| d }n.|drld	| d }n|d
rd| d }|||< q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   )r3   linesir2   r   r   r   
color_diffO   s    




r:   )ensure_final_newline)outputr;   r
   c                 G   sl   t jddddddB}|D ],}|| | r|r|d dkr|d qW d	   n1 s\0    Y  |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)r;   r<   fr8   r   r   r   dump_to_file_   s    

*rI   )NT)NT)NT)NT)__doc__r$   rD   typingr   r   Zclickr   r   Zmypy_extensionsr   strboolr   r   r   r   r(   r   r:   rI   r   r   r   r   <module>   s"   