???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dk                     @   s  d ddddddddd	d
ddgZ ddlZddlZddlZddlZddl	Z
ddlZddlmZ ddlZddlZddlZejZejejB ejB ZeedreejO ZeZeedreejO ZeedrejZndZdZ e Z!dd Z"dd Z#dd Z$G dd dZ%dd Z&dd Z'da(d d! Z)d"d# Z*d$d Z+d%d Z,da-d&d
 Z.d'd Z/d<d)dZ0d=d*dZ1d+e dfd,dZ2G d-d. d.Z3G d/d0 d0Z4d>dd4d5d Z5ej6d6ksej7d7kre5Z8need8a9d?dd4d9dZ8G d:d dZ:G d;d de;Z<dS )@NamedTemporaryFileTemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAXgettempprefixtempdir
gettempdirgettempprefixbgettempdirb    N)Random
O_NOFOLLOWO_BINARYi'  Ztmpc                 C   s.   zt |  W n tk
r$   Y dS X dS d S )NFT)_oslstatOSError)fn r    /usr/lib64/python3.8/tempfile.py_existsK   s
    r   c                  G   s\   d }| D ]B}|d krqt |tr6|tkr0tdt}q|tkrFtdt}q|d krXtS |S )Nz1Can't mix bytes and non-bytes in path components.)
isinstancebytesstr	TypeError)argsZreturn_typeargr   r   r   _infer_return_typeT   s    
r   c                 C   sd   t | ||}|d kr| }| d kr:|tkr0t} n
tt} |d krX|tkrRt }nt }| |||fS N)r   r   templater   fsencoder   r   )prefixsuffixdiroutput_typer   r   r   _sanitize_paramsi   s    
r'   c                   @   s,   e Zd ZdZedd Zdd Zdd ZdS )	_RandomNameSequenceZ%abcdefghijklmnopqrstuvwxyz0123456789_c                 C   s,   t  }|t| dd kr&t | _|| _| jS )N_rng_pid)r   getpidgetattr_RandomZ_rngr)   )selfZcur_pidr   r   r   rng   s
    z_RandomNameSequence.rngc                 C   s   | S r    r   r-   r   r   r   __iter__   s    z_RandomNameSequence.__iter__c                    s0   | j  | jj fddtdD }d|S )Nc                    s   g | ]} qS r   r   ).0ZdummycZchooser   r   
<listcomp>   s     z0_RandomNameSequence.__next__.<locals>.<listcomp>    )
charactersr.   Zchoicerangejoin)r-   Zlettersr   r2   r   __next__   s    z_RandomNameSequence.__next__N)__name__
__module____qualname__r7   propertyr.   r0   r:   r   r   r   r   r(   {   s
   
r(   c               	   C   s   g } dD ]}t |}|r| | qt jdkrX| t jdt jdddddg n| d	d
dg z| t   W n$ t	t
fk
r   | t j Y nX | S )N)ZTMPDIRZTEMPZTMPntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmpz/tmpz/var/tmpz/usr/tmp)r   getenvappendnameextendpath
expanduser
expandvarsgetcwdAttributeErrorr   curdir)dirlistZenvnamedirnamer   r   r   _candidate_tempdir_list   s&    
 

   rL   c                  C   sF  t  } t }|D ]}|tjkr,tj|}tdD  ]}t| }tj||}zft	|t
d}z<z*tj	|ddd}|d W 5 Q R X W 5 t| X W 5 t| X |W     S  tk
r   Y q4 tk
r   tjdkrtj|rt|tjrY q4Y  qY q4 tk
r,   Y  qY q4X q4qttjd| d S )	Nd     wbF)closefds   blatr?   z)No usable temporary directory found in %s)r(   rL   r   rI   rD   abspathr8   nextr9   open_bin_openflagsunlinkclose_iowriteFileExistsErrorPermissionErrorrB   isdiraccessW_OKr   FileNotFoundError_errnoZENOENT)ZnamerrJ   r%   seqrB   filenamefdfpr   r   r   _get_default_tempdir   s@    	


rd   c                   C   s2   t d kr.t  zt d kr t a W 5 t  X t S r    )_name_sequence
_once_lockacquirereleaser(   r   r   r   r   _get_candidate_names   s    

ri   c           
   	   C   s   t  }|tkrttj|}ttD ]}t|}tj	| || | }t
