a
    g	g                  
   @   s  d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ zd dlmZ dd	lmZ W n> ey Z z&ed
e dd d dW Y dZ[n
dZ[0 0 d dlZd dlZd dlmZ d dlmZ e  ZdZdZdZdZdZ dZ!dZ"dZ#dZ$eeeee e!e"e#e$g	Z%dZ&G dd de'Z(ej)dddgidej*d e+d!d"d#ej*d$e,d%d&d#ej-ejde+e,dd'd(d)Z.ej/d*d+d,Z0ej1eej2d-d.d/Z3e+ee4eej5 f d0d1d2Z6dd*d3d4Z7e8d5kre7  dS )6    N)ExecutorProcessPoolExecutor)datetime)partial)freeze_support)SetTuple)web   )corsz%aiohttp dependency is not installed: z. z5Please re-install black with the '[d]' extra install z.to obtain aiohttp_cors: `pip install black[d]`)version)maybe_install_uvloopzX-Protocol-VersionzX-Line-LengthzX-Python-VariantzX-Skip-Source-First-LinezX-Skip-String-NormalizationzX-Skip-Magic-Trailing-Commaz	X-PreviewzX-Fast-Or-SafezX-DiffzX-Black-Versionc                   @   s   e Zd ZdS )InvalidVariantHeaderN)__name__
__module____qualname__ r   r   R/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/blackd/__init__.pyr   8   s   r   Zhelp_option_namesz-hz--help)Zcontext_settingsz--bind-hostzAddress to bind the server to.	localhost)typehelpdefaultz--bind-portzPort to listen oni  )	bind_host	bind_portreturnc                 C   sN   t jt jd t }tj}td| d|  d|  tj|| |dd d d S )N)levelzblackd version z listening on z port T)hostportZhandle_signalsprint)	loggingbasicConfigINFOmake_appblack__version__outr	   Zrun_app)r   r   appverr   r   r   main<   s
    r(   )r   c               	   C   sD   t jtg tdR dgd} t }| t dtt|dg | S )NzContent-Type)Zallow_headers)middlewares/)executor)	r	   Applicationr   BLACK_HEADERSr   Z
add_routespostr   handle)r&   r+   r   r   r   r"   J   s    r"   )requestr+   r   c              
      sP  t ti}z| jtddkr.tjdddW S zt| jtt	j
}W n" tyh   tjddd Y W S 0 t| jv r| jt }zt|\}}W q ty } z.tjddt d|jd	  dW  Y d }~W S d }~0 0 n
d
}t }t| jtd
}t| jtd
}	t| jtd
}
t| jtd
}d
}| jtddkrFd}t	j||||
| |	 |d}| j I d H }| jd ur| jnd}||}t }d}|
r|dd }|d | }||d  }t  }|!|t"t	j#|||dI d H }||dd  dkr&|$dd}||kr&t	j%|| }|| }t| jt&d
}|rt }d| d}d| d}t  }|!|t"t	j'||||I d H }tj| j(|||dW S  t	j%y   tjd|d Y S  t	j)y } z tjd|t*|dW  Y d }~S d }~0  t+yJ } z*t,-d tjd|t*|dW  Y d }~S d }~0 0 d S )N1i  z,This server only supports protocol version 1)statustexti  z Invalid line length header valuezInvalid value for z: r   FsafefastT)Ztarget_versionsZis_pyiline_lengthskip_source_first_lineZstring_normalizationZmagic_trailing_commapreviewutf8 
r
   )r5   modez
zIn	z +0000zOut	)content_typecharsetheadersr3      )r2   r@   )r2   r@   r3   z#Exception during handling a requesti  ).BLACK_VERSION_HEADERr$   r@   getPROTOCOL_VERSION_HEADERr	   ResponseintLINE_LENGTH_HEADERr#   ZDEFAULT_LINE_LENGTH
ValueErrorPYTHON_VARIANT_HEADERparse_python_variant_headerr   argssetbool SKIP_STRING_NORMALIZATION_HEADERSKIP_MAGIC_TRAILING_COMMASKIP_SOURCE_FIRST_LINEPREVIEWFAST_OR_SAFE_HEADERZFileModecontentreadr?   decoder   utcnowfindasyncioZget_event_loopZrun_in_executorr   Zformat_file_contentsreplaceZNothingChangedDIFF_HEADERdiffr>   ZInvalidInputstr	Exceptionr   	exception)r0   r+   r@   r6   valuepyiversionseZskip_string_normalizationZskip_magic_trailing_commar7   r8   r5   r<   Z	req_bytesr?   Zreq_strZthenheaderZfirst_newline_positionZloopZformatted_strZ	only_diffnowsrc_namedst_namer   r   r   r/   S   s    

 	



(
r/   )r_   r   c              
   C   sN  | dkrdt  fS t  }| dD ]}|drB|tdd  }d|v rZ|d^}}n&|d }t|dkr||dd  gng }zt|}|dvrtd	t|dkrt|d }|d
krtdn|d
krdnd}d| | }|dkr
ttj|s
td| d|	tj|  W q" t
tfy>   tdd Y q"0 q"d|fS d S )Nr`   T,py.r   r
   )      zmajor version must be 2 or 3rj   zPython 2 is not supported   rk   ZPYz3.z is not supportedzexpected e.g. '3.7', 'py3.5'F)rL   split
startswithlenrF   r   hasattrr#   TargetVersionaddKeyErrorrH   )r_   ra   r   Z	major_strrestmajorminorversion_strr   r   r   rJ      s4    


rJ   c                   C   s   t   t  t  t  d S )N)r   r   r#   Zpatch_clickr(   r   r   r   r   patched_main   s    rx   __main__)9rX   r   concurrent.futuresr   r   r   	functoolsr   multiprocessingr   typingr   r   Zaiohttpr	   r)   r   ImportErrorZieZclickr#   Z_black_versionr   r$   Zblack.concurrencyr   EventZ_stop_signalrD   rG   rI   rP   rN   rO   rQ   rR   rZ   r-   rB   r]   r   commandoptionr\   rF   Zversion_optionr(   r,   r"   RequestrE   r/   rM   rq   rJ   rx   r   r   r   r   r   <module>   st   
	g!
