
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ct„j¢m  ã               @   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ƒr¸eejO ZeZeedƒrÐeejO Zeedƒrâe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|ƒ}xêt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rútjj|ƒrútj|tjƒrúw:P Y q: tk
�r   P Y q:X q:W qW ttjd| ƒ‚d S )	Néd   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|ƒ}x¢t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r¤tjj| ƒr¤tj| tjƒr¤w$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|ƒ}x”ttƒD ]ˆ}t|ƒ}tj	j
||| |  ƒ}ytj|dƒ W nR tk
r€   w8Y n> tk
r¼   tjdkr¶tj	j|ƒr¶tj|tjƒr¶w8n‚ 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ršy$|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 qŽX nt |d t	ƒrŒn‚ 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 