B @`@sddlZddlmZmZddlmZddlmZddlZddlm Z ddl m Z m Z ddl mZddlZddlZddlZddlmZeZd Zd Zd Zd Zd ZdZeeeeeegZdZGdddeZ ej!dddgidej"de#dddej"de$dddej%ejde#e$ddddZ&ej'd d!d"Z(ej)eej*d#d$d%Z+e#e e,e ej-fd&d'd(Z.dd d)d*Z/e0d+kre/dS),N)ExecutorProcessPoolExecutor)datetime)partial)freeze_support)SetTuple)web)versionzX-Protocol-Versionz X-Line-LengthzX-Python-VariantzX-Skip-String-NormalizationzX-Fast-Or-SafezX-DiffzX-Black-Versionc@s eZdZdS)InvalidVariantHeaderN)__name__ __module__ __qualname__rr3/tmp/pip-unpacked-wheel-2idc3ohw/blackd/__init__.pyr (sr Zhelp_option_namesz-hz--help)Zcontext_settingsz --bind-hostzAddress to bind the server to. localhost)typehelpdefaultz --bind-portzPort to listen oni) bind_host bind_portreturncCsNtjtjdt}tj}td|d|d|tj|||ddddS)N)levelzblackd version z listening on z port T)hostportZhandle_signalsprint) logging basicConfigINFOmake_appblack __version__outr Zrun_app)rrappverrrrmain,s r%)rc Cs\t}t}t|}||jd}||dt t |ddtj t dddi|S)N/POST)executor* Content-Type)Z allow_headersZexpose_headers)r*) r Applicationr aiohttp_corssetupaddZrouterZ add_resourceZ add_routerhandleZResourceOptions BLACK_HEADERS)r#r(Zcorsresourcerrrr:s r)requestr(rc stti}y|jtddkr,tjdddSyt|jtt j }Wnt k rbtjdddSXt |jkr|jt }yt |\}}Wqtk r}z tjddt d|jd dSd}~XYqXn d }t}t|jtd }d } |jtd d krd } t j|||| d} |jIdH} |jdk r8|jnd} | | } t}t}||tt j| | | dIdH}t|jt d }|rt}d|d}d|d}t}||tt j!| |||IdH}tj|j"| ||dSt j#k r tjd|dSt j$k r>}ztjd|t%|dSd}~XYn>t&k rz}zt'(dtjd|t%|dSd}~XYnXdS)N1iz,This server only supports protocol version 1)statustextiz Invalid line length header valuezInvalid value for z: rFsafefastT)Ztarget_versionsZis_pyi line_lengthZstring_normalizationutf8)r7modezIn z +0000zOut ) content_typecharsetheadersr5)r4r=)r4r=r5z#Exception during handling a requesti))BLACK_VERSION_HEADERr!r=getPROTOCOL_VERSION_HEADERr ResponseintLINE_LENGTH_HEADERr ZDEFAULT_LINE_LENGTH ValueErrorPYTHON_VARIANT_HEADERparse_python_variant_headerr argssetbool SKIP_STRING_NORMALIZATION_HEADERFAST_OR_SAFE_HEADERZFileModecontentreadr<decoderutcnowasyncioZget_event_loopZrun_in_executorrZformat_file_contents DIFF_HEADERZdiffr;ZNothingChangedZ InvalidInputstr Exceptionr exception)r2r(r=r8valuepyiversionseZskip_string_normalizationr7r:Z req_bytesr<Zreq_strZthenZloopZ formatted_strZ only_diffnowsrc_namedst_namerrrr/Lst   *      r/)rVrc Cs\|dkrdtfSt}x4|dD]$}|drF|tdd}d|kr^|d^}}n&|d}t|dkr|ddgng}yt|}|dkrtd t|dkrt|d}|d kr|d krtd n|d krd nd }d||}|d krttj|std|d| tj|Wq&t t fk rJtdYq&Xq&Wd|fSdS)NrWT,py.r)zmajor version must be 2 or 3raz$minor version must be 7 for Python 2rbZPYz3.z is not supportedzexpected e.g. '3.7', 'py3.5'F) rIsplit startswithlenrCr hasattrr TargetVersionr.KeyErrorrE)rVrXr Z major_strrestmajorminor version_strrrrrGs6    rGcCstttdS)N)rr Z patch_clickr%rrrr patched_mainsrn__main__)1rQconcurrent.futuresrrr functoolsrrmultiprocessingrtypingrrZaiohttpr r,r ZclickZ_black_versionr r!EventZ _stop_signalrArDrFrKrLrRr0r?rTr commandoptionrSrCZversion_optionr%r+rRequestrBr/rJrhrGrnr rrrrsL       L#