
    e"                     N   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 	 d dlmZ d dlmZ d	d
lmZ d dlZd dlZd dlmZ d dlmZ  e j:                         ZdZd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'e(e)gZ*dZ+ G d de,      Z- G d d e,      Z. ej^                  d!d"d#gi$       ej`                  d%e1d&d'd()       ej`                  d*e2d+d,d()       ejf                  ej4                        d-e1d.e2d/dfd0                            Z4d/ejj                  fd1Z6d2ejn                  d3ed/ejp                  fd4Z9d5ee1   d/ejt                  fd6Z;d7e1d/ee<eejz                     f   fd8Z>d;d9Z?e@d:k(  r e?        yy# e$ rZ ede ddz   dz         ddZ[ww xY w)<    N)ExecutorProcessPoolExecutor)datetimetimezone)partial)freeze_support)SetTuple)web)MultiMapping   )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-UnstablezX-Enable-Unstable-FeaturezX-Fast-Or-SafezX-DiffzX-Black-Versionc                       e Zd Zy)HeaderErrorN__name__
__module____qualname__     1/usr/lib/python3/dist-packages/blackd/__init__.pyr   r   =       r   r   c                       e Zd Zy)InvalidVariantHeaderNr   r   r   r   r   r   A   r   r   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                     t        j                  t         j                         t               }t        j
                  }t	        j                  d| d|  d|        t        j                  || |dd        y )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vers       r   mainr7   E   s\     gll+
*C


C	IIuN9+VI;OPKK))DPTUr   c            	          t        j                  t        g t        d      g      } t	               }| j                  t        j                  dt        t        |            g       | S )NzContent-Type)allow_headers)middlewares/)executor)	r   Applicationr   BLACK_HEADERSr   
add_routespostr   handle)r5   r<   s     r   r0   r0   Y   sV    
//(H-(H(HIJC #$HNNCHHS'&8"DEFGJr   requestr<   c           
        K   t         t        i}	 | j                  j                  t        d      dk7  rt        j                  dd      S d}| j                  j                  t        d      dk(  rd}	 t        | j                        }| j                  j                          d {   }| j                  | j                  nd}|j                  |      }t        j                   t"        j$                        }	d}
|j&                  r|j)                  d      dz   }|d | }
||d  }t+        j,                         }|j/                  |t1        t2        j4                  |||             d {   }|j)                  d      }|d
kD  r2||dz
     dk(  r'|j7                  dd      }||k(  rt2        j8                  |
|z   }|
|z   }t;        | j                  j                  t<        d            }|rvt        j                   t"        j$                        }d|	 }d| }t+        j,                         }|j/                  |t1        t2        j>                  ||||             d {   }t        j                  | j@                  |||      S # t        $ r.}t        j                  d	|j                  d
         cY d }~S d }~ww xY w7 7 X7 g# t2        j8                  $ r t        j                  d|      cY S t2        jB                  $ r+}t        j                  d	|tE        |            cY d }~S d }~wtF        $ r@}tI        jJ                  d       t        j                  d|tE        |            cY d }~S d }~ww xY ww)N1i  z,This server only supports protocol version 1)statustextFsafefastTi  r   utf8 
r   )rH   modez
zIn	zOut	)content_typecharsetheadersrF      )rE   rP   )rE   rP   rF   z#Exception during handling a requesti  )&BLACK_VERSION_HEADERr2   rP   getPROTOCOL_VERSION_HEADERr   ResponseFAST_OR_SAFE_HEADER
parse_moder   argscontentreadrO   decoder   nowr   utcskip_source_first_linefindasyncioget_event_looprun_in_executorr   r1   format_file_contentsreplaceNothingChangedboolDIFF_HEADERdiffrN   InvalidInputstr	Exceptionr-   	exception)rB   r<   rP   rH   rL   e	req_bytesrO   req_strthenheaderfirst_newline_positionloopformatted_strnl	only_diffr\   src_namedst_names                      r   rA   rA   b   s	    #[1GAF??6<C<<!O  ??2F;vED	<goo.D "//..00	%,__%@'//f""7+||HLL)&&*1,,t*<q*@"445F456G%%'"22ge88'SWX
 

 \\$6gb1fo-)11$?M'*** 7". ,,[%@A	,,x||,CdV}Hse}H))+D"&"6"6

G]HhO# M
 || --	
 	
U  	<<<s;;	<0
.  9||388 F||3c!fEE F?@||3c!fEEFs   M79K 	M7
'K 2J K $J<%CK 'J?(C2K K&K M7	J9#J4.J9/K 3M74J99K ?K K *M4.M70M4 L("M4#M7(M445M/)M4*M7/M44M7rP   c                    	 t        | j                  t        t        j                              }t        | v r| t           }	 t        |      \  }}nd}t               }t        | j                  t        d            }t        | j                  t        d            }t        | j                  t        d            }t        | j                  t         d            }	t        | j                  t"        d            }
t               }| j                  t$        d      j'                  d      }|D ]8  }|j)                         }|s	 |j+                  t        j,                  |          : t        j0                  ||||| | |	|
|	      S # t
        $ r t        d      d w xY w# t        $ r(}t        dt         d|j                  d          d d }~ww xY w# t.        $ r t        dt$         d|       d w xY w)	Nz Invalid line length header valuezInvalid value for z: r   FrJ   ,)	target_versionsis_pyiline_lengthr^   string_normalizationmagic_trailing_commapreviewunstableenabled_features)intrS   LINE_LENGTH_HEADERr1   DEFAULT_LINE_LENGTH
ValueErrorr   PYTHON_VARIANT_HEADERparse_python_variant_headerr   rX   setrf    SKIP_STRING_NORMALIZATION_HEADERSKIP_MAGIC_TRAILING_COMMASKIP_SOURCE_FIRST_LINEPREVIEWUNSTABLEENABLE_UNSTABLE_FEATUREsplitstripaddPreviewKeyErrorFileMode)rP   r}   valuepyiversionsrm   skip_string_normalizationskip_magic_trailing_commar^   r   r   enable_featuresenable_unstable_featurespieces                 r   rW   rW      s   H'++&8%:S:STU '-.	7>MC 5 $4e<! !%W[[1JE%R S!'++.De"LM7;;w./GGKK%01H*-%O&{{+BBGMMcR) ##EMM%$89	 >> 5!::!::(
 
G  H<=4GH $ 	$%:$;2affQi[I	.  !()@(AE7Ks/   -F F ?"GF	G%#GG G0r   c                    | dk(  rdt               fS t               }| j                  d      D ]  }|j                  d      r|t        d      d  }d|v r|j                  d      ^}}n|d   }t        |      dkD  r|dd  gng }	 t	        |      }|dvrt        d	      t        |      dkD  rt	        |d         }|d
k(  rt        d      |d
k(  rdnd}d| | }|dk(  r)t        t        j                  |      st        d| d      |j                  t        j                  |           d|fS # t        t        f$ r t        d      d w xY w)Nr   Trz   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)r   r   
startswithlenr   r   hasattrr1   TargetVersionr   r   r   )r   r   r   	major_strrestmajorminorversion_strs           r   r   r      ss   ~SU{5{{3' 	UG!!$'!#d)+.g~#*==#5 	D#AJ	(+Gq(8}bUI&./MNNt9q=QLEz23NOO "'!AE "5'%1A:ge.A.A;&O.E7:K/LMMU00=>-	U2 h j) U*+IJPTTUs   B&D//Ec                  @    t                t                t                y )N)r   r   r7   r   r   r   patched_mainr      s    Fr   __main__)r&   N)Ar`   r-   concurrent.futuresr   r   r   r   	functoolsr   multiprocessingr   typingr	   r
   aiohttpr   	multidictr   r:   r   ImportErrorieclickr1   _black_versionr   r2   black.concurrencyr   Event_stop_signalrT   r   r   r   r   r   r   r   r   rV   rg   r>   rR   rk   r   r   commandoptionrj   r   version_optionr7   r=   r0   RequestrU   rA   ModerW   rf   r   r   r   r   r   r   r   <module>r      sR     < '  * 
&!   1 2 w}} / $ * 3 #@  9 
5 &  $ ) 	) 		9 	 !4tX6F GH		) "5uSW e//0VC VC VD V 1 IV#// CF#++ CF CFcll CFL0S) 0ejj 0fs uT3u?R?R;S5S/T B zN i  

/t26
A	B
:	; 	s   F F$FF$