3 �L�j�}�@s�dddddddddd d d d g Zd dlZd dlZd dlZd dlZd dl Z d dl Z d dl mZd dlmZd dlZy d dlZWnek r�d dlZYnXejZejejBejBZeed�r�eejOZeZ eed�r�e ej!OZ eed�r�ej"Z"ndZ"dZ#e�Z$eed��rej%Z&need��r$ejZ&ndd�Z&dd�Z'dd�Z(dd�Z)Gdd �d �Z*d!d"�Z+d#d$�Z,da-d%d&�Z.d'd(�Z/d)d*�Z0d+d,�Z1d-d.�Z2ej3ej4ejhej5k�o�ej3ej6kZ7d/d0�Z8yej9ej:BejBZ;Wned4d �Z?da@d5d �ZAd6d �ZBdJd8d�ZCdKd9d�ZDd:e#dfd;d�ZEGdd?�d?�ZGdMdCd�ZHejIdDk�s|ejJjKdEk�r�eHZLneedF�aMdOdGd�ZLGdHd�d�ZNGdId�deO�ZPdS)P�NamedTemporaryFile� TemporaryFile�SpooledTemporaryFile�TemporaryDirectory�mkstemp�mkdtemp�mktemp�TMP_MAX� gettempprefix�tempdir� gettempdir�gettempprefixb� gettempdirb�N)�Random)�S_ISLNK� O_NOFOLLOW�O_BINARYi'Ztmp�lstat�statcCstj|tj�}tj|�dS)N)�_os�open�O_RDONLY�close)�fn�fd�r� /usr/lib64/python3.6/tempfile.py�_statUsrc Cs*y t|�Wntk r dSXdSdS)NFT)r�OSError)rrrr�_existsYs  rcGs`d}xJ|D]B}|dkrq t|t�r8|tkr2td��t}q |tkrHtd��t}q W|dkr\tS|S)Nz1Can't mix bytes and non-bytes in path components.)� isinstance�bytes�str� TypeError)�argsZ return_type�argrrr�_infer_return_typebs  r&cCsdt|||�}|dkr|�}|dkr:|tkr0t}n tjt�}|dkrX|tkrRt�}nt�}||||fS)N)r&r"�templater�fsencoder r )�prefix�suffix�dir� output_typerrr�_sanitize_paramsws  r-c@s,eZdZdZedd��Zdd�Zdd�ZdS) �_RandomNameSequenceZ%abcdefghijklmnopqrstuvwxyz0123456789_cCs,tj�}|t|dd�kr&t�|_||_|jS)N�_rng_pid)r�getpid�getattr�_RandomZ_rngr/)�selfZcur_pidrrr�rng�s z_RandomNameSequence.rngcCs|S)Nr)r3rrr�__iter__�sz_RandomNameSequence.__iter__cs0|j�|jj���fdd�td�D�}dj|�S)Ncsg|] }����qSrr)�.0Zdummy)�c�chooserr� �sz0_RandomNameSequence.__next__..��)� charactersr4Zchoice�range�join)r3Zlettersr)r7r8r�__next__�sz_RandomNameSequence.__next__N)�__name__� __module__� __qualname__r<�propertyr4r5r?rrrrr.�s r.c Cs�g}x$dD]}tj|�}|r |j|�q Wtjdkr\|jtjjd�tjjd�ddd d g�n|jd d d g�y|jtj��Wn$t t fk r�|jtj �YnX|S)N�TMPDIR�TEMP�TMP�ntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmpz/tmpz/var/tmpz/usr/tmp)rDrErF) r�getenv�append�name�extend�path� expanduser� expandvars�getcwd�AttributeErrorr�curdir)�dirlistZenvname�dirnamerrr�_candidate_tempdir_list�s    rTcCs4t�}t�}�x|D�]}|tjkr0tjj|�}x�td�D]�}t|�}tjj||�}y\tj |t d�}zr�_bin_openflags�_io�writer�unlink�FileExistsError�PermissionErrorrJ�isdir�access�W_OKr�FileNotFoundError�_errno�ENOENT)ZnamerrRr+�seqrJ�filenamer�fprrr�_get_default_tempdir�s:    ric Cs2tdkr.tj�ztdkr t�aWdtj�XtS)N)�_name_sequence� _once_lock�acquirer.�releaserrrr�_get_candidate_names�s  rnc Cs�t�}|tkrttj|�}x�tt�D]�}t|�}tjj ||||�}ytj ||d�} WnRt k rnw$Yn>t k r�tj dkr�tjj|�r�tj|tj�r�w$n�YnX| tjj|�fSWt tjd��dS)Ni�rGz#No usable temporary file name found)rnr!�maprr(r=rrYrLr>rr^r_rJr`rarbrXrd�EEXIST) r+ZpreZsuf�flagsr,�namesrfrJ�filerrrr�_mkstemp_inner�s$ rtcGsJ|tjkr ||f|�ddi�n&tjdks8tjj|� rF||f|��dS)N�follow_symlinksFrG)r�supports_follow_symlinksrJrL�islink)�funcrLr$rrr�_dont_follow_symlinkss ryc Cs0y tj}Wntk rYnXt||d�dS)Nr)r�chflagsrPry)rLrzrrr� _resetflags s  r{cCst|�ttj|d�dS)Ni�)r{ryr�chmod)rLrrr� _resetperms(sr}cCs,|dkrt|�dSt|�tj|d�dS)Ni�)r}r{rr|)�dir_fdrLrrr�_resetperms_fd3s rcCs�|dkrt|�dSt|�tjtjkrt k r�tjdkr�tj j|�r�tj|tj�r�w8n�YnX|SWt tjd��dS)Ni�rGz(No usable temporary directory name found)r-rnr!rorr(r=rrYrLr>�mkdirr^r_rJr`rarbrdrp)r*r)r+r,rrrfrJrsrrrr�s&  r;cCs`|dkrt�}t�}x:tt�D].}t|�}tjj||||�}t|�s|SqWt t j d��dS)Nz"No usable temporary filename found) r rnr=rrYrrLr>rr^rdrp)r*r)r+rrrfrJrsrrrr�sc@sHeZdZdZdZd dd�Zejdkr|j r:|jdk r:d|_z|jj�Wd|jr8||j�XdS)NT)� close_calledrsrr�rJ)r3r]rrrrs z_TemporaryFileCloser.closecCs |j�dS)N)r)r3rrr�__del__ sz_TemporaryFileCloser.__del__cCs|jsd|_|jj�dS)NT)r�rsr)r3rrrrs)T) r@rArBrsr�r�rrJr]rr�rrrrr��s   r�c@s>eZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �ZdS)�_TemporaryFileWrapperTcCs$||_||_||_t|||�|_dS)N)rsrJr�r��_closer)r3rsrJr�rrrr�sz_TemporaryFileWrapper.__init__cs^|jd}t||�}t|d�rD|�tj���fdd��}|j|_|}t|t�sZt|||�|S)Nrs�__call__cs �||�S)Nr)r$�kwargs)rxrr� func_wrapper+sz7_TemporaryFileWrapper.__getattr__..func_wrapper) �__dict__r1�hasattr� _functools�wrapsr�r �int�setattr)r3rJrs�ar�r)rxr� __getattr__#s     z!_TemporaryFileWrapper.__getattr__cCs|jj�|S)N)rs� __enter__)r3rrrr�8s z_TemporaryFileWrapper.__enter__cCs|jj|||�}|j�|S)N)rs�__exit__r)r3�exc�value�tb�resultrrrr�>sz_TemporaryFileWrapper.__exit__cCs|jj�dS)N)r�r)r3rrrrCsz_TemporaryFileWrapper.closeccsx|jD] }|VqWdS)N)rs)r3�linerrrr5Js z_TemporaryFileWrapper.__iter__N)T) r@rArBr�r�r�r�rr5rrrrr�s  r��w+b�Tc Cs�t|||�\}}}}t} tjdkr0|r0| tjO} t|||| |�\} } y tj| ||||d�} t| | |�St k r�tj | �tj | ��YnXdS)NrG)� buffering�newline�encoding) r-rZrrJZ O_TEMPORARYrtr[rr�� BaseExceptionr]r) �moder�r�r�r*r)r+r�r,rqrrJrsrrrrTs      �posix�cygwin� O_TMPFILEc Cs�t|||�\}}}}t}tr�y$|tjBtj@} tj|| d�} Wn*tk rXdaYnBtk rjYn0Xyt j| ||||d�Stj | ��YnXt |||||�\} } ytj | �t j| ||||d�Stj | ��YnXdS)Ni�F)r�r�r�) r-rZ�_O_TMPFILE_WORKSrr��O_CREATr�IsADirectoryErrorrr[rrtr]) r�r�r�r�r*r)r+r,rqZflags2rrJrrrr�s0       c@s�eZdZdZd7dd�Zdd �Zd d �Zd d �Zdd�Zdd�Z dd�Z e dd��Z e dd��Z dd�Zdd�Zdd�Ze dd��Ze d d!��Ze d"d#��Zd$d%�Zd&d'�Zd(d)�Zd*d+�Ze d,d-��Zd.d/�Zd8d0d1�Zd2d3�Zd4d5�ZdS)9rFr�w+br�Nc CsHd|krtj�|_ntjdd�|_||_d|_|||||||d�|_dS)N�b� )r�F)r�r�r*r)r�r�r+)r[�BytesIO�_file�StringIO� _max_size�_rolled�_TemporaryFileArgs) r3�max_sizer�r�r�r�r*r)r+rrrr��s zSpooledTemporaryFile.__init__cCs,|jr dS|j}|r(|j�|kr(|j�dS)N)r�r��tell�rollover)r3rsr�rrr�_check�s zSpooledTemporaryFile._checkcCsN|jr dS|j}tf|j�}|_|`|j|j��|j|j�d�d|_dS)NrT)r�r�rr�r\�getvalue�seekr�)r3rsZnewfilerrrr��szSpooledTemporaryFile.rollovercCs|jjrtd��|S)Nz%Cannot enter context with closed file)r��closed� ValueError)r3rrrr��szSpooledTemporaryFile.__enter__cCs|jj�dS)N)r�r)r3r�r�r�rrrr��szSpooledTemporaryFile.__exit__cCs |jj�S)N)r�r5)r3rrrr5�szSpooledTemporaryFile.__iter__cCs|jj�dS)N)r�r)r3rrrr�szSpooledTemporaryFile.closecCs|jjS)N)r�r�)r3rrrr��szSpooledTemporaryFile.closedc Cs8y|jjStk r2d|jdkr(�|jdSXdS)Nr�r�r�)r�r�rPr�)r3rrrr�s zSpooledTemporaryFile.encodingcCs|j�|jj�S)N)r�r��fileno)r3rrrr� szSpooledTemporaryFile.filenocCs|jj�dS)N)r��flush)r3rrrr�szSpooledTemporaryFile.flushcCs |jj�S)N)r��isatty)r3rrrr�szSpooledTemporaryFile.isattyc Cs(y|jjStk r"|jdSXdS)Nr�)r�r�rPr�)r3rrrr�szSpooledTemporaryFile.modec Cs"y|jjStk rdSXdS)N)r�rJrP)r3rrrrJszSpooledTemporaryFile.namec Cs8y|jjStk r2d|jdkr(�|jdSXdS)Nr�r�r�)r��newlinesrPr�)r3rrrr�"s zSpooledTemporaryFile.newlinescGs |jj|�S)N)r��read)r3r$rrrr�+szSpooledTemporaryFile.readcGs |jj|�S)N)r��readline)r3r$rrrr�.szSpooledTemporaryFile.readlinecGs |jj|�S)N)r�� readlines)r3r$rrrr�1szSpooledTemporaryFile.readlinescGs|jj|�dS)N)r�r�)r3r$rrrr�4szSpooledTemporaryFile.seekcCs|jjS)N)r�� softspace)r3rrrr�7szSpooledTemporaryFile.softspacecCs |jj�S)N)r�r�)r3rrrr�;szSpooledTemporaryFile.tellcCs6|dkr|jj�n||jkr&|j�|jj|�dS)N)r��truncater�r�)r3�sizerrrr�>s   zSpooledTemporaryFile.truncatecCs|j}|j|�}|j|�|S)N)r�r\r�)r3�srs�rvrrrr\Fs  zSpooledTemporaryFile.writecCs|j}|j|�}|j|�|S)N)r�� writelinesr�)r3�iterablersr�rrrr�Ls  zSpooledTemporaryFile.writelines�����)rr�r�NNNNN)N)r@rArBr�r�r�r�r�r�r5rrCr�r�r�r�r�r�rJr�r�r�r�r�r�r�r�r\r�rrrrr�s6        c@sPeZdZddd�Zeddd��Zedd��Zd d �Zd d �Zd d�Z dd�Z dS)rNcCs0t|||�|_tj||j|jdj|�d�|_dS)NzImplicitly cleaning up {!r})� warn_message)rrJ�_weakref�finalize�_cleanup�format� _finalizer)r3r*r)r+rrrr�_s zTemporaryDirectory.__init__Fcs8�dkr ��d�����fdd� }tj�||dd�dS)Ncsjt|dt��rL�r&|�kr&�r$dS��|t��d�}|dksHt rT|d}}n|dkrb|}n|}y�|�kr�t|tjj|��t|||�ytj ||d�Wnnt k r��j |�|�k||d�YnDtk �rtjj |�s�r�dS��j |�|�k||d�YnXWn6t k �r(Yn"tk �rH��rBdS�YnXnt|dt ��r^n��sf�dS)Nr)r~)� ignore_errors�repeatedr~�fullname)� issubclassr_�len�_rmtree_use_dir_fdrrrLrSr�r]r��_rmtreer`rcr)rxrL�exc_infoZ entry_namer~Zfullpath�base)�clsr�r�rJr�rr�onerrorksN     z+TemporaryDirectory._rmtree..onerrorT)r�r~Z _onexc_kwargs)NN)�_shutilZrmtree)r�rJr�r�r~r�r�r)r�r�r�rJr�rr�es ; zTemporaryDirectory._rmtreecCs|j|�tj|t�dS)N)r�� _warnings�warn�ResourceWarning)r�rJr�rrrr��s zTemporaryDirectory._cleanupcCsdj|jj|j�S)Nz <{} {!r}>)r�� __class__r@rJ)r3rrr�__repr__�szTemporaryDirectory.__repr__cCs|jS)N)rJ)r3rrrr��szTemporaryDirectory.__enter__cCs |j�dS)N)�cleanup)r3r�r�r�rrrr��szTemporaryDirectory.__exit__cCs|jj�r|j|j�dS)N)r��detachr�rJ)r3rrrr��s zTemporaryDirectory.cleanup)NNN)FFNN) r@rArBr�� classmethodr�r�r�r�r�r�rrrrrSs  B )NNNF)NNNr�)r�r�NNNNNTr�)r�r�NNNNN)Q�__all__� functoolsr��warningsr��ior[�osrZshutilr��errnordZrandomrr2rrr��weakrefr��_thread� ImportErrorZ _dummy_thread� allocate_lockZ_allocate_lock�O_RDWRr��O_EXCLr�r�rrZrrr'rkrrrr&r-r.rTrirjrnrtryr{r}r|r]�supports_dir_fd� supports_fdr�rr� O_NONBLOCKr�rPr�r r r r r rrrr�r�rrJ�sys�platformrr�r�objectrrrrr�s�           -  !  ( ' +? $  8