o
    hj                   
   @   s  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 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yS Z zed
e dd d ddZ[ww 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#d$ej+d%e-d&d'd#d$ej.ejdd(e,d)e-d*dfd+d,Z/d*ej0fd-d.Z1d/ej2d0ed*ej3fd1d2Z4d3e,d*ee5eej6 f fd4d5Z7d9d6d7Z8e9d8kre8  dS dS ):    N)ExecutorProcessPoolExecutor)datetimetimezone)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   E/var/www/html/ai/venv/lib/python3.10/site-packages/blackd/__init__.pyr   8   s    r   help_option_namesz-hz--help)context_settingsz--bind-hostzAddress to bind the server to.	localhostT)typehelpdefaultshow_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porthandle_signalsprint)	loggingbasicConfigINFOmake_appblack__version__outr
   run_app)r   r   appverr   r   r   main<   s
   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)allow_headers)middlewares/)executor)	r
   Applicationr   BLACK_HEADERSr   
add_routespostr   handle)r,   r2   r   r   r   r'   R   s   r'   requestr2   c              
      sX  t ti}zU| jtddkrtjdddW S zt| jtt	j
}W n ty5   tjddd Y W S w t| jv rl| jt }zt|\}}W n( tyk } ztjddt d|jd	  dW  Y d }~W S d }~ww d
}t }t| jtd
}t| jtd
}	t| jtd
}
t| jtd
}d
}| jtddkrd}t	j||||
| |	 |d}| j I d H }| jd ur| jnd}||}ttj}d}|
r| dd }|d | }||d  }t!" }|#|t$t	j%|||dI d H }| d}|d	kr||d  dkr|&dd}||krt	j'|| }|| }t| jt(d
}|rQttj}d| }d| }t!" }|#|t$t	j)||||I d H }tj| j*|||dW S  t	j'ym   tjd|d Y S  t	j+y } ztjd|t,|dW  Y d }~S d }~w t-y } zt./d tjd|t,|dW  Y d }~S d }~ww )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)target_versionsis_pyiline_lengthskip_source_first_linestring_normalizationmagic_trailing_commapreviewutf8 
r   )r=   modez
zIn	zOut	)content_typecharsetheadersr;      )r:   rL   )r:   rL   r;   z#Exception during handling a requesti  )0BLACK_VERSION_HEADERr)   rL   getPROTOCOL_VERSION_HEADERr
   ResponseintLINE_LENGTH_HEADERr(   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_HEADERFileModecontentreadrK   decoder   nowr   utcfindasyncioget_event_looprun_in_executorr   format_file_contentsreplaceNothingChangedDIFF_HEADERdiffrJ   InvalidInputstr	Exceptionr$   	exception)r8   r2   rL   r@   valuepyiversionseskip_string_normalizationskip_magic_trailing_commarA   rD   r=   rH   	req_bytesrK   req_strthenheaderfirst_newline_positionloopformatted_strnl	only_diffrd   src_namedst_namer   r   r   r7   [   s   

	






 
 r7   rs   c              
   C   s<  | dkr	dt  fS t  }| dD ]}|dr |tdd  }d|v r,|d^}}n|d }t|dkr=|dd  gng }zLt|}|dvrLtd	t|dkrat|d }|d
kr`tdn|d
krgdnd}d| | }|dkrttj|std| d|	tj|  W q t
tfy   tdd w d|fS )Nrt   T,py.r   r   )      zmajor version must be 2 or 3r   zPython 2 is not supported   r   PYz3.z is not supportedzexpected e.g. '3.7', 'py3.5'F)rY   split
startswithlenrR   r   hasattrr(   TargetVersionaddKeyErrorrU   )rs   ru   r   	major_strrestmajorminorversion_strr   r   r   rW      s8   


rW   c                   C   s   t   t  t  d S )N)r   r   r.   r   r   r   r   patched_main   s   
r   __main__)r   N):rg   r$   concurrent.futuresr   r   r   r   	functoolsr   multiprocessingr   typingr   r	   aiohttpr
   r0   r   ImportErrorieclickr(   _black_versionr   r)   black.concurrencyr   Event_stop_signalrP   rS   rV   r]   r[   r\   r^   r_   rm   r4   rN   rq   r   commandoptionrp   rR   version_optionr.   r3   r'   RequestrQ   r7   rZ   r   rW   r   r   r   r   r   r   <module>   s    


	 h
!
