U e@sddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZddlmZdd d d d Zejd ddddZd d dddZd ddddZGdddeZdddddZddd d!d"Zd#d$d d%dd&d'd(d)Zd dd*d+d,d-Ze jd.krtdd/lm Z ddl!Z!Gd0d1d1Z"d#d$d d%dd&d'd2d3Z#neZ#d ddd4d5Z$d d d6d7d8Z%dS)9) annotationsN) TracebackType)Any)Callable) Generator) parse_shebangrbytes)excreturnc Csfttt|W5QRSQRXttt|W5QRSQRXdt|jdS)Nz ) contextlibsuppress TypeErrorr Exceptionstrencodetype__name__)r r=/opt/hc_python/lib/python3.8/site-packages/pre_commit/util.py force_bytess   rrzGenerator[(None, None, None)])pathr ccs:z dVWn*tk r4tj|r.t|YnXdS)z2Cleans up the directory on an exceptional failure.N) BaseExceptionosrexistsrmtree)rrrrclean_path_on_failures   r)filenamer cCstjd|S)Nzpre_commit.resources) importlib resources read_text)rrrr resource_text&sr NonecCs2t|j}|tjBtjBtjB}t||dSN)rstatst_modeS_IXUSRS_IXGRPS_IXOTHchmod)rZ original_modeZnew_moderrrmake_executable*s r)csFeZdZddddddfdd Zdd d d Zd d d dZZS)CalledProcessErrorintztuple[str, ...]r bytes | Noner!) returncodecmdstdoutstderrr cs.t||||||_||_||_||_dSr")super__init__r-r.r/r0)selfr-r.r/r0 __class__rrr21s zCalledProcessError.__init__r c CsPddddd}dd|jdd |jdd ||jd d ||jfS) Nr,r)partr cSs |rd|ddSdSdS)Ns  s (none))replacerstrip)r7rrr_indent_or_none?sz5CalledProcessError.__bytes__.._indent_or_nonez command:  z return code: sstdout:r8sstderr:)joinr.rr-r/r0)r3r;rrr __bytes__>szCalledProcessError.__bytes__rcCs |Sr")r?decoder3rrr__str__LszCalledProcessError.__str__)r __module__ __qualname__r2r?rB __classcell__rrr4rr*0s r*zdict[str, Any])kwargsr cCsdD]}||tjqdS)Nstdinr/r0) setdefault subprocessPIPE)rFargrrr_setdefault_kwargsPsrMOSErrorztuple[int, bytes, None])er cCsdt|dddfS)Nr8)rr:)rOrrr_oserror_to_outputUsrQT)checkboolztuple[int, bytes, bytes | None])r.rRrFr c Ost|ztj||dd}Wn2tjk rR}z|\}}}W5d}~XYnXXztj|f|}Wn0tk r}zt |\}}}W5d}~XYnX| \}}|j }|r|rt |||||||fS)Nenv)rT) rMr normalize_cmdgetExecutableNotFoundError to_outputrJPopenrNrQ communicater-r*)rRr.rFrOr-stdout_bstderr_bprocrrr cmd_output_bYs   r^ztuple[int, str, str | None])r.rFr cOsBt||\}}}|dk r |nd}|dk r4|nd}|||fSr")r^r@)r.rFr-r[r\r/r0rrr cmd_outputssr_win32)openptyc@sXeZdZddddZddddZddddZddd d Zd d d ddddZdS)Ptyr!r6cCsd|_d|_dSr")rwrArrrr2sz Pty.__init__cCs\t\|_|_t|j}t|dts,t|dtjtj BM<t |jtj ||SNrP) rarcrdtermios tcgetattr isinstancer+AssertionErrorONLCROPOST tcsetattrTCSANOW)r3attrsrrr __enter__s  z Pty.__enter__cCs |jdk rt|jd|_dSr")rdrcloserArrrclose_ws  z Pty.close_wcCs$|jdk stt|jd|_dSr")rcrirrprArrrclose_rs z Pty.close_rztype[BaseException] | NonezBaseException | NonezTracebackType | None)exc_type exc_value tracebackr cCs||dSr")rqrr)r3rsrtrurrr__exit__sz Pty.__exit__N)rrCrDr2rorqrrrvrrrrrb~s  rbc Os|dks t|dtjks&t|dt|zt|}Wn0tjk rl}z|WYSd}~XYnXtt j }t }|j dk st| ||j|jdztj|f|}WnHtk r}z(t|WYW5QRW5QRSd}~XYnX|d}zt |j d}Wn:tk r\}z|jtjkrJd}nW5d}~XYn X||7}|sqtqW5QRXW5QRX||dfS)NFr0rGr<i)rirJSTDOUTrMrrUrWrXopenrdevnullrbrcupdaterdrYrNrQrqreaderrnoEIOwait) rRr.rFrOryZptyr]bufZbtsrrr cmd_output_ps4 6rcCs(ddddddd}tj|d|d d S) z+On windows, rmtree fails for readonly dirs.zCallable[..., Any]rz,tuple[type[OSError], OSError, TracebackType]r!)funcrr r cSsn|d}|tjtjtjfkrh|jtjtjhkrh|tj|fD]}t |t |j t j Bq>||ndSre) rrmdirremoveunlinkr|EACCESEPERMrdirnamer(r#r$S_IWUSR)rrr Zexcvalueprrrhandle_remove_readonlys z&rmtree..handle_remove_readonlyF) ignore_errorsonerrorN)shutilr)rrrrrrsr)sr cCstjdkr|S|dS)Nr`z.exe)sysplatform)rrrrwin_exesr)& __future__rr r|importlib.resourcesros.pathrrr#rJrtypesrtypingrrrZ pre_commitrrcontextmanagerrr r) RuntimeErrorr*rMrQr^r_rrarfrbrrrrrrrsB          %(