???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
im                 @   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yddlZW n ek
r   ddlZY nX 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!eedrej"Z#needrej$Z#ndd 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,d Z0d-d Z1da2d.d
 Z3d/d Z4dCd1dZ5dDd2dZ6d3e dfd4dZ7G d5d6 d6Z8G d7d8 d8Z9dFd<d Z:ej;d=ksej<j=d>kre:Z>need?a?dHd@dZ>G dAd dZ@G dBd deAZBdS )INamedTemporaryFileTemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAXgettempprefixtempdir
gettempdirgettempprefixbgettempdirb    N)Random
O_NOFOLLOWO_BINARYi'  Ztmplstatstatc             C   s   t j| t j}t j| d S )N)_osopenO_RDONLYclose)fnfd r    /usr/lib64/python3.6/tempfile.py_statT   s    r   c             C   s*   yt |  W n tk
r    dS X dS d S )NFT)r   OSError)r   r   r   r   _existsX   s
    r   c              G   s`   d }xJ| D ]B}|d krq
t |tr8|tkr2tdt}q
|tkrHtdt}q
W |d kr\tS |S )Nz1Can't mix bytes and non-bytes in path components.)
isinstancebytesstr	TypeError)argsZreturn_typeargr   r   r   _infer_return_typea   s    

r%   c             C   sd   t | ||}|d kr| }| d kr:|tkr0t} n
tj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_paramsv   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 j }|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 )Nr   )r2   r   r   r   __iter__   s    z_RandomNameSequence.__iter__c                s0   | j  | jj fddtdD }dj|S )Nc                s   g | ]} qS r   r   ).0Zdummy)cchooser   r   
<listcomp>   s    z0_RandomNameSequence.__next__.<locals>.<listcomp>    )
charactersr3   Zchoicerangejoin)r2   Zlettersr   )r6   r7   r   __next__   s    z_RandomNameSequence.__next__N)__name__
__module____qualname__r;   propertyr3   r4   r>   r   r   r   r   r-      s   r-   c              C   s   g } x$dD ]}t j|}|r
| j| q
W t jdkr\| jt jjdt jjdddd	d
g n| jdddg y| jt j  W n$ t	t
fk
r   | jt j Y nX | S )NTMPDIRTEMPTMPntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmpz/tmpz/var/tmpz/usr/tmp)rC   rD   rE   )r   getenvappendnameextendpath
expanduser
expandvarsgetcwdAttributeErrorr   curdir)dirlistZenvnamedirnamer   r   r   _candidate_tempdir_list   s    

 

rS   c              C   s4  t  } t }x|D ]}|tjkr0tjj|}xtdD ]}t| }tjj||}y\tj	|t
d}z<z*tj	|ddd}|jd W d Q R X W d tj| X W d tj| X |S  tk
r   Y q: tk
r    tjdkrtjj|rtj|tjrw:P Y q: tk
r   P Y q:X q:W qW ttjd| d S )	Nd   i  wbF)closefds   blatrF   z)No usable temporary directory found in %s)r-   rS   r   rP   rK   abspathr<   nextr=   r   _bin_openflags_iowriter   unlinkFileExistsErrorPermissionErrorrI   isdiraccessW_OKr   FileNotFoundError_errnoENOENT)ZnamerrQ   r*   seqrI   filenamer   fpr   r   r   _get_default_tempdir   s:    	
rh   c            
   C   s2   t d kr.tj  zt d kr t a W d tj  X t S )N)_name_sequence
_once_lockacquirer-   releaser   r   r   r   _get_candidate_names   s    

rm   c       
      C   s   t  }|tkrttj|}xttD ]}t|}tjj	| || | }ytj
||d}	W nR tk
rn   w$Y n> tk
r   tjdkrtjj| rtj| tjrw$n Y nX |	tjj|fS W ttjdd S )Ni  rF   z#No usable temporary file name found)rm   r    mapr   r'   r<   r   rX   rK   r=   r   r]   r^   rI   r_   r`   ra   rW   rc   EEXIST)
r*   ZpreZsufflagsr+   namesre   rI   filer   r   r   r   _mkstemp_inner   s$    rs   c             G   sJ   | t jkr | |f|ddi n&t jdks8t jj| rF| |f|  d S )Nfollow_symlinksFrF   )r   supports_follow_symlinksrI   rK   islink)funcrK   r#   r   r   r   _dont_follow_symlinks  s    
rx   c             C   s>   y
t j}W n tk
r   Y nX t|| d tt j| d d S )Nr   i  )r   chflagsrO   rx   chmod)rK   ry   r   r   r   _resetperms  s    
r{   c               C   s   t S )N)r&   r   r   r   r   r	   *  s    c               C   s   t jt S )N)r   r'   r	   r   r   r   r   r   .  s    c            
   C   s2   t d kr.tj  zt d kr t a W d tj  X t S )N)r
   rj   rk   rh   rl   r   r   r   r   r   4  s    