d| zt||d}	W nV tk
rz   Y q"Y n@ tk
r   tjdkrtj| rt| tjrY q"n Y nX |	tj|f  S ttjdd S )Nztempfile.mkstemprN   r?   z#No usable temporary file name found)ri   r   mapr   r"   r8   r   rR   rD   r9   _sysauditrS   rY   rZ   rB   r[   r\   r]   rQ   r_   EEXIST)
r%   ZpreZsufflagsr&   namesr`   rB   filerb   r   r   r   _mkstemp_inner   s*    rq   c                   C   s   t S r    )r!   r   r   r   r   r	     s    c                   C   s   t t S r    )r   r"   r	   r   r   r   r   r     s    c                   C   s2   t d kr.t  zt d kr t a W 5 t  X t S r    )r
   rf   rg   rh   rd   r   r   r   r   r     s    

c                   C   s   t t S r    )r   r"   r   r   r   r   r   r   #  s    Fc                 C   s2   t || |\}} }}|rt}nt}t||| ||S r    )r'   _text_openflagsrT   rq   )r$   r#   r%   textr&   rn   r   r   r   r   '  s
    c              	   C   s   t || |\}} }}t }|tkr.ttj|}ttD ]}t|}tj	
||| |  }td| zt|d W nV tk
r   Y q6Y n@ tk
r   tjdkrtj	|rt|tjrY q6n Y nX |  S ttjdd S )Nztempfile.mkdtemp  r?   z(No usable temporary directory name found)r'   ri   r   rj   r   r"   r8   r   rR   rD   r9   rk   rl   mkdirrY   rZ   rB   r[   r\   r]   r_   rm   )r$   r#   r%   r&   ro   r`   rB   rp   r   r   r   r   N  s,    r6   c                 C   s`   |d krt  }t }ttD ]2}t|}tj||| |  }t|s|  S qt	t
jdd S )Nz"No usable temporary filename found)r   ri   r8   r   rR   r   rD   r9   r   rY   r_   rm   )r$   r#   r%   ro   r`   rB   rp   r   r   r   r   v  s    
c                   @   sH   e Zd ZdZdZdddZejdkr<ejfddZ	d	d
 Z
ndd Z	dS )_TemporaryFileCloserNFTc                 C   s   || _ || _|| _d S r    )rp   rB   deleter-   rp   rB   rw   r   r   r   __init__  s    z_TemporaryFileCloser.__init__r?   c                 C   s<   | j s8| jd k	r8d| _ z| j  W 5 | jr6|| j X d S NT)close_calledrp   rw   rB   rV   )r-   rU   r   r   r   rV     s    z_TemporaryFileCloser.closec                 C   s   |    d S r    )rV   r/   r   r   r   __del__  s    z_TemporaryFileCloser.__del__c                 C   s   | j sd| _ | j  d S rz   )r{   rp   rV   r/   r   r   r   rV     s    )T)r;   r<   r=   rp   r{   ry   r   rB   rU   rV   r|   r   r   r   r   rv     s   



rv   c                   @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )_TemporaryFileWrapperTc                 C   s$   || _ || _|| _t|||| _d S r    )rp   rB   rw   rv   _closerrx   r   r   r   ry     s    z_TemporaryFileWrapper.__init__c                    s^   | j d }t||}t|drD| t  fdd}| j|_|}t|tsZt| || |S )Nrp   __call__c                     s
    | |S r    r   )r   kwargsfuncr   r   func_wrapper  s    z7_TemporaryFileWrapper.__getattr__.<locals>.func_wrapper)	__dict__r+   hasattr
_functoolswrapsr~   r   intsetattr)r-   rB   rp   ar   r   r   r   __getattr__  s    



