U e5d�k� @s�dddddddddd d d d g Zd dlZd dlZd dlZd dlZd dl Z d dl Z d dl mZd dlZd dlZd dlZejZejejBejBZeed�r�eejOZeZeed�r�eejOZeed�r�ejZndZdZ e�Z!dd�Z"dd�Z#dd�Z$Gdd�d�Z%dd�Z&dd�Z'da(d d!�Z)d"d#�Z*d$d�Z+d%d �Z,da-d&d �Z.d'd �Z/ddd4�d5d�Z5ej6d6k�s�ej7d7k�r�e5Z8need8�a9d?dd4�d9d�Z8Gd:d�d�Z:Gd;d�de;�Z�sz0_RandomNameSequence.__next__..��)� charactersr.Zchoice�range�join)r-Zlettersrr2r�__next__�sz_RandomNameSequence.__next__N)�__name__� __module__� __qualname__r7�propertyr.r0r:rrrrr({s  r(c Cs�g}dD]}t�|�}|r|�|�qtjdkrX|�tj�d�tj�d�ddddg�n|�d d d g�z|�t���Wn$t t fk r�|�tj �YnX|S) N)ZTMPDIRZTEMPZTMP�ntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmpz/tmpz/var/tmpz/usr/tmp) r�getenv�append�name�extend�path� expanduser� expandvars�getcwd�AttributeErrorr�curdir)�dirlistZenvname�dirnamerrr�_candidate_tempdir_list�s&    �rLc CsFt�}t�}|D�]}|tjkr,tj�|�}td�D�]�}t|�}tj�||�}zft� |t d�}zeZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �ZdS)�_TemporaryFileWrapperTcCs$||_||_||_t|||�|_dSr )rprBrwrv�_closerrxrrrry�sz_TemporaryFileWrapper.__init__cs^|jd}t||�}t|d�rD|�t����fdd��}|j|_|}t|t�sZt|||�|S)Nrp�__call__cs �||�Sr r)r�kwargs��funcrr� func_wrapper�sz7_TemporaryFileWrapper.__getattr__..func_wrapper) �__dict__r+�hasattr� _functools�wrapsr~r�int�setattr)r-rBrp�ar�rr�r� __getattr__�s     z!_TemporaryFileWrapper.__getattr__cCs|j��|Sr )rp� __enter__r/rrrr��s z_TemporaryFileWrapper.__enter__cCs|j�|||�}|��|Sr )rp�__exit__rV)r-�exc�value�tb�resultrrrr��sz_TemporaryFileWrapper.__exit__cCs|j��dSr )r~rVr/rrrrV�sz_TemporaryFileWrapper.closeccs|jD] }|VqdSr )rp)r-�linerrrr0�s z_TemporaryFileWrapper.__iter__N)T) r;r<r=ryr�r�r�rVr0rrrrr}�s  r}�w+b�����T��errorscCs�t|||�\}}}} t} tjdkr0|r0| tjO} t|||| | �\} } z$tj| |||||d�} t| | |�WSt k r�t� | �t� | ��YnXdS)Nr?�� buffering�newline�encodingr�) r'rTrrBZ O_TEMPORARYrqrWrSr}� BaseExceptionrUrV)�moder�r�r�r$r#r%rwr�r&rnrbrBrprrrrs   �  �posix�cygwin� O_TMPFILEc Cs�t|||�\}}}}t} tr�z$| tjBtj@} t�|| d�} Wn*tk rXdaYnFtk rjYn4Xzt j| |||||d�WSt� | ��YnXt |||| |�\} } z"t� | �t j| |||||d�WSt� | ��YnXdS)NrNFr�) r'rT�_O_TMPFILE_WORKSrr��O_CREATrS�IsADirectoryErrorrrWrVrqrU) r�r�r�r�r$r#r%r�r&rnZflags2rbrBrrrr2s< �   � c@s�eZdZdZd9dd�dd�Zd d �Zd d �Zd d�Zdd�Zdd�Z dd�Z e dd��Z e dd��Z e dd��Zdd�Zdd�Zdd �Ze d!d"��Ze d#d$��Ze d%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Ze d/d0��Zd1d2�Zd:d3d4�Zd5d6�Zd7d8�ZdS);rFrr�r�Nr�c  CsTd|krt��|_ntjt��|| |d�|_||_d|_|||||||| d�|_dS)N�b)r�r�r�F)r�r�r$r#r�r�r%r�)rW�BytesIO�_file� TextIOWrapper� _max_size�_rolled�_TemporaryFileArgs) r-�max_sizer�r�r�r�r$r#r%r�rrrryus"  ��zSpooledTemporaryFile.__init__cCs,|jr dS|j}|r(|��|kr(|��dSr )r�r��tell�rollover)r-rpr�rrr�_check�s zSpooledTemporaryFile._checkcCsr|jr dS|j}tf|j�}|_|`|��}t|d�rN|j�|��� ��n|�|� ��|� |d�d|_dS)N�bufferrT) r�r�rr�r�r�r�rX�detach�getvalue�seek)r-rpZnewfile�posrrrr��s  zSpooledTemporaryFile.rollovercCs|jjrtd��|S)Nz%Cannot enter context with closed file)r��closed� ValueErrorr/rrrr��szSpooledTemporaryFile.__enter__cCs|j��dSr �r�rV�r-r�r�r�rrrr��szSpooledTemporaryFile.__exit__cCs |j��Sr )r�r0r/rrrr0�szSpooledTemporaryFile.__iter__cCs|j��dSr r�r/rrrrV�szSpooledTemporaryFile.closecCs|jjSr )r�r�r/rrrr��szSpooledTemporaryFile.closedcCs|jjSr )r�r�r/rrrr��szSpooledTemporaryFile.encodingcCs|jjSr )r�r�r/rrrr��szSpooledTemporaryFile.errorscCs|��|j��Sr )r�r��filenor/rrrr��szSpooledTemporaryFile.filenocCs|j��dSr )r��flushr/rrrr��szSpooledTemporaryFile.flushcCs |j��Sr )r��isattyr/rrrr��szSpooledTemporaryFile.isattycCs.z |jjWStk r(|jdYSXdS)Nr�)r�r�rHr�r/rrrr��s zSpooledTemporaryFile.modecCs&z |jjWStk r YdSXdSr )r�rBrHr/rrrrB�s zSpooledTemporaryFile.namecCs|jjSr )r��newlinesr/rrrr��szSpooledTemporaryFile.newlinescGs |jj|�Sr )r��read�r-rrrrr��szSpooledTemporaryFile.readcGs |jj|�Sr )r��readliner�rrrr��szSpooledTemporaryFile.readlinecGs |jj|�Sr )r�� readlinesr�rrrr��szSpooledTemporaryFile.readlinescGs |jj|�Sr )r�r�r�rrrr��szSpooledTemporaryFile.seekcCs|jjSr )r�� softspacer/rrrr��szSpooledTemporaryFile.softspacecCs |j��Sr )r�r�r/rrrr��szSpooledTemporaryFile.tellcCs6|dkr|j��n||jkr&|��|j�|�dSr )r��truncater�r�)r-�sizerrrr��s   zSpooledTemporaryFile.truncatecCs|j}|�|�}|�|�|Sr )r�rXr�)r-�srp�rvrrrrX�s  zSpooledTemporaryFile.writecCs|j}|�|�}|�|�|Sr )r�� writelinesr�)r-�iterablerpr�rrrr��s  zSpooledTemporaryFile.writelines)rr�r�NNNNN)N)r;r<r=r�ryr�r�r�r�r0rVr>r�r�r�r�r�r�r�rBr�r�r�r�r�r�r�r�rXr�rrrrrnsR��         c@sNeZdZddd�Zedd��Zedd��Zdd �Zd d �Zd d �Z dd�Z dS)rNcCs0t|||�|_tj||j|jd�|�d�|_dS)NzImplicitly cleaning up {!r})� warn_message)rrB�_weakrefZfinalize�_cleanup�format� _finalizer)r-r$r#r%rrrry s�zTemporaryDirectory.__init__cs ��fdd�}tj�|d�dS)Nc s�t|dt�r�dd�}zV|�kr0|tj�|��||�zt�|�Wn"ttfk rh��|�YnXWq�tk r�Yq�Xnt|dt�r�n�dS)NrcSs6zt�|d�Wntk r$YnXt�|d�dS)Nrrt)rZchflagsrH�chmod)rDrrr� resetpermss z?TemporaryDirectory._rmtree..onerror..resetperms) � issubclassrZrrDrKrUr��_rmtreer^)r�rD�exc_infor���clsrBrr�onerrorsz+TemporaryDirectory._rmtree..onerror)r�)�_shutilZrmtree)r�rBr�rr�rr�szTemporaryDirectory._rmtreecCs|�|�t�|t�dSr )r�� _warnings�warn�ResourceWarning)r�rBr�rrrr�/s zTemporaryDirectory._cleanupcCsd�|jj|j�S)Nz <{} {!r}>)r�� __class__r;rBr/rrr�__repr__4szTemporaryDirectory.__repr__cCs|jSr )rBr/rrrr�7szTemporaryDirectory.__enter__cCs |��dSr )�cleanupr�rrrr�:szTemporaryDirectory.__exit__cCs|j��r|�|j�dSr )r�r�r�rBr/rrrr�=s zTemporaryDirectory.cleanup)NNN) r;r<r=ry� classmethodr�r�r�r�r�r�rrrrr�s   )NNNF)NNN)r�r�NNNNNT)r�r�NNNNN)=�__all__� functoolsr��warningsr��iorW�osrZshutilr��errnor_Zrandomrr,�sysrk�weakrefr��_thread� allocate_lockZ_allocate_lock�O_RDWRr��O_EXCLrrr�rrTrrr!rfrrr'r(rLrdrerirqr r r r r rrrrvr}rrB�platformrr�r�objectrrrrr�s��        -  ' ( +?�� ' �� <