a 4dgk@sgdZddlZddlZddlZddlZddl Z ddl Z ddl mZddlZddlZddlZddlZejZejejBejBZeedreejOZeZeedreej OZeedrej!Z!ndZ!dZ"eZ#d d Z$d d Z%d dZ&GdddZ'ddZ(ddZ)da*ddZ+ddZ,ddZ-ddZ.da/ddZ0dd Z1ddd0d1d2Z7ej8d3ksej9d4kre7Z:need5a;d?dd0d6d7Z:Gd8d9d9ZdS)@) NamedTemporaryFile TemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAX gettempprefixtempdir gettempdirgettempprefixb gettempdirbN)Random O_NOFOLLOWO_BINARYri'tmpcCs,zt|Wnty"YdS0dSdS)NFT)_oslstatOSError)fnr$/usr/local/lib/python3.9/tempfile.py_existsLs  rcGs\d}|D]B}|durqt|tr6|tur0tdt}q|turFtdt}q|durXtS|S)Nz1Can't mix bytes and non-bytes in path components.) isinstancebytesstr TypeError)args return_typeargrrr_infer_return_typeUs r!cCsdt|||}|dur|}|dur:|tur0t}n tt}|durX|turRt}nt}||||fSN)r!rtemplaterfsencoder r )prefixsuffixdir output_typerrr_sanitize_paramsjs  r)c@s,eZdZdZeddZddZddZdS) _RandomNameSequence%abcdefghijklmnopqrstuvwxyz0123456789_cCs,t}|t|ddkr&t|_||_|jS)N_rng_pid)rgetpidgetattr_Random_rngr,)selfcur_pidrrrrngs z_RandomNameSequence.rngcCs|Sr"rr1rrr__iter__sz_RandomNameSequence.__iter__cs0|j|jjfddtdD}d|S)Ncsg|] }qSrr).0dummycchooserr z0_RandomNameSequence.__next__..) charactersr3choicerangejoin)r1lettersrr8r__next__sz_RandomNameSequence.__next__N)__name__ __module__ __qualname__r?propertyr3r5rDrrrrr*|s  r*c Csg}dD]}t|}|r||qtjdkrX|tjdtjdddddgn|gd z|tWn"t t fy|tj Yn0|S) N)TMPDIRTEMPTMPntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmp)z/tmpz/var/tmpz/usr/tmp) rgetenvappendnameextendpath expanduser expandvarsgetcwdAttributeErrorrcurdir)dirlistenvnamedirnamerrr_candidate_tempdir_lists   rZc Csht}t}|D]@}|tjkr,tj|}tdD]}t|}tj||}zt |t d}zdzHt j |ddd}| dWdn1s0YWt |n t |0Wt|n t|0|WStyYq4ty6tjdkr,tj|r,t|tjr,Yq4YqYq4tyNYqYq40q4qttjd|dS) NdwbF)closefdsblatrLz)No usable temporary directory found in %s)r*rZrrVrQabspathrAnextrBopen_bin_openflags_iowritecloseunlinkFileExistsErrorPermissionErrorrOisdiraccessW_OKrFileNotFoundError_errnoENOENT)namerrWr'seqrOfilenamefdfprrr_get_default_tempdirs@    *   rtcCs:tdur6tztdur taWtn t0tSr")_name_sequence _once_lockacquirer*releaserrrr_get_candidate_namessryc Cst}|turttj|}ttD]}t|}tj ||||}t d|zt ||d} WnRt yxYq"Yn>tytjdkrtj|rt|tjrYq"nYn0| tj|fSt tjddS)Nztempfile.mkstempr\rLz#No usable temporary file name found)ryrmaprr$rArr`rQrB_sysauditrargrhrOrirjrkr_rmEEXIST) r'presufflagsr(namesrprOfilerrrrr_mkstemp_inners*      rcCstSr")r#rrrrr sr cCs ttSr")rr$r rrrrr sr cCs:tdur6tztdur taWtn t0tSr")r rvrwrtrxrrrrr sr cCs ttSr")rr$r rrrrr $sr FcCs2t|||\}}}}|rt}nt}t|||||Sr")r)_text_openflagsrbr)r&r%r'textr(rrrrr(s rc Cst|||\}}}}t}|tur.ttj|}ttD]}t|}tj ||||}t d|zt |dWnRtyYq6Yn>tytjdkrtj |rt|tjrYq6nYn0|SttjddS)Nztempfile.mkdtemprLz(No usable temporary directory name found)r)ryrrzrr$rArr`rQrBr{r|mkdirrgrhrOrirjrkrmr})r&r%r'r(rrprOrrrrrOs,       rr>cCs`|durt}t}ttD]2}t|}tj||||}t|s|Sqt t j ddS)Nz"No usable temporary filename found) r ryrArr`rrQrBrrgrmr})r&r%r'rrprOrrrrrws  rc@sHeZdZdZdZd ddZejdkreZdZdddZddZddZdd Zd d Zd d ZdS)_TemporaryFileWrapperTcCs$||_||_||_t||||_dSr")rrOrr_closerrrrrrsz_TemporaryFileWrapper.__init__cs^|jd}t||}t|drD|tfdd}|j|_|}t|tsZt||||S)Nr__call__cs|i|Sr"r)rkwargsfuncrr func_wrappersz7_TemporaryFileWrapper.__getattr__..func_wrapper) __dict__r.hasattr _functoolswrapsrrintsetattr)r1rOrarrrr __getattr__s     z!_TemporaryFileWrapper.__getattr__cCs|j|Sr")r __enter__r4rrrrs z_TemporaryFileWrapper.__enter__cCs|j|||}||Sr")r__exit__re)r1excvaluetbresultrrrrsz_TemporaryFileWrapper.__exit__cCs|jdSr")rrer4rrrresz_TemporaryFileWrapper.closeccs|jD] }|VqdSr")r)r1linerrrr5s z_TemporaryFileWrapper.__iter__N)T) rErFrGrrrrrer5rrrrrs  rw+bTerrorscCst|||\}}}} t} tjdkr0|r0| tjO} t|||| | \} } z$tj| |||||d} t| | |WSt yt | t | Yn0dS)NrL bufferingnewlineencodingr) r)rbrrO O_TEMPORARYrrcrar BaseExceptionrfre)moderrrr&r%r'rrr(rrrrOrrrrrs     rposixcygwin O_TMPFILEc Cst|||\}}}}t} trz$| tjBtj@} t|| d} Wn&tyVdaYnDtyfYn40zt j| |||||dWSt | Yn0t |||| |\} } z"t | t j| |||||dWSt | Yn0dS)Nr\Fr) r)rb_O_TMPFILE_WORKSrrO_CREATraIsADirectoryErrorrrcrerrf) rrrrr&r%r'rr(rflags2rrrOrrrr3s6       rc@seZdZdZd7ddddZeejZd d Z d d Z d dZ ddZ ddZ ddZeddZeddZeddZddZddZdd Zed!d"Zed#d$Zed%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd8d1d2Zd3d4Zd5d6Z dS)9rFrrrNrc  CsTd|vrt|_ntjt|| |d|_||_d|_|||||||| d|_dS)Nb)rrrF)rrr&r%rrr'r)rcBytesIO_file TextIOWrapper _max_size_rolled_TemporaryFileArgs) r1max_sizerrrrr&r%r'rrrrrvs  zSpooledTemporaryFile.__init__cCs,|jr dS|j}|r(||kr(|dSr")rrtellrollover)r1rrrrr_checks zSpooledTemporaryFile._checkcCsv|jr dS|j}tfi|j}|_|`|}t|drR|j| n|| | |dd|_dS)NbufferrT) rrrrrrrrddetachgetvalueseek)r1rnewfileposrrrrs   zSpooledTemporaryFile.rollovercCs|jjrtd|S)Nz%Cannot enter context with closed file)rclosed ValueErrorr4rrrrszSpooledTemporaryFile.__enter__cCs|jdSr"rrer1rrrrrrrszSpooledTemporaryFile.__exit__cCs |jSr")rr5r4rrrr5szSpooledTemporaryFile.__iter__cCs|jdSr"rr4rrrreszSpooledTemporaryFile.closecCs|jjSr")rrr4rrrrszSpooledTemporaryFile.closedcCs|jjSr")rrr4rrrrszSpooledTemporaryFile.encodingcCs|jjSr")rrr4rrrrszSpooledTemporaryFile.errorscCs||jSr")rrfilenor4rrrrszSpooledTemporaryFile.filenocCs|jdSr")rflushr4rrrrszSpooledTemporaryFile.flushcCs |jSr")risattyr4rrrrszSpooledTemporaryFile.isattycCs,z |jjWSty&|jdYS0dS)Nr)rrrUrr4rrrrs  zSpooledTemporaryFile.modecCs$z |jjWStyYdS0dSr")rrOrUr4rrrrOs  zSpooledTemporaryFile.namecCs|jjSr")rnewlinesr4rrrrszSpooledTemporaryFile.newlinescGs |jj|Sr")rreadr1rrrrrszSpooledTemporaryFile.readcGs |jj|Sr")rreadlinerrrrrszSpooledTemporaryFile.readlinecGs |jj|Sr")r readlinesrrrrrszSpooledTemporaryFile.readlinescGs |jj|Sr")rrrrrrrszSpooledTemporaryFile.seekcCs |jSr")rrr4rrrrszSpooledTemporaryFile.tellcCs6|dur|jn||jkr&||j|dSr")rtruncaterr)r1sizerrrrs   zSpooledTemporaryFile.truncatecCs|j}||}|||Sr")rrdr)r1srrvrrrrds  zSpooledTemporaryFile.writecCs|j}||}|||Sr")r writelinesr)r1iterablerrrrrrs  zSpooledTemporaryFile.writelines)rrrNNNNN)N)!rErFrGrr classmethod_types GenericAlias__class_getitem__rrrrr5rerHrrrrrrrrOrrrrrrrrdrrrrrrosJ         rc@sXeZdZdddZeddZeddZdd Zd d Zd d Z ddZ ee j Z dS)rNcCs0t||||_tj||j|jd|d|_dS)NzImplicitly cleaning up {!r}) warn_message)rrO_weakreffinalize_cleanupformat _finalizer)r1r&r%r'rrrr s  zTemporaryDirectory.__init__cs fdd}tj|ddS)Nc st|dtrdd}zT|kr0|tj|||zt|Wn ttfyf|Yn0Wqty|Yq0nt|dtrndS)NrcSs4zt|dWnty"Yn0t|ddS)Nrr)rchflagsrUchmod)rQrrr resetpermss  z?TemporaryDirectory._rmtree..onerror..resetperms) issubclassrhrrQrYrfr_rmtreerl)rrQexc_inforclsrOrronerrors z+TemporaryDirectory._rmtree..onerror)r)_shutilrmtree)rrOrrrrrszTemporaryDirectory._rmtreecCs||t|tdSr")r _warningswarnResourceWarning)rrOrrrrr.s zTemporaryDirectory._cleanupcCsd|jj|jS)Nz <{} {!r}>)r __class__rErOr4rrr__repr__3szTemporaryDirectory.__repr__cCs|jSr")rOr4rrrr6szTemporaryDirectory.__enter__cCs |dSr")cleanuprrrrr9szTemporaryDirectory.__exit__cCs|jr||jdSr")rrrrOr4rrrr<s zTemporaryDirectory.cleanup)NNN)rErFrGrrrrrrrrrrrrrrrrs   r)NNNF)NNN)rrNNNNNT)rrNNNNN)?__all__ functoolsrwarningsriorcosrshutilrerrnormrandomrr/sysr{typesrweakrefr_thread allocate_lock_allocate_lockO_RDWRrO_EXCLrrrrbrrr#rvrr!r)r*rZrtruryrr r r r r rrrrrrrOplatformrrrobjectrrrrrsx        -  ' ( +? '  <