a DOg;m@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.ddZ/dd Z0da1d!d"Z2d#d$Z3d@d&d'Z4dAd(d)Z5d*e"dfd+d,Z6Gd-d.d.Z7Gd/d0d0Z8dBdd4d5d6Z9ej:d7ksej;d8kre9ZGd>d?d?e?Z@dS)D) NamedTemporaryFile TemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAX gettempprefixtempdir gettempdirgettempprefixb gettempdirbN)Random O_NOFOLLOWO_BINARYri'tmpcCs,zt|Wnty"YdS0dSdS)NFT)_oslstatOSError)fnr /usr/lib64/python3.9/tempfile.py_existsLs  rcGsrd}|D]X}|durqt|tjr,t|}t|trL|turFtdt}q|tur\tdt}q|durntS|S)Nz1Can't mix bytes and non-bytes in path components.) isinstancerPathLikefspathbytesstr 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_paramsns  r+c@s,eZdZdZeddZddZddZdS) _RandomNameSequence%abcdefghijklmnopqrstuvwxyz0123456789_cCs,t}|t|ddkr&t|_||_|jS)N_rng_pid)rgetpidgetattr_Random_rngr.)selfcur_pidrrrrngs z_RandomNameSequence.rngcCs|Sr$rr3rrr__iter__sz_RandomNameSequence.__iter__cs0|j|jjfddtdD}d|S)Ncsg|] }qSrr).0dummycchooserr z0_RandomNameSequence.__next__..) charactersr5choicerangejoin)r3lettersrr:r__next__sz_RandomNameSequence.__next__N)__name__ __module__ __qualname__rApropertyr5r7rFrrrrr,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   r\c 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)closefdsblatrNz)No usable temporary directory found in %s)r,r\rrXrSabspathrCnextrDopen_bin_openflags_iowritecloseunlinkFileExistsErrorPermissionErrorrQisdiraccessW_OKrFileNotFoundError_errnoENOENT)namerrYr)seqrQfilenamefdfprrr_get_default_tempdirs@    *   rvcCs:tdur6tztdur taWtn t0tSr$)_name_sequence _once_lockacquirer,releaserrrr_get_candidate_namessr{c Cst}|turttj|}ttD]}t|}tj ||||}t d|zt ||d} WnRt yxYq"Yn>tytjdkrtj|rt|tjrYq"nYn0| tj|fSt tjddS)Nztempfile.mkstempr^rNz#No usable temporary file name found)r{rmaprr&rCrrbrSrD_sysauditrcrirjrQrkrlrmraroEEXIST) r)presufflagsr*namesrrrQfilertrrr_mkstemp_inners*      rcGsL|tjvr"||g|Rddin&tjdks8tj|sH||g|RdS)Nfollow_symlinksFrN)rsupports_follow_symlinksrQrSislink)funcrSr rrr_dont_follow_symlinkss rcCs<z tj}WntyYn0t||dttj|ddS)Nr)rchflagsrWrchmod)rSrrrr _resetpermss    rcCstSr$)r%rrrrr "sr cCs ttSr$)rr&r rrrrr &sr cCs:tdur6tztdur taWtn t0tSr$)r rxryrvrzrrrrr ,sr cCs ttSr$)rr&r rrrrr 8sr FcCs2t|||\}}}}|rt}nt}t|||||Sr$)r+_text_openflagsrdr)r(r'r)textr*rrrrr<s rc Cst|||\}}}}t}|tur.ttj|}ttD]}t|}tj ||||}t d|zt |dWnRtyYq6Yn>tytjdkrtj |rt|tjrYq6nYn0|SttjddS)Nztempfile.mkdtemprrNz(No usable temporary directory name found)r+r{rr|rr&rCrrbrSrDr}r~mkdirrirjrQrkrlrmror)r(r'r)r*rrrrQrrrrrcs,       rr@cCs`|durt}t}ttD]2}t|}tj||||}t|s|Sqt t j ddS)Nz"No usable temporary filename found) r r{rCrrbrrSrDrriror)r(r'r)rrrrQrrrrrs  rc@sHeZdZdZdZd ddZejdkreZdZdddZddZddZdd Zd d Zd d ZdS)_TemporaryFileWrapperTcCs$||_||_||_t||||_dSr$)rrQrr_closerrrrrrsz_TemporaryFileWrapper.__init__cs^|jd}t||}t|drD|tfdd}|j|_|}t|tsZt||||S)Nr__call__cs|i|Sr$r)r kwargsrrr func_wrappersz7_TemporaryFileWrapper.__getattr__..func_wrapper) __dict__r0hasattr _functoolswrapsrrintsetattr)r3rQrarrrr __getattr__s     z!_TemporaryFileWrapper.__getattr__cCs|j|Sr$)r __enter__r6rrrrs z_TemporaryFileWrapper.__enter__cCs|j|||}||Sr$)r__exit__rg)r3excvaluetbresultrrrrsz_TemporaryFileWrapper.__exit__cCs|jdSr$)rrgr6rrrrgsz_TemporaryFileWrapper.closeccs|jD] }|VqdSr$)r)r3linerrrr7 s z_TemporaryFileWrapper.__iter__N)T) rGrHrIrrrrrgr7rrrrrs  rw+bTerrorscCst|||\}}}} t} tjdkr0|r0| tjO} t|||| | \} } z$tj| |||||d} t| | |WSt yt | t | Yn0dS)NrN bufferingnewlineencodingr) r+rdrrQ O_TEMPORARYrrercr BaseExceptionrhrg)moderrrr(r'r)rrr*rrtrQrrrrrs     rposixcygwin O_TMPFILEc Cst|||\}}}}t} trz$| tjBtj@} t|| d} Wn&tyVdaYnDtyfYn40zt j| |||||dWSt | Yn0t |||| |\} } z"t | t j| |||||dWSt | Yn0dS)Nr^Fr) r+rd_O_TMPFILE_WORKSrrO_CREATrcIsADirectoryErrorrrergrrh) rrrrr(r'r)rr*rflags2rtrQrrrrGs6       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)reBytesIO_file TextIOWrapper _max_size_rolled_TemporaryFileArgs) r3max_sizerrrrr(r'r)rrrrrs  zSpooledTemporaryFile.__init__cCs,|jr dS|j}|r(||kr(|dSr$)rrtellrollover)r3rrrrr_checks zSpooledTemporaryFile._checkcCsv|jr dS|j}tfi|j}|_|`|}t|drR|j| n|| | |dd|_dS)NbufferrT) rrrrrrrrfdetachgetvalueseek)r3rnewfileposrrrrs   zSpooledTemporaryFile.rollovercCs|jjrtd|S)Nz%Cannot enter context with closed file)rclosed ValueErrorr6rrrrszSpooledTemporaryFile.__enter__cCs|jdSr$rrgr3rrrrrrrszSpooledTemporaryFile.__exit__cCs |jSr$)rr7r6rrrr7szSpooledTemporaryFile.__iter__cCs|jdSr$rr6rrrrgszSpooledTemporaryFile.closecCs|jjSr$)rrr6rrrrszSpooledTemporaryFile.closedcCs|jjSr$)rrr6rrrrszSpooledTemporaryFile.encodingcCs|jjSr$)rrr6rrrrszSpooledTemporaryFile.errorscCs||jSr$)rrfilenor6rrrrszSpooledTemporaryFile.filenocCs|jdSr$)rflushr6rrrrszSpooledTemporaryFile.flushcCs |jSr$)risattyr6rrrrszSpooledTemporaryFile.isattycCs,z |jjWSty&|jdYS0dS)Nr)rrrWrr6rrrrs  zSpooledTemporaryFile.modecCs$z |jjWStyYdS0dSr$)rrQrWr6rrrrQs  zSpooledTemporaryFile.namecCs|jjSr$)rnewlinesr6rrrrszSpooledTemporaryFile.newlinescGs |jj|Sr$)rreadr3r rrrrszSpooledTemporaryFile.readcGs |jj|Sr$)rreadlinerrrrrszSpooledTemporaryFile.readlinecGs |jj|Sr$)r readlinesrrrrrszSpooledTemporaryFile.readlinescGs |jj|Sr$)rrrrrrrszSpooledTemporaryFile.seekcCs |jSr$)rrr6rrrrszSpooledTemporaryFile.tellcCs6|dur|jn||jkr&||j|dSr$)rtruncaterr)r3sizerrrrs   zSpooledTemporaryFile.truncatecCs|j}||}|||Sr$)rrfr)r3srrvrrrrfs  zSpooledTemporaryFile.writecCs|j}||}|||Sr$)r writelinesr)r3iterablerrrrrr s  zSpooledTemporaryFile.writelines)rrrNNNNN)N)!rGrHrIrr classmethod_types GenericAlias__class_getitem__rrrrr7rgrJrrrrrrrrQrrrrrrrrfrrrrrrsJ         rc@sXeZdZdddZeddZeddZdd Zd d Zd d Z ddZ ee j Z dS)rNcCs0t||||_tj||j|jd|d|_dS)NzImplicitly cleaning up {!r}) warn_message)rrQ_weakreffinalize_cleanupformat _finalizer)r3r(r'r)rrrrs  zTemporaryDirectory.__init__cs fdd}tj|ddS)Nc st|dtrxzT|kr(ttj|t|zt|Wn ttfy^|Yn0Wqt ytYq0nt|dt rndS)Nr) issubclassrjrrrSr[rhr_rmtreern)rrSexc_infoclsrQrronerror&s z+TemporaryDirectory._rmtree..onerror)r)_shutilrmtree)rrQrrrrr$szTemporaryDirectory._rmtreecCs||t|tdSr$)r _warningswarnResourceWarning)rrQrrrrr;s zTemporaryDirectory._cleanupcCsd|jj|jS)Nz <{} {!r}>)r __class__rGrQr6rrr__repr__@szTemporaryDirectory.__repr__cCs|jSr$)rQr6rrrrCszTemporaryDirectory.__enter__cCs |dSr$)cleanuprrrrrFszTemporaryDirectory.__exit__cCs|jr||jdSr$)rrrrQr6rrrrIs zTemporaryDirectory.cleanup)NNN)rGrHrIrrrrrrrrrrrrrrrrs   r)NNNF)NNN)rrNNNNNT)rrNNNNN)A__all__ functoolsrwarningsrioreosrshutilrerrnororandomrr1sysr}typesrweakrefr_thread allocate_lock_allocate_lockO_RDWRrO_EXCLrrrrdrrr%rxrr#r+r,r\rvrwr{rrrr r r r r rrrrrrrQplatformrrrobjectrrrrrs|        -   ' ( +? '  <