z!_TemporaryFileWrapper.__getattr__c                 C   s   | j   | S r    )rp   	__enter__r/   r   r   r   r     s    
z_TemporaryFileWrapper.__enter__c                 C   s   | j |||}|   |S r    )rp   __exit__rV   )r-   excvaluetbresultr   r   r   r     s    z_TemporaryFileWrapper.__exit__c                 C   s   | j   d S r    )r~   rV   r/   r   r   r   rV     s    z_TemporaryFileWrapper.closec                 c   s   | j D ]
}|V  qd S r    )rp   )r-   liner   r   r   r0     s    
z_TemporaryFileWrapper.__iter__N)T)	r;   r<   r=   ry   r   r   r   rV   r0   r   r   r   r   r}     s   
r}   w+bTerrorsc                C   s   t |||\}}}}	t}
tjdkr0|r0|
tjO }
t||||
|	\}}z$tj|| ||||d}t|||W S  t	k
r   t
| t|  Y nX d S )Nr?   	bufferingnewlineencodingr   )r'   rT   r   rB   ZO_TEMPORARYrq   rW   rS   r}   BaseExceptionrU   rV   )moder   r   r   r$   r#   r%   rw   r   r&   rn   rb   rB   rp   r   r   r   r      s     

  

posixcygwin	O_TMPFILEc                C   s   t |||\}}}}t}	trz$|	tjB tj @ }
t||
d}W n* tk
rX   daY nF tk
rj   Y n4X zt	j|| ||||dW S    t
|  Y nX t||||	|\}}z"t| t	j|| ||||dW S    t
|  Y nX d S )NrN   Fr   )r'   rT   _O_TMPFILE_WORKSr   r   O_CREATrS   IsADirectoryErrorr   rW   rV   rq   rU   )r   r   r   r   r$   r#   r%   r   r&   rn   Zflags2rb   rB   r   r   r   r   2  s<    
 


  
c                   @   s   e Zd ZdZd9ddddZd	d
 Zdd Zdd Zdd Zdd Z	dd Z
edd Zedd Zedd Zdd Zdd Zdd  Zed!d" Zed#d$ Zed%d& Zd'd( Zd)d* Zd+d, Zd-d. Zed/d0 Zd1d2 Zd:d3d4Zd5d6 Zd7d8 ZdS );r   Fr   r   r   Nr   c	          
   	   C   sT   d|krt  | _nt jt  ||	|d| _|| _d| _||||||||	d| _d S )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   r   r   r   ry   u  s"    
    zSpooledTemporaryFile.__init__c                 C   s,   | j r
d S | j}|r(| |kr(|   d S r    )r   r   tellrollover)r-   rp   r   r   r   r   _check  s
     zSpooledTemporaryFile._checkc                 C   sr   | j r
d S | j}tf | j }| _| `| }t|drN|j| 	  n||	  |
|d d| _ d S )Nbufferr   T)r   r   r   r   r   r   r   rX   detachgetvalueseek)r-   rp   Znewfileposr   r   r   r     s     
zSpooledTemporaryFile.rolloverc                 C   s   | j jrtd| S )Nz%Cannot enter context with closed file)r   closed
ValueErrorr/   r   r   r   r     s    zSpooledTemporaryFile.__enter__c                 C   s   | j   d S r    r   rV   r-   r   r   r   r   r   r   r     s    zSpooledTemporaryFile.__exit__c                 C   s
   | j  S r    )r   r0   r/   r   r   r   r0     s    zSpooledTemporaryFile.__iter__c                 C   s   | j   d S r    r   r/   r   r   r   rV     s    zSpooledTemporaryFile.closec                 C   s   | j jS r    )r   r   r/   r   r   r   r     s    zSpooledTemporaryFile.closedc                 C   s   | j jS r    )r   r   r/   r   r   r   r     s    zSpooledTemporaryFile.encodingc                 C   s   | j jS r    )r   r   r/   r   r   r   r     s    zSpooledTemporaryFile.errorsc                 C   s   |    | j S r    )r   r   filenor/   r   r   r   r     s    zSpooledTemporaryFile.filenoc                 C   s   | j   d S r    )r   flushr/   r   r   r   r     s    zSpooledTemporaryFile.flushc                 C   s
   | j  S r    )r   isattyr/   r   r   r   r     s    zSpooledTemporaryFile.isattyc                 C   s.   z
| j jW S  tk
r(   | jd  Y S X d S )Nr   )r   r   rH   r   r/   r   r   r   r     s    
zSpooledTemporaryFile.modec                 C   s&   z
| j jW S  tk
r    Y d S X d S r    )r   rB   rH   r/   r   r   r   rB     s    
zSpooledTemporaryFile.namec                 C   s   | j jS r    )r   newlinesr/   r   r   r   r     s    zSpooledTemporaryFile.newlinesc                 G   s   | j j| S r    )r   readr-   r   r   r   r   r     s    zSpooledTemporaryFile.readc                 G   s   | j j| S r    )r   readliner   r   r   r   r     s    zSpooledTemporaryFile.readlinec                 G   s   | j j| S r    )r   	readlinesr   r   r   r   r     s    zSpooledTemporaryFile.readlinesc                 G   s   | j j| S r    )r   r   r   r   r   r   r     s    zSpooledTemporaryFile.seekc                 C   s   | j jS r    )r   	softspacer/   r   r   r   r     s    zSpooledTemporaryFile.softspacec                 C   s
   | j  S r    )r   r   r/   r   r   r   r     s    zSpooledTemporaryFile.tellc                 C   s6   |d kr| j   n|| jkr&|   | j | d S r    )r   truncater   r   )r-   sizer   r   r   r     s
    
zSpooledTemporaryFile.truncatec                 C   s   | j }||}| | |S r    )r   rX   r   )r-   srp   rvr   r   r   rX     s    

zSpooledTemporaryFile.writec                 C   s   | j }||}| | |S r    )r   
writelinesr   )r-   iterablerp   r   r   r   r   r     s    

zSpooledTemporaryFile.writelines)r   r   r   NNNNN)N)r;   r<   r=   r   ry   r   r   r   r   r0   rV   r>   r   r   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   rX   r   r   r   r   r   r   n  sR            







c                   @   sN   e Zd ZdddZedd Zedd Zdd	 Zd
d Zdd Z	dd Z
dS )r   Nc                 C   s0   t |||| _tj| | j| jd| d| _d S )NzImplicitly cleaning up {!r})warn_message)r   rB   _weakrefZfinalize_cleanupformat
_finalizer)r-   r$   r#   r%   r   r   r   ry     s      zTemporaryDirectory.__init__c                    s     fdd}t j|d d S )Nc              	      s   t |d trdd }zV|kr0|tj| || zt| W n" ttfk
rh    | Y nX W q tk
r   Y qX nt |d trn d S )Nr   c                 S   s6   zt | d W n tk
r$   Y nX t | d d S )Nr   rt   )r   ZchflagsrH   chmod)rD   r   r   r   
resetperms  s
    z?TemporaryDirectory._rmtree.<locals>.onerror.<locals>.resetperms)	
issubclassrZ   r   rD   rK   rU   r   _rmtreer^   )r   rD   exc_infor   clsrB   r   r   onerror  s    z+TemporaryDirectory._rmtree.<locals>.onerror)r   )_shutilZrmtree)r   rB   r   r   r   r   r     s    zTemporaryDirectory._rmtreec                 C   s   |  | t|t d S r    )r   	_warningswarnResourceWarning)r   rB   r   r   r   r   r   /  s    
zTemporaryDirectory._cleanupc                 C   s   d | jj| jS )Nz	<{} {!r}>)r   	__class__r;   rB   r/   r   r   r   __repr__4  s    zTemporaryDirectory.__repr__c                 C   s   | j S r    )rB   r/   r   r   r   r   7  s    zTemporaryDirectory.__enter__c                 C   s   |    d S r    )cleanupr   r   r   r   r   :  s    zTemporaryDirectory.__exit__c                 C   s   | j  r| | j d S r    )r   r   r   rB   r/   r   r   r   r   =  s    
zTemporaryDirectory.cleanup)NNN)r;   r<   r=   ry   classmethodr   r   r   r   r   r   r   r   r   r   r     s   


)NNNF)NNN)r   r   NNNNNT)r   r   NNNNN)=__all__	functoolsr   warningsr   iorW   osr   Zshutilr   errnor_   Zrandomr   r,   sysrk   weakrefr   _threadallocate_lockZ_allocate_lockO_RDWRr   O_EXCLrr   r   r   rT   r   r   r!   rf   r   r   r'   r(   rL   rd   re   ri   rq   r	   r   r
   r   r   r   r   r   rv   r}   r   rB   platformr   r   r   objectr   r   r   r   r   <module>   s         




	-
'
( +?         '
       < 