a =jg*I @s~UddlZddlZddlZddlZddlZddlZddlmZej dZ ej dZ dZ ejejejgejfed<edZdjejejeejeeeejdd d Zeed d d ZejejedddZGdddejZGdddZdkejejeedddZdlejejeedddZ ejejejejdddZ!ejejejejdddZ"ejedddZ#ejeejeed d!d"Z$ejejeejeed#d$d%Z%dmejejejeejeejejejegefejejejgejejfeeejd&d'd(Z&dnejejejeejeeejd)d*d+Z'doejejejeejeeejd,d-d.Z(ejd/d0d1Z)ejd/d2d3Z*ejd/d4d5Z+dpejeejeejd6d7d8Z,dqejeejeejd6d9d:Z-drejeejeejd6d;d<Z.ej/ed=e0feejeejeejejd>d?d@Z1dsdCeejeejeeej2ejejefdDdEdFZ3GdGdHdHZ4eedIdJdKZ5ejejeddLdMZ6dtejejejejeedNdOdPZ7ej drJe rJdQdRl8m9Z9ed/dSdTZ:eZ;ejejgejejfejgejfejgejejfd`dadbZ?e?dcdde,Z@e?dedde-ZAe?dfdde.ZBe)e*e+dgZCejDeejgejffedh<e,e-e.dgZEejDeejejeejegejffedi<dS)vN)WeakKeyDictionarycygwinwinauto_wrap_for_ansiz\033\[[;?0-9]*[a-zA-Z]F)streamencodingerrorsforce_readableforce_writablereturncCs0|durt|}|durd}t|||d||dS)NreplaceT)line_bufferingr r )get_best_encoding_NonClosingTextIOWrapper)rrrr r r7/usr/local/lib/python3.9/site-packages/click/_compat.py_make_text_streamsr)rr cCs,zt|jdkWSty&YdS0dS)z$Checks if a given encoding is ascii.asciiFN)codecslookupname LookupError)rrrris_ascii_encoding$s r)rr cCs$t|ddpt}t|r dS|S)z1Returns the default stream encoding if not found.rNzutf-8)getattrsysgetdefaultencodingrrrvrrrr,src s\eZdZd ejejeejeeeejddfdd Z ddddZ edd d Z Z S) rFN)rrrr r extrar c s8ttjt||||_}tj|||fi|dSN)tcastBinaryIO _FixupStream_streamsuper__init__)selfrrrr r r __class__rrr&5s  z!_NonClosingTextIOWrapper.__init__r cCs$z |WntyYn0dSr)detach Exceptionr'rrr__del__Cs  z _NonClosingTextIOWrapper.__del__cCs |jSr)r$isattyr-rrrr/Isz_NonClosingTextIOWrapper.isatty)FF) __name__ __module__ __qualname__r r"OptionalstrboolAnyr&r.r/ __classcell__rrr(rr4src@sreZdZdZdejeedddZeej dddZ e e d d d Z ed d dZed ddZed ddZdS)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). F)rr r cCs||_||_||_dSr)r$_force_readable_force_writable)r'rr r rrrr&Xsz_FixupStream.__init__rr cCs t|j|Sr)rr$r'rrrr __getattr__bsz_FixupStream.__getattr__)sizer cCs2t|jdd}|dur&tt||S|j|S)Nread1)rr$r r!bytesread)r'r=frrrr>esz_FixupStream.read1r*cCsX|jr dSt|jdd}|dur.tt|Sz|jdWntyRYdS0dS)NTreadablerF)r8rr$r r!r5r@r,r'xrrrrBms z_FixupStream.readablec Cs~|jr dSt|jdd}|dur.tt|Sz|jdWn:tyxz|jdWntyrYYdS0Yn0dS)NTwritableF)r9rr$r r!r5writer,rCrrrrEys  z_FixupStream.writablecCsTt|jdd}|dur$tt|Sz|j|jWntyNYdS0dS)NseekableFT)rr$r r!r5seektellr,rCrrrrIs z_FixupStream.seekableN)FF)r0r1r2__doc__r r"r5r&r4r6r<intr?r>rBrErIrrrrr#Ns   r#)rdefaultr cCs.zt|dtWSty(|YS0dSNr) isinstancer@r?r,rrNrrr_is_binary_readers rRc CsPz|dWn<tyJz|dWYdSty@Yn0|YS0dS)NrGrFFT)rHr,rQrrr_is_binary_writers    rScCsHt|drttj|St|dd}|durDt|drDttj|SdSNFbufferT)rRr r!r"rrbufrrr_find_binary_readers   rXcCsHt|drttj|St|dd}|durDt|drDttj|SdSrT)rSr r!r"rrVrrr_find_binary_writers   rYcCstt|ddpdS)z3A stream is misconfigured if its encoding is ASCII.rNr)rrrrrr_stream_is_misconfiguredsr[)rattrvaluer cCs$t||d}||kp"|duo"|duS)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)rr\r]Z stream_valuerrr_is_compat_stream_attrs r^)rrrr cCst|d|ot|d|S)zcCheck if a stream's encoding and errors attributes are compatible with the desired values. rr)r^)rrrrrr_is_compatible_text_streams  r_) text_streamrr is_binary find_binaryr r r c Cs~||drttj|}nFttj|}t|||rH|durDt|sH|S||}|dur\|S|}|durld}t|||||dS)NFr )r r )r r!r"TextIOr_r[r) r`rrrarbr r Z binary_readerZpossible_binary_readerrrr_force_correct_text_streams,  rd) text_readerrrr r cCst|||tt|dS)Nr )rdrRrX)rerrr rrr_force_correct_text_readersrg) text_writerrrr r cCst|||tt|dS)Nr )rdrSrY)rhrrr rrr_force_correct_text_writer(srjr*cCsttj}|durtd|S)Nz6Was not able to determine binary stream for sys.stdin.)rXrstdin RuntimeError)readerrrrget_binary_stdin8s rncCsttj}|durtd|S)Nz7Was not able to determine binary stream for sys.stdout.)rYrstdoutrlwriterrrrget_binary_stdout?s rrcCsttj}|durtd|S)Nz7Was not able to determine binary stream for sys.stderr.)rYrstderrrlrprrrget_binary_stderrFs rt)rrr cCs,ttj||}|dur|Sttj||ddS)NTrf)_get_windows_console_streamrrkrgrrrrrrget_text_stdinMsrwcCs,ttj||}|dur|Sttj||ddSNTri)rurrorjrvrrrget_text_stdoutVsrycCs,ttj||}|dur|Sttj||ddSrx)rurrsrjrvrrrget_text_stderr_srzzos.PathLike[str])filemoderrr cCs"d|vrt||St||||dS)z?Handles not passing ``encoding`` and ``errors`` in binary mode.brr)open)r{r|rrrrr _wrap_io_openhs rrstrictzt.Union[str, os.PathLike[str]])filenamer|rratomicr c s8dv}t|}t|dkrrtfdddDrT|rDtdfSt||ddfS|rbtdfSt||ddfS|st|||dfSd vrt d d vrt d d vrt dddl }ddl }zt |j }Wntyd}Yn0tjtjBtjB} |r| ttddO} tjtj|d|dd} z&t| | |durTdn|} WqWnty} zf| j |jkstjdkr| j |jkrtj| jrt| jtjrWYd} ~ qWYd} ~ n d} ~ 00q|durt| |t| ||} t | | tj!|}t"#t"j$t"j%|dfS)Nr}-c3s|]}|vVqdSrr).0mr|rr rGzopen_stream..)warDFr~TrzAppending 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.rDz&Use the `overwrite`-parameter instead.rz,Atomic writes only make sense with `w`-mode.rO_BINARYz.__atomic-writel08xint)&osfspathfsdecodeanyrrryrnrwr ValueErrorerrnorandomstatst_modeOSErrorO_RDWRO_CREATO_EXCLrpathjoindirname randrangerEEXISTrEACCESisdirraccessW_OKchmod _AtomicFilerealpathr r!IOr6)rr|rrrbinaryrrpermflags tmp_filenamefderAafrrr open_streamusj           rc@seZdZejejeeddddZeedddZ de dd d d Z eejd d dZ ddddZ ejejeejddddZedddZdS)rN)rAr real_filenamer cCs||_||_||_d|_dSNF)_f _tmp_filename_real_filenameclosed)r'rArrrrrr&sz_AtomicFile.__init__r*cCs|jSr)rr-rrrrsz_AtomicFile.nameF)deleter cCs.|jr dS|jt|j|jd|_dS)NT)rrcloserr rr)r'rrrrrs  z_AtomicFile.closer:cCs t|j|Sr)rrr;rrrr<sz_AtomicFile.__getattr__cCs|Srrr-rrr __enter__sz_AtomicFile.__enter__)exc_type_r cGs|j|duddS)N)r)r)r'rrrrr__exit__sz_AtomicFile.__exit__cCs t|jSr)reprrr-rrr__repr__sz_AtomicFile.__repr__)F)r0r1r2r rr6r4r&propertyrr5rr<rr3Type BaseExceptionrrrrrrrs r)r]r cCs td|S)NrF)_ansi_resub)r]rrr strip_ansisrcCs$t|ttfr|j}q|jjdS)Nz ipykernel.)rPr#rr$r)r1 startswithrZrrr_is_jupyter_kernel_outputsr)rcolorr cCs0|dur*|durtj}t| o(t| S| Sr)rrkr/r)rrrrrshould_strip_ansis r)rucCsddl}|SrO)localegetpreferredencoding)rrrr_get_argv_encodingsr_ansi_stream_wrapperscszt|}Wnty$d}Yn0|dur2|Sddl}t||}|j||dttjj }|j fdd}||_ z |t|<WntyYn0|S)zbSupport ANSI color and style codes on Windows by wrapping a stream with colorama. Nr)stripcs,z |WSty&Yn0dSr)rZ reset_all)s_writeZ ansi_wrapperrr _safe_writes   z'auto_wrap_for_ansi.._safe_write) rgetr,coloramarZ AnsiToWin32r r!rcrrH)rrcachedrrrrrrrrs$     cCsttjddptS)Nr)rrrkgetfilesystemencodingrrrrr.s)rArrr cCsdSrr)rArrrrrru1sru)rDr cCs tt|Sr)lenr)rDrrrterm_len7srcCs$z |WStyYdS0dSr)r/r,rZrrrr/;s  r/)src_func wrapper_funcr cs(ttjtjdfdd }|S)Nr*csn}|durdSz|}Wnty6d}Yn0|durD|S}z ||<WntyhYn0|Sr)rr,rcacherrrrfuncHs    z&_make_cached_stream_func..func)rr r3rc)rrrrrr_make_cached_stream_funcBsrcCstjSr)rrkrrrr^rGrcCstjSr)rrorrrrr_rGcCstjSr)rrsrrrrr`rG)rkrorsbinary_streams text_streams)FF)F)F)FF)F)F)NN)NN)NN)rNrF)NN)N)Friorrertypingr weakrefrplatformrZCYGWINZWINrr3Callablerc__annotations__compilerr"r4r5rrrr6r TextIOWrapperrr#rRrSrXrYr[r^r_rdrgrjrnrrrtrwryrzUnionrMrTuplerrrrrZ _winconsolerurrMutableMappingrr/rZ_default_text_stdinZ_default_text_stdoutZ_default_text_stderrrMappingrrrrrs    "  E        2         Q   '  $ "