U WP@s0ddlZddlZddlZddlZddlZddlmZejddkZej dZ dZ e dZddZd d Zd d Zd dZGdddejZGdddeZerZ5d?dZ%d@d Z&dAd"Z'dqdBd$Z(drdCd&Z)dsdDd(Z*dEd*Z+dtdFdGZ6dudJdKZ7e8edLrej9Z:dMZ;n ejdZ?dZ@dPdQZAdvdRdSZBe rdTZ dUdVlCmDZDdWdXZEerdwdZd[Zz ddl?Z?WneFk rYnXeZGdxd\d]Z>d^d_Z@nd`dXZEdadZDdbdcZHdddeZIdfdgZJeJdhde(ZKeJdide)ZLeJdjde*ZMe%e&e'dkZNe(e)e*dkZOdS)yNWeakKeyDictionarywinPz\[((?:\d|;)*)([a-zA-Z])cCstptSN)sysgetfilesystemencodinggetdefaultencodingr r /_compat.pyget_filesystem_encodingsr cCs,|dkrt|}|dkrd}t|||ddS)NreplaceT)line_buffering)get_best_encoding_NonClosingTextIOWrapper)streamencodingerrorsr r r _make_text_streamsrcCs.zt|jdkWStk r(YdSXdS)z$Checks if a given encoding is ascii.asciiFN)codecslookupname LookupError)rr r r is_ascii_encodingsrcCs$t|ddpt}t|r dS|S)z1Returns the default stream encoding if not found.rNutf-8)getattrrr rrrvr r r r&src@s8eZdZddZer$ddZddZddZd d Zd S) rcKs(t||_}tjj||||f|dSr) _FixupStream_streamio TextIOWrapper__init__)selfrrrZextrar r r r$0sz!_NonClosingTextIOWrapper.__init__cCsRt|tst|rDz |Wntk r2YnX|jt|Stj||Sr) isinstancestris_bytesflush Exceptionbufferwriter"r#r%xr r r r,8s z_NonClosingTextIOWrapper.writecCs|D]}||qdSr)r,)r%linesliner r r writelinesAsz#_NonClosingTextIOWrapper.writelinescCs&z |Wntk r YnXdSr)detachr*r%r r r __del__Es z _NonClosingTextIOWrapper.__del__cCs |jSr)r!isattyr3r r r r5Ksz_NonClosingTextIOWrapper.isattyN) __name__ __module__ __qualname__r$PY2r,r1r4r5r r r r r.s  rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)r zThe new io interface needs more from streams than streams traditionally implement. As such, this fix-up code is necessary in some circumstances. cCs ||_dSr)r!)r%rr r r r$Vsz_FixupStream.__init__cCs t|j|Sr)rr!r%rr r r __getattr__Ysz_FixupStream.__getattr__cCs:t|jdd}|dk r||Str.|j|S|j|S)Nread1)rr!r9readlineread)r%sizefr r r r<\s  z_FixupStream.read1cCsHt|jdd}|dk r|Sz|jdWntk rBYdSXdS)NreadablerFT)rr!r>r*r-r r r rAgsz_FixupStream.readablec Cspt|jdd}|dk r|Sz|jdWn>tk rjz|jdWntk rdYYdSXYnXdS)NwritableFT)rr!r,r*r-r r r rBqsz_FixupStream.writablecCsNt|jdd}|dk r|Sz|j|jWntk rHYdSXdS)NseekableFT)rr!seektellr*r-r r r rE~sz_FixupStream.seekableN) r6r7r8__doc__r$r;r<rArBrEr r r r r Ps   r cCs|Sr) iteritemsr.r r r rDrKcCst|ttfSr)r&r+ bytearrayrJr r r r(sr(z^[a-zA-Z_][a-zA-Z0-9_]*$cCs4z |}Wntk r YnXt|tj|Sr)filenor*msvcrtZsetmodeosZO_BINARY)r@rMr r r set_binary_modes  rPcCs|Srr rJr r r rKrDcCst|dk Sr)_identifier_researchrJr r r isidentifiersrScCs ttjSr)rPrstdinr r r r get_binary_stdinsrUcCs ttjSr)rPrstdoutr r r r get_binary_stdoutsrWcCs ttjSr)rPrstderrr r r r get_binary_stderrsrYcCs(ttj||}|dk r|Sttj||Sr)_get_windows_console_streamrrTrrrrr r r get_text_stdinsr\cCs(ttj||}|dk r|Sttj||Sr)rZrrVrr[r r r get_text_stdoutsr]cCs(ttj||}|dk r|Sttj||Sr)rZrrXrr[r r r get_text_stderrsr^cCst|tr|td}|S)Nr)r&bytesdecoder valuer r r filename_to_uis rccCs|Sr)rSrJr r r rKrDcCs t|Sr)iteritemsrJr r r rKrDcCst|tttfSr)r&r_ memoryviewrLrJr r r r(sFcCs0zt|dtWStk r*|YSXdSNr)r&r>r_r*rdefaultr r r _is_binary_readersrjc CsTz|dWn@tk rNz|dWYdStk rDYnX|YSXdS)NrDrCFT)r,r*rhr r r _is_binary_writers  rkcCs4t|dr|St|dd}|dk r0t|dr0|SdSNFr+T)rjrrZbufr r r _find_binary_readers   rncCs4t|dr|St|dd}|dk r0t|dr0|SdSrl)rkrrmr r r _find_binary_writers   rocCstt|ddpdS)z3A stream is misconfigured if its encoding is ASCII.rNr)rrrr r r _stream_is_misconfiguredsrqcCs@t|dd}t|dd}||kr,||kr,dS|dkr<|dk SdS)NrrTF)r)rrrZstream_encodingZ stream_errorsr r r _is_compatible_text_streams  rrcCs`t|dr|}n8|dkr$t|s$|St|||r4|St|}|dkrH|S|dkrTd}t|||SNFr)rjrqrrrnr)Z text_readerrrZ binary_readerr r r _force_correct_text_reader's  rtcCs`t|dr|}n8|dkr$t|s$|St|||r4|St|}|dkrH|S|dkrTd}t|||Srs)rkrqrrror)Z text_writerrrZ binary_writerr r r _force_correct_text_writerCs  rucCsttj}|dkrtd|S)Nz6Was not able to determine binary stream for sys.stdin.)rnrrT RuntimeError)readerr r r rU_s cCsttj}|dkrtd|S)Nz7Was not able to determine binary stream for sys.stdout.)rorrVrvwriterr r r rWfs cCsttj}|dkrtd|S)Nz7Was not able to determine binary stream for sys.stderr.)rorrXrvrxr r r rYms cCs(ttj||}|dk r|Sttj||Sr)rZrrTrtr[r r r r\tscCs(ttj||}|dk r|Sttj||Sr)rZrrVrur[r r r r]zscCs(ttj||}|dk r|Sttj||Sr)rZrrXrur[r r r r^scCs2t|tr|td}n|dddd}|S)Nrrsurrogateescape)r&r_r`r encoderar r r rcs  cCsBt|dr|j}n|dk r |}nt|}t|tr>|dd}|S)Nstrerrorrr)hasattrr|r'r&r_r`)erimsgr r r get_streerrors   rrstrictc Cs|dkrTd|kr2d|kr"tdfSt||ddfSd|krDtdfSt||ddfS|s|dkrnt||dfStj||||ddfSd|krtdd |krtd d|krtd d dl}|jt j |d d\}}|dk rtj||||d}n t ||}t |||dfS)N-wbF)rrTazAppending to an existing file is not supported, because that would involve an expensive `copy`-operation to a temporary file. Open the file in normal `w`-mode and copy explicitly if that's what you're after.r.z&Use the `overwrite`-parameter instead.z,Atomic writes only make sense with `w`-mode.rz.__atomic-write)dirprefix)rWr]rUr\openr" ValueErrortempfileZmkstemprOpathdirnamefdopen _AtomicFile) filenamemoderrZatomicrfd tmp_filenamer@r r r open_streams8    rrTc@sJeZdZddZeddZdddZdd Zd d Zd d Z ddZ dS)rcCs||_||_||_d|_dSNF)_f _tmp_filename_real_filenameclosed)r%r@rZ real_filenamer r r r$sz_AtomicFile.__init__cCs|jSr)rr3r r r rsz_AtomicFile.nameFcCsV|jr dS|jts>zt|jWntk r<YnXt|j |jd|_dS)NT) rrclose _can_replacerOremoverOSError_replacer)r%deleter r r rs z_AtomicFile.closecCs t|j|Sr)rrr:r r r r;sz_AtomicFile.__getattr__cCs|Srr r3r r r __enter__sz_AtomicFile.__enter__cCs|j|dk ddS)N)r)r)r%exc_type exc_valuetbr r r __exit__sz_AtomicFile.__exit__cCs t|jSr)reprrr3r r r __repr__sz_AtomicFile.__repr__N)F) r6r7r8r$propertyrrr;rrrr r r r rs  rcCs td|S)NrC)_ansi_resubrar r r strip_ansisrcCs&|dkr |dkrtj}t| S| Sr)rrTr5)rcolorr r r should_strip_ansis  rO)rZcCsddl}|Srg)localeZgetpreferredencoding)rr r r _get_argv_encodingsrrCcCs2tj|rt}||t}|dS)Nz )rrXr)_default_text_stdoutr,_default_text_stdinr=rstrip)promptrVrTr r r raw_inputs   rcszt|}Wntk r&d}YnX|dk r4|St||}tj||dj}|jfdd}||_z |t|<Wntk rYnX|S)aThis function wraps a stream so that calls through colorama are issued to the win32 console API to recolor on demand. It also ensures to reset the colors if a write call is interrupted to not destroy the console afterwards. N)stripcs&z |WSYnXdSr)Z reset_all)sZ_writeZ ansi_wrapperr r _safe_write9s  z'auto_wrap_for_ansi.._safe_write)_ansi_stream_wrappersgetr*rcoloramaZ AnsiToWin32rr,)rrcachedrrrr rr auto_wrap_for_ansi(s"   rcCs*tjtjjj}|j|j|j|jfSr) rZwin32ZGetConsoleScreenBufferInfoZSTDOUTZsrWindowZRightZLeftZBottomZTop)rr r r get_winterm_sizeGsrcCsttjddptS)Nr)rrrTr r r r r rLscGsdSrr rJr r r rKOrDcCs tt|Sr)lenrrJr r r term_lenRsrcCs&z |WStk r YdSXdSr)r5r*rpr r r r5Vs r5cstfdd}|S)Ncsf}z|}Wntk r,d}YnX|dk r:|S}z ||<Wntk r`YnX|Sr)rr*rcachesrc_func wrapper_funcr r func_s  z&_make_cached_stream_func..funcr)rrrr rr _make_cached_stream_func]srcCstjSr)rrTr r r r rKqrDcCstjSr)rrVr r r r rKsrDcCstjSr)rrXr r r r rKurD)rTrVrX)NN)NN)NN)F)F)NN)NN)NN)N)rNrF)NN)rC)N)Prer"rOrrweakrefr version_infor9platform startswithZWINZDEFAULT_COLUMNScompilerr rrrr#robjectr ZunicodeZ text_typer'r_rZ string_typesrIZxrangeZ range_typer(rQrNrPrSrUrWrYr\r]r^rcinputrangerjrkrnrorqrrrtrurrr}rrrrenamerrrrrrZ _winconsolerZr ImportErrorrrr5rrrZ_default_text_stderrZbinary_streamsZ text_streamsr r r r s    "9             1 %