c               C   s   t jt S )N)r   r'   r   r   r   r   r   r   @  s    Fc             C   s2   t || |\}} }}|rt}nt}t||| ||S )N)r,   _text_openflagsrY   rs   )r)   r(   r*   textr+   rp   r   r   r   r   D  s
    c             C   s   t || |\}} }}t }|tkr.ttj|}xttD ]}t|}tj	j
||| |  }ytj|d W nR tk
r   w8Y n> tk
r   tjdkrtj	j|rtj|tjrw8n Y nX |S W ttjdd S )Ni  rF   z(No usable temporary directory name found)r,   rm   r    rn   r   r'   r<   r   rX   rK   r=   mkdirr]   r^   rI   r_   r`   ra   rc   ro   )r)   r(   r*   r+   rq   re   rI   rr   r   r   r   r   l  s&    r:   c             C   s`   |d krt  }t }x:ttD ].}t|}tjj||| |  }t|s|S qW t	t
jdd S )Nz"No usable temporary filename found)r   rm   r<   r   rX   r   rK   r=   r   r]   rc   ro   )r)   r(   r*   rq   re   rI   rr   r   r   r   r     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 )N)rr   rI   delete)r2   rr   rI   r   r   r   r   __init__  s    z_TemporaryFileCloser.__init__rF   c             C   s>   | j  r:| jd k	r:d| _ z| jj  W d | jr8|| j X d S )NT)close_calledrr   r   r   rI   )r2   r\   r   r   r   r     s    z_TemporaryFileCloser.closec             C   s   | j   d S )N)r   )r2   r   r   r   __del__  s    z_TemporaryFileCloser.__del__c             C   s   | j sd| _ | jj  d S )NT)r   rr   r   )r2   r   r   r   r     s    )T)r?   r@   rA   rr   r   r   r   rI   r\   r   r   r   r   r   r   r     s   



r   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 )N)rr   rI   r   r   _closer)r2   rr   rI   r   r   r   r   r     s    z_TemporaryFileWrapper.__init__c                s^   | j d }t||}t|drD| tj  fdd}| j|_|}t|tsZt| || |S )Nrr   __call__c                 s
    | |S )Nr   )r#   kwargs)rw   r   r   func_wrapper  s    z7_TemporaryFileWrapper.__getattr__.<locals>.func_wrapper)	__dict__r0   hasattr
_functoolswrapsr   r   intsetattr)r2   rI   rr   ar   r   )rw   r   __getattr__  s    



