B x `i^@sddlZddlZddlZddlZddlZddlmZejddkZej dZ ej dobdej kZ dejko~dejd d kZej doe oe Zd Zed Zd dZd{ddZddZddZGdddejZGdddeZereZeZe efZ!e"e#fZ$ddZ%e&Z'ddZ(edZ)dd Z*y ddl+Z+Wne,k rPYn Xd!d Z*y ddl-Z-Wne,k r|Yn Xd"d Z*d#d$Z.d%d&Z/d'd(Z0d)d*Z1d|d+d,Z2d}d-d.Z3d~d/d0Z4d1d2Z5nddlZe Ze6Ze fZ!e"fZ$e7Z'd3dZ.d4dZ%d5dZ(dd6d7Z8dd8d9Z9d:d;Z:dd?ZddDdEZ?ddFdGZ@ddHdIZAdJd&Z/dKd(Z0dLd*Z1ddMd,Z2ddNd.Z3ddOd0Z4dPd2Z5ddQdRZBdSdTZCddWdXZDeEedYrejFZGdZZHn ejIZGe ZHGd[d\d\eZJdZKdZLdZMd]d^ZNd_d`ZOddadbZPerdcZdddelQmRZRmSZSdfdgZTerFddhdiZy ddlLZLWne,k rhYnXeZUddjdkZKdldmZMndndgZTdodZRdpdZSdqdrZVdsdtZWdudvZXeXdwde2ZYeXdxde3ZZeXdyde4Z[e/e0e1dzZ\e2e3e4dzZ]dS)N)WeakKeyDictionarycygwinwinZGCCAPPENGINE_RUNTIMEz Development/SERVER_SOFTWAREPz\033\[[;?0-9]*[a-zA-Z]cCstptS)N)sysgetfilesystemencodinggetdefaultencodingr r 1/tmp/pip-unpacked-wheel-za9e8r29/click/_compat.pyget_filesystem_encodingsrFcCs0|dkrt|}|dkrd}t|||d||dS)NreplaceT)line_bufferingforce_readableforce_writable)get_best_encoding_NonClosingTextIOWrapper)streamencodingerrorsrrr r r_make_text_streamsrcCs*yt|jdkStk r$dSXdS)z$Checks if a given encoding is ascii.asciiFN)codecslookupname LookupError)rr r ris_ascii_encoding,srcCs$t|ddpt}t|r dS|S)z1Returns the default stream encoding if not found.rNzutf-8)getattrr r r)rrvr r rr4src@s:eZdZd ddZer&ddZddZdd Zd d Zd S)rFcKs,t||||_}tjj||||f|dS)N) _FixupStream_streamio TextIOWrapper__init__)selfrrrrrextrar r rr&=s z!_NonClosingTextIOWrapper.__init__cCsRt|tst|rDy |Wntk r2YnX|jt|Stj||S)N) isinstancestris_bytesflush Exceptionbufferwriter$r%)r'xr r rr/Ns z_NonClosingTextIOWrapper.writecCsx|D]}||qWdS)N)r/)r'linesliner r r writelinesWs z#_NonClosingTextIOWrapper.writelinescCs&y |Wntk r YnXdS)N)detachr-)r'r r r__del__[s z _NonClosingTextIOWrapper.__del__cCs |jS)N)r#isatty)r'r r rr6asz_NonClosingTextIOWrapper.isattyN)FF) __name__ __module__ __qualname__r&PY2r/r3r5r6r r r rr<s  rc@sBeZdZdZdddZddZddZd d Zd d Zd dZ dS)r"aQThe new io interface needs more from streams than streams traditionally implement. As such, this fix-up code is necessary in some circumstances. The forcing of readable and writable flags are there because some tools put badly patched objects on sys (one such offender are certain version of jupyter notebook). FcCs||_||_||_dS)N)r#_force_readable_force_writable)r'rrrr r rr&psz_FixupStream.__init__cCs t|j|S)N)r r#)r'rr r r __getattr__usz_FixupStream.__getattr__cCs:t|jdd}|dk r||Str.|j|S|j|S)Nread1)r r#r:readlineread)r'sizefr r rr>xs  z_FixupStream.read1cCsP|jr dSt|jdd}|dk r&|Sy|jdWntk rJdSXdS)NTreadablerF)r;r r#r@r-)r'r0r r rrCsz_FixupStream.readablec Csv|jr dSt|jdd}|dk r&|Sy|jdWn:tk rpy|jdWntk rjdSXYnXdS)NTwritablerF)r<r r#r/r-)r'r0r r rrDs z_FixupStream.writablecCsLt|jdd}|dk r|Sy|j|jWntk rFdSXdS)NseekableFT)r r#seektellr-)r'r0r r rrFsz_FixupStream.seekableN)FF) r7r8r9__doc__r&r=r>rCrDrFr r r rr"fs   r"cCs|S)N) iteritems)r0r r rrErKcCst|ttfS)N)r)r. bytearray)r0r r rr+sr+z^[a-zA-Z_][a-zA-Z0-9_]*$cCs|S)Nr )rBr r rset_binary_modesrMcCs4y |}Wntk r YnXt|tj|S)N)filenor-msvcrtZsetmodeosO_BINARY)rBrNr r rrMs  cCsLy |}Wntk r Yn(Xt|tj}t|tj|tj@|S)N)rNr-fcntlZF_GETFLZF_SETFLrP O_NONBLOCK)rBrNflagsr r rrMs cCst|dk S)N)_identifier_research)r0r r r isidentifiersrWcCs ttjS)N)rMr stdinr r r rget_binary_stdinsrYcCstdttjS)Nstdout)_wrap_std_streamrMr rZr r r rget_binary_stdoutsr\cCstdttjS)Nstderr)r[rMr r]r r r rget_binary_stderrsr^cCs,ttj||}|dk r|Sttj||ddS)NT)r)_get_windows_console_streamr rXr)rrr!r r rget_text_stdinsr`cCs4tdttj||}|dk r"|Sttj||ddS)NrZT)r)r[r_r rZr)rrr!r r rget_text_stdouts racCs4tdttj||}|dk r"|Sttj||ddS)Nr]T)r)r[r_r r]r)rrr!r r rget_text_stderrs rbcCst|tr|td}|S)Nr)r)bytesdecoder)valuer r rfilename_to_ui s rfcCs|S)N)rW)r0r r rrKrEcCs t|S)N)iteritems)r0r r rrKrEcCst|tttfS)N)r)rc memoryviewrL)r0r r rr+scCs*yt|dtStk r$|SXdS)Nr)r)r@rcr-)rdefaultr r r_is_binary_reader srkc CsLy|dWn8tk rFy|ddStk r@YnX|SXdS)NrErFT)r/r-)rrjr r r_is_binary_writer(s rlcCs4t|dr|St|dd}|dk r0t|dr0|SdS)NFr.T)rkr )rbufr r r_find_binary_reader4s   rncCs4t|dr|St|dd}|dk r0t|dr0|SdS)NFr.T)rlr )rrmr r r_find_binary_writerCs   rocCstt|ddpdS)z3A stream is misconfigured if its encoding is ASCII.rNr)rr )rr r r_stream_is_misconfiguredRsrpcCs$t||d}||kp"|dko"|dk S)zA stream attribute is compatible if it is equal to the desired value or the desired value is unset and the attribute has a value. N)r )rattrreZ stream_valuer r r_is_compat_stream_attrZs rrcCst|d|ot|d|S)zkCheck if a stream's encoding and errors attributes are compatible with the desired values. rr)rr)rrrr r r_is_compatible_text_streambs rscCsb||dr|}n4t|||r0|dkr,t|s0|S||}|dkrD|S|dkrPd}t|||||dS)NFr)rr)rsrpr)Z text_streamrrZ is_binaryZ find_binaryrrZ binary_readerr r r_force_correct_text_streamjs  rtcCst|||tt|dS)N)r)rtrkrn)Z text_readerrrrr r r_force_correct_text_readersrucCst|||tt|dS)N)r)rtrlro)Z text_writerrrrr r r_force_correct_text_writersrvcCsttj}|dkrtd|S)Nz6Was not able to determine binary stream for sys.stdin.)rnr rX RuntimeError)readerr r rrYs cCsttj}|dkrtd|S)Nz7Was not able to determine binary stream for sys.stdout.)ror rZrw)writerr r rr\s  cCsttj}|dkrtd|S)Nz7Was not able to determine binary stream for sys.stderr.)ror r]rw)ryr r rr^s  cCs,ttj||}|dk r|Sttj||ddS)NT)r)r_r rXru)rrr!r r rr`s cCs,ttj||}|dk r|Sttj||ddS)NT)r)r_r rZrv)rrr!r r rras cCs,ttj||}|dk r|Sttj||ddS)NT)r)r_r r]rv)rrr!r r rrbs cCs2t|tr|td}n|dddd}|S)Nrzutf-8surrogateescape)r)rcrdrencode)rer r rrfs cCsBt|dr|j}n|dk r |}nt|}t|tr>|dd}|S)Nstrerrorzutf-8r)hasattrr|r*r)rcrd)erjmsgr r r get_streerrors   rc CsZd|k}|ri}n ||d}tr$|r4tj||f|St|d|dd}t|f|S)a+On Python 2, :func:`io.open` returns a text file wrapper that requires passing ``unicode`` to ``write``. Need to open the file in binary mode then wrap it in a subclass that can write ``str`` and ``unicode``. Also handles not passing ``encoding`` and ``errors`` in binary mode. b)rrz{}btr)r:r$openformatrr)filemoderrbinarykwargsrBr r r _wrap_io_opens rrstrictc sdk}|dkrbtfdddDrD|r4tdfSt||ddfS|rRtdfSt||ddfS|sxt|||dfSd krtd d krtd d krtdddl}ddl}yt |j }Wnt k rd}YnXt j t jBt jB} |r | tt ddO} xt jt j|d|d} y"t | | |dkrFdn|} PWntt k r} zT| j|jkst jdkr| j|jkrt j| jrt | jt jrw Wdd} ~ XYnXq W|dk rt | |t| ||} t| | t j |dfS)Nr-c3s|]}|kVqdS)Nr ).0m)rr r szopen_stream..)war0F)rrTrzAppending 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.r0z&Use the `overwrite`-parameter instead.rz,Atomic writes only make sense with `w`-mode.rrQz.__atomic-write{:08x}lint)!anyr\rarYr`r ValueErrorerrnorandomrPstatst_modeOSErrorO_RDWRO_CREATO_EXCLr pathjoindirnamer randrangerEEXISTrEACCESisdirfilenameaccessW_OKchmod _AtomicFilerealpath)rrrrZatomicrrrZpermrT tmp_filenamefdr~rBr )rr open_streams\       rrTc@sJeZdZddZeddZdddZdd Zd d Zd d Z ddZ dS)rcCs||_||_||_d|_dS)NF)_f _tmp_filename_real_filenameclosed)r'rBrZ real_filenamer r rr&Tsz_AtomicFile.__init__cCs|jS)N)r)r'r r rrZsz_AtomicFile.nameFcCsV|jr dS|jts>yt|jWntk r<YnXt|j |jd|_dS)NT) rrclose _can_replacerPremoverr_replacer)r'deleter r rr^s z_AtomicFile.closecCs t|j|S)N)r r)r'rr r rr=jsz_AtomicFile.__getattr__cCs|S)Nr )r'r r r __enter__msz_AtomicFile.__enter__cCs|j|dk ddS)N)r)r)r'exc_type exc_valuetbr r r__exit__psz_AtomicFile.__exit__cCs t|jS)N)reprr)r'r r r__repr__ssz_AtomicFile.__repr__N)F) r7r8r9r&propertyrrr=rrrr r r rrSs  rcCs td|S)Nr)_ansi_resub)rer r r strip_ansi|srcCs0trdSxt|ttfr |j}q W|jjdS)Nz ipykernel.)WINr)r"rr# __class__r8 startswith)rr r r_is_jupyter_kernel_outputs  rcCs0|dkr*|dkrtj}t| o(t| S| S)N)r rXr6r)rcolorr r rshould_strip_ansis rO)r_r[cCsddl}|S)Nr)localegetpreferredencoding)rr r r_get_argv_encodingsrcCs2tj|rt}||t}|dS)Nz )r r]r,_default_text_stdoutr/_default_text_stdinr?rstrip)promptrZrXr r r raw_inputs   rcsyt|}Wntk r&d}YnX|dk r4|St||}tj||dj}|jfdd}||_y |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$y|SYnXdS)N) reset_all)s)_write ansi_wrapperr r _safe_writes z'auto_wrap_for_ansi.._safe_write)_ansi_stream_wrappersgetr-rcolorama AnsiToWin32rr/)rrcachedrr!rr )rrrauto_wrap_for_ansis"   rcCs*tjtjjj}|j|j|j|jfS)N) rwin32GetConsoleScreenBufferInfoSTDOUTZsrWindowZRightZLeftZBottomZTop)rr r rget_winterm_sizes rcCsttjddptS)Nr)r r rXrr r r rrscGsdS)Nr )r0r r rrKrEcGsdS)Nr )r0r r rrKrEcCs tt|S)N)lenr)r0r r rterm_lensrcCs"y|Stk rdSXdS)NF)r6r-)rr r rr6sr6cstfdd}|S)Ncsl}y|}Wntk r,d}YnX|dk r:|S}y}||<Wntk rfYnX|S)N)rr-)rr!)cachesrc_func wrapper_funcr rfuncs  z&_make_cached_stream_func..func)r)rrrr )rrrr_make_cached_stream_funcsrcCstjS)N)r rXr r r rrKrEcCstjS)N)r rZr r r rrKrEcCstjS)N)r r]r r r rrKrE)rXrZr])FF)NN)NN)NN)F)F)FF)F)F)NN)NN)NN)N)rNrF)NN)r)N)^rr$rPrer weakrefr version_infor:platformrZCYGWINversionZMSYS2environrZ APP_ENGINErZDEFAULT_COLUMNScompilerrrrrr%robjectr"unicode text_typerr* string_typesintlong int_typesrJxrangeZ range_typer+rUrMrO ImportErrorrRrWrYr\r^r`rarbrfinputrangerkrlrnrorprrrsrtrurvrrrr}rrrrenamerrrrrrrZ _winconsoler_r[rrrr6rrrZ_default_text_stderrZbinary_streamsZ text_streamsr r r rs     *C            #      J $