z!_TemporaryFileWrapper.__getattr__c             C   s   | j j  | S )N)rr   	__enter__)r2   r   r   r   r     s    
z_TemporaryFileWrapper.__enter__c             C   s   | j j|||}| j  |S )N)rr   __exit__r   )r2   excvaluetbresultr   r   r   r     s    z_TemporaryFileWrapper.__exit__c             C   s   | j j  d S )N)r   r   )r2   r   r   r   r     s    z_TemporaryFileWrapper.closec             c   s   x| j D ]
}|V  qW d S )N)rr   )r2   liner   r   r   r4     s    z_TemporaryFileWrapper.__iter__N)T)	r?   r@   rA   r   r   r   r   r   r4   r   r   r   r   r     s   
r   w+b   Tc             C   s   t |||\}}}}t}	tjdkr0|r0|	tjO }	t||||	|\}
}y tj|
| |||d}t|||S  t	k
r   tj
| tj|
  Y nX d S )NrF   )	bufferingnewlineencoding)r,   rY   r   rI   ZO_TEMPORARYrs   rZ   r   r   BaseExceptionr\   r   )moder   r   r   r)   r(   r*   r   r+   rp   r   rI   rr   r   r   r   r     s    




posixcygwin	O_TMPFILEc             C   s   t |||\}}}}t}try$|tjB tj @ }	tj||	d}
W n* tk
rX   daY nB tk
rj   Y n0X yt	j|
| |||dS    tj
|
  Y nX t|||||\}
}ytj| t	j|
| |||dS    tj
|
  Y nX d S )Ni  F)r   r   r   )r,   rY   _O_TMPFILE_WORKSr   r   O_CREATr   IsADirectoryErrorr   rZ   r   rs   r\   )r   r   r   r   r)   r(   r*   r+   rp   Zflags2r   rI   r   r   r   r   N  s0    






c               @   s   e Zd ZdZd7d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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,d- Zd.d/ Zd8d0d1Zd2d3 Zd4d5 ZdS )9r   Fr   w+br   Nc	       	      C   sH   d|krt j | _nt jdd| _|| _d| _|||||||d| _d S )Nb
)r   F)r   r   r)   r(   r   r   r*   )rZ   BytesIO_fileStringIO	_max_size_rolled_TemporaryFileArgs)	r2   max_sizer   r   r   r   r)   r(   r*   r   r   r   r     s    zSpooledTemporaryFile.__init__c             C   s,   | j r
d S | j}|r(|j |kr(| j  d S )N)r   r   tellrollover)r2   rr   r   r   r   r   _check  s
     zSpooledTemporaryFile._checkc             C   sN   | j r
d S | j}tf | j }| _| `|j|j  |j|j d d| _ d S )Nr   T)r   r   r   r   r[   getvalueseekr   )r2   rr   Znewfiler   r   r   r     s     zSpooledTemporaryFile.rolloverc             C   s   | j jrtd| S )Nz%Cannot enter context with closed file)r   closed
ValueError)r2   r   r   r   r     s    zSpooledTemporaryFile.__enter__c             C   s   | j j  d S )N)r   r   )r2   r   r   r   r   r   r   r     s    zSpooledTemporaryFile.__exit__c             C   s
   | j j S )N)r   r4   )r2   r   r   r   r4     s    zSpooledTemporaryFile.__iter__c             C   s   | j j  d S )N)r   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.closec             C   s   | j jS )N)r   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.closedc             C   s8   y| j jS  tk
r2   d| jd kr( | jd S X d S )Nr   r   r   )r   r   rO   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.encodingc             C   s   | j   | jj S )N)r   r   fileno)r2   r   r   r   r     s    zSpooledTemporaryFile.filenoc             C   s   | j j  d S )N)r   flush)r2   r   r   r   r     s    zSpooledTemporaryFile.flushc             C   s
   | j j S )N)r   isatty)r2   r   r   r   r     s    zSpooledTemporaryFile.isattyc             C   s(   y| j jS  tk
r"   | jd S X d S )Nr   )r   r   rO   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.modec             C   s"   y| j jS  tk
r   d S X d S )N)r   rI   rO   )r2   r   r   r   rI     s    zSpooledTemporaryFile.namec             C   s8   y| j jS  tk
r2   d| jd kr( | jd S X d S )Nr   r   r   )r   newlinesrO   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.newlinesc             G   s   | j j| S )N)r   read)r2   r#   r   r   r   r     s    zSpooledTemporaryFile.readc             G   s   | j j| S )N)r   readline)r2   r#   r   r   r   r     s    zSpooledTemporaryFile.readlinec             G   s   | j j| S )N)r   	readlines)r2   r#   r   r   r   r     s    zSpooledTemporaryFile.readlinesc             G   s   | j j|  d S )N)r   r   )r2   r#   r   r   r   r     s    zSpooledTemporaryFile.seekc             C   s   | j jS )N)r   	softspace)r2   r   r   r   r      s    zSpooledTemporaryFile.softspacec             C   s
   | j j S )N)r   r   )r2   r   r   r   r     s    zSpooledTemporaryFile.tellc             C   s6   |d kr| j j  n|| jkr&| j  | j j| d S )N)r   truncater   r   )r2   sizer   r   r   r     s
    
zSpooledTemporaryFile.truncatec             C   s   | j }|j|}| j| |S )N)r   r[   r   )r2   srr   rvr   r   r   r[     s    

zSpooledTemporaryFile.writec             C   s   | j }|j|}| j| |S )N)r   
writelinesr   )r2   iterablerr   r   r   r   r   r     s    

zSpooledTemporaryFile.writelines)r   r   r   NNNNN)N)r?   r@   rA   r   r   r   r   r   r   r4   r   rB   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r[   r   r   r   r   r   r     s6     
		
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j| d| _d S )NzImplicitly cleaning up {!r})warn_message)r   rI   _weakreffinalize_cleanupformat
_finalizer)r2   r)   r(   r*   r   r   r   r   (  s    
zTemporaryDirectory.__init__c                s     fdd}t j|d d S )Nc                s   t |d tr|yV|kr(ttjj| t| ytj| W n" ttfk
r`    j| Y nX W q t	k
rx   Y qX nt |d t	rn d S )Nr   )

issubclassr^   r{   r   rK   rR   r\   r   _rmtreerb   )rw   rK   exc_info)clsrI   r   r   onerror0  s    z+TemporaryDirectory._rmtree.<locals>.onerror)r   )_shutilZrmtree)r   rI   r   r   )r   rI   r   r   .  s    zTemporaryDirectory._rmtreec             C   s   | j | tj|t d S )N)r   	_warningswarnResourceWarning)r   rI   r   r   r   r   r   E  s    
zTemporaryDirectory._cleanupc             C   s   dj | jj| jS )Nz	<{} {!r}>)r   	__class__r?   rI   )r2   r   r   r   __repr__J  s    zTemporaryDirectory.__repr__c             C   s   | j S )N)rI   )r2   r   r   r   r   M  s    zTemporaryDirectory.__enter__c             C   s   | j   d S )N)cleanup)r2   r   r   r   r   r   r   r   P  s    zTemporaryDirectory.__exit__c             C   s   | j j r| j| j d S )N)r   detachr   rI   )r2   r   r   r   r   S  s    
zTemporaryDirectory.cleanup)NNN)r?   r@   rA   r   classmethodr   r   r   r   r   r   r   r   r   r   r     s   
)NNNF)NNNr   )r   r   NNNNNTr   )r   r   NNNNN)C__all__	functoolsr   warningsr   iorZ   osr   Zshutilr   errnorc   Zrandomr   r1   weakrefr   _threadImportErrorZ_dummy_threadallocate_lockZ_allocate_lockO_RDWRr   O_EXCLr|   r   r   rY   r   r   r&   rj   r   r   r   r   r%   r,   r-   rS   rh   ri   rm   rs   rx   r{   r	   r   r
   r   r   r   r   r   r   r   r   rI   sysplatformr   r   r   objectr   r   r   r   r   <module>   s   




	-
(
' +?  
$
  
8 