a
    "h;m                     @   s  g d 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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d Z/dd  Z0da1d!d" Z2d#d$ Z3d@d&d'Z4dAd(d)Z5d*e"dfd+d,Z6G d-d. d.Z7G d/d0 d0Z8dBdd4d5d6Z9ej:d7ksej;d8kre9Z<need9a=dCdd4d:d;Z<G d<d= d=Z>G d>d? d?e?Z@dS )D)NamedTemporaryFileTemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAXgettempprefixtempdir
gettempdirgettempprefixbgettempdirb    N)Random
O_NOFOLLOWO_BINARYr   i'  tmpc                 C   s,   zt |  W n ty"   Y dS 0 dS d S )NFT)_oslstatOSError)fn r   0/opt/python-3.9.21/usr/lib/python3.9/tempfile.py_existsL   s
    r   c                  G   sr   d }| D ]X}|d u rqt |tjr,t|}t |trL|tu rFtdt}q|tu r\tdt}q|d u rntS |S )Nz1Can't mix bytes and non-bytes in path components.)
isinstancer   PathLikefspathbytesstr	TypeError)argsreturn_typeargr   r   r   _infer_return_typeU   s     

r#   c                 C   sd   t | ||}|d u r| }| d u r:|tu r0t} n
tt} |d u rX|tu rRt }nt }| |||fS N)r#   r   templater   fsencoder   r   )prefixsuffixdiroutput_typer   r   r   _sanitize_paramsn   s    
r+   c                   @   s,   e Zd ZdZedd Zdd Zdd ZdS )	_RandomNameSequence%abcdefghijklmnopqrstuvwxyz0123456789_c                 C   s,   t  }|t| dd kr&t | _|| _| jS )N_rng_pid)r   getpidgetattr_Random_rngr.   )selfcur_pidr   r   r   rng   s
    z_RandomNameSequence.rngc                 C   s   | S r$   r   r3   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   ).0dummycchooser   r   
<listcomp>       z0_RandomNameSequence.__next__.<locals>.<listcomp>    )
charactersr5   choicerangejoin)r3   lettersr   r:   r   __next__   s    z_RandomNameSequence.__next__N)__name__
__module____qualname__rA   propertyr5   r7   rF   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| g d	 z| t   W n" t	t
fy   | t j Y n0 | S )
N)TMPDIRTEMPTMPntz~\AppData\Local\Tempz%SYSTEMROOT%\Tempzc:\tempzc:\tmpz\tempz\tmp)z/tmpz/var/tmpz/usr/tmp)r   getenvappendnameextendpath
expanduser
expandvarsgetcwdAttributeErrorr   curdir)dirlistenvnamedirnamer   r   r   _candidate_tempdir_list   s    


r\   c                  C   sh  t  } t }|D ]@}|tjkr,tj|}tdD ]}t| }tj||}zt	|t
d}zdzHtj	|ddd}|d W d    n1 s0    Y  W t| nt| 0 W t| nt| 0 |W     S  ty   Y q4 ty6   tjdkr,tj|r,t|tjr,Y q4Y  qY q4 tyN   Y  qY q40 q4qttjd| d S )	Nd     wbF)closefds   blatrN   z)No usable temporary directory found in %s)r,   r\   r   rX   rS   abspathrC   nextrD   open_bin_openflags_iowritecloseunlinkFileExistsErrorPermissionErrorrQ   isdiraccessW_OKr   FileNotFoundError_errnoENOENT)namerrY   r)   seqrQ   filenamefdfpr   r   r   _get_default_tempdir   s@    	

*
rv   c                   C   s:   t d u r6t  zt d u r t a W t  n
t  0 t S r$   )_name_sequence
_once_lockacquirer,   releaser   r   r   r   _get_candidate_names   s    r{   c           
   	   C   s   t  }|tu rttj|}ttD ]}t|}tj	| || | }t
d| zt||d}	W nR tyx   Y q"Y n> ty   tjdkrtj| rt| tjrY q"n Y n0 |	tj|f  S ttjdd S )Nztempfile.mkstempr^   rN   z#No usable temporary file name found)r{   r   mapr   r&   rC   r   rb   rS   rD   _sysauditrc   ri   rj   rQ   rk   rl   rm   ra   ro   EEXIST)
r)   presufflagsr*   namesrr   rQ   filert   r   r   r   _mkstemp_inner   s*    r   c                 G   sL   | t jv r"| |g|R ddi n&t jdks8t j|sH| |g|R   d S )Nfollow_symlinksFrN   )r   supports_follow_symlinksrQ   rS   islink)funcrS   r    r   r   r   _dont_follow_symlinks  s    
r   c                 C   s<   z
t j}W n ty   Y n0 t|| d tt j| d d S )Nr     )r   chflagsrW   r   chmod)rS   r   r   r   r   _resetperms  s    
r   c                   C   s   t S r$   )r%   r   r   r   r   r	   "  s    r	   c                   C   s   t t S r$   )r   r&   r	   r   r   r   r   r   &  s    r   c                   C   s:   t d u r6t  zt d u r t a W t  n
t  0 t S r$   )r
   rx   ry   rv   rz   r   r   r   r   r   ,  s    r   c                   C   s   t t S r$   )r   r&   r   r   r   r   r   r   8  s    r   Fc                 C   s2   t || |\}} }}|rt}nt}t||| ||S r$   )r+   _text_openflagsrd   r   )r(   r'   r)   textr*   r   r   r   r   r   <  s
    r   c              	   C   s   t || |\}} }}t }|tu r.ttj|}ttD ]}t|}tj	
||| |  }td| zt|d W nR ty   Y q6Y n> ty   tjdkrtj	|rt|tjrY q6n Y n0 |  S ttjdd S )Nztempfile.mkdtempr   rN   z(No usable temporary directory name found)r+   r{   r   r|   r   r&   rC   r   rb   rS   rD   r}   r~   mkdirri   rj   rQ   rk   rl   rm   ro   r   )r(   r'   r)   r*   r   rr   rQ   r   r   r   r   r   c  s,    r   r@   c                 C   s`   |d u 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   r{   rC   r   rb   r   rS   rD   r   ri   ro   r   )r(   r'   r)   r   rr   rQ   r   r   r   r   r     s    
r   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$   )r   rQ   deleter3   r   rQ   r   r   r   r   __init__  s    z_TemporaryFileCloser.__init__rN   c                 C   sL   | j sH| jd urHd| _ z| j  W | jrH|| j n| jrF|| j 0 d S NT)close_calledr   rg   r   rQ   )r3   rh   r   r   r   rg     s    z_TemporaryFileCloser.closec                 C   s   |    d S r$   )rg   r6   r   r   r   __del__  s    z_TemporaryFileCloser.__del__c                 C   s   | j sd| _ | j  d S r   )r   r   rg   r6   r   r   r   rg     s    )T)rG   rH   rI   r   r   r   r   rQ   rh   rg   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 r$   )r   rQ   r   r   _closerr   r   r   r   r     s    z_TemporaryFileWrapper.__init__c                    s^   | j d }t||}t|drD| t  fdd}| j|_|}t|tsZt| || |S )Nr   __call__c                     s    | i |S r$   r   )r    kwargsr   r   r   func_wrapper  s    z7_TemporaryFileWrapper.__getattr__.<locals>.func_wrapper)	__dict__r0   hasattr
_functoolswrapsr   r   intsetattr)r3   rQ   r   ar   r   r   r   __getattr__  s    



z!_TemporaryFileWrapper.__getattr__c                 C   s   | j   | S r$   )r   	__enter__r6   r   r   r   r     s    
z_TemporaryFileWrapper.__enter__c                 C   s   | j |||}|   |S r$   )r   __exit__rg   )r3   excvaluetbresultr   r   r   r     s    z_TemporaryFileWrapper.__exit__c                 C   s   | j   d S r$   )r   rg   r6   r   r   r   rg     s    z_TemporaryFileWrapper.closec                 c   s   | j D ]
}|V  qd S r$   )r   )r3   liner   r   r   r7     s    
z_TemporaryFileWrapper.__iter__N)T)	rG   rH   rI   r   r   r   r   rg   r7   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	y   t
| t|  Y n0 d S )NrN   	bufferingnewlineencodingr   )r+   rd   r   rQ   O_TEMPORARYr   re   rc   r   BaseExceptionrh   rg   )moder   r   r   r(   r'   r)   r   r   r*   r   rt   rQ   r   r   r   r   r     s    



r   posixcygwin	O_TMPFILEc                C   s   t |||\}}}}t}	trz$|	tjB tj @ }
t||
d}W n& tyV   daY nD tyf   Y n40 zt	j|| ||||dW S    t
|  Y n0 t||||	|\}}z"t| t	j|| ||||dW S    t
|  Y n0 d S )Nr^   Fr   )r+   rd   _O_TMPFILE_WORKSr   r   O_CREATrc   IsADirectoryErrorr   re   rg   r   rh   )r   r   r   r   r(   r'   r)   r   r*   r   flags2rt   rQ   r   r   r   r   G  s6    




r   c                   @   s   e Zd ZdZd7ddddZeej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d/d0 Zd8d1d2Zd3d4 Zd5d6 Z dS )9r   Fr   r   r   Nr   c	          
   	   C   sT   d|v 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   )re   BytesIO_fileTextIOWrapper	_max_size_rolled_TemporaryFileArgs)
r3   max_sizer   r   r   r   r(   r'   r)   r   r   r   r   r     s    
zSpooledTemporaryFile.__init__c                 C   s,   | j r
d S | j}|r(| |kr(|   d S r$   )r   r   tellrollover)r3   r   r   r   r   r   _check  s    
zSpooledTemporaryFile._checkc                 C   sv   | j r
d S | j}tf i | j }| _| `| }t|drR|j| 	  n||	  |
|d d| _ d S )Nbufferr   T)r   r   r   r   r   r   r   rf   detachgetvalueseek)r3   r   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
ValueErrorr6   r   r   r   r     s    zSpooledTemporaryFile.__enter__c                 C   s   | j   d S r$   r   rg   r3   r   r   r   r   r   r   r     s    zSpooledTemporaryFile.__exit__c                 C   s
   | j  S r$   )r   r7   r6   r   r   r   r7     s    zSpooledTemporaryFile.__iter__c                 C   s   | j   d S r$   r   r6   r   r   r   rg     s    zSpooledTemporaryFile.closec                 C   s   | j jS r$   )r   r   r6   r   r   r   r     s    zSpooledTemporaryFile.closedc                 C   s   | j jS r$   )r   r   r6   r   r   r   r     s    zSpooledTemporaryFile.encodingc                 C   s   | j jS r$   )r   r   r6   r   r   r   r     s    zSpooledTemporaryFile.errorsc                 C   s   |    | j S r$   )r   r   filenor6   r   r   r   r     s    zSpooledTemporaryFile.filenoc                 C   s   | j   d S r$   )r   flushr6   r   r   r   r     s    zSpooledTemporaryFile.flushc                 C   s
   | j  S r$   )r   isattyr6   r   r   r   r     s    zSpooledTemporaryFile.isattyc                 C   s,   z
| j jW S  ty&   | jd  Y S 0 d S )Nr   )r   r   rW   r   r6   r   r   r   r     s    
zSpooledTemporaryFile.modec                 C   s$   z
| j jW S  ty   Y d S 0 d S r$   )r   rQ   rW   r6   r   r   r   rQ     s    
zSpooledTemporaryFile.namec                 C   s   | j jS r$   )r   newlinesr6   r   r   r   r     s    zSpooledTemporaryFile.newlinesc                 G   s   | j j| S r$   )r   readr3   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  S r$   )r   r   r6   r   r   r   r     s    zSpooledTemporaryFile.tellc                 C   s6   |d u r| j   n|| jkr&|   | j | d S r$   )r   truncater   r   )r3   sizer   r   r   r     s
    
zSpooledTemporaryFile.truncatec                 C   s   | j }||}| | |S r$   )r   rf   r   )r3   sr   rvr   r   r   rf     s    

zSpooledTemporaryFile.writec                 C   s   | j }||}| | |S r$   )r   
writelinesr   )r3   iterabler   r   r   r   r   r     s    

zSpooledTemporaryFile.writelines)r   r   r   NNNNN)N)!rG   rH   rI   r   r   classmethod_typesGenericAlias__class_getitem__r   r   r   r   r7   rg   rJ   r   r   r   r   r   r   r   rQ   r   r   r   r   r   r   r   rf   r   r   r   r   r   r     sJ      







r   c                   @   sX   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
eejZdS )r   Nc                 C   s0   t |||| _tj| | j| jd| d| _d S )NzImplicitly cleaning up {!r})warn_message)r   rQ   _weakreffinalize_cleanupformat
_finalizer)r3   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rxzT|kr(ttj| t| zt| W n  ttfy^    | Y n0 W q t	yt   Y q0 nt |d t	rn d S )Nr   )

issubclassrj   r   r   rS   r[   rh   r   _rmtreern   )r   rS   exc_infoclsrQ   r   r   onerror&  s    z+TemporaryDirectory._rmtree.<locals>.onerror)r   )_shutilrmtree)r   rQ   r   r   r   r   r   $  s    zTemporaryDirectory._rmtreec                 C   s   |  | t|t d S r$   )r   	_warningswarnResourceWarning)r   rQ   r   r   r   r   r   ;  s    
zTemporaryDirectory._cleanupc                 C   s   d | jj| jS )Nz	<{} {!r}>)r   	__class__rG   rQ   r6   r   r   r   __repr__@  s    zTemporaryDirectory.__repr__c                 C   s   | j S r$   )rQ   r6   r   r   r   r   C  s    zTemporaryDirectory.__enter__c                 C   s   |    d S r$   )cleanupr   r   r   r   r   F  s    zTemporaryDirectory.__exit__c                 C   s   | j  r| | j d S r$   )r   r   r   rQ   r6   r   r   r   r   I  s    
zTemporaryDirectory.cleanup)NNN)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   


r   )NNNF)NNN)r   r   NNNNNT)r   r   NNNNN)A__all__	functoolsr   warningsr   iore   osr   shutilr   errnoro   randomr   r1   sysr}   typesr   weakrefr   _threadallocate_lock_allocate_lockO_RDWRr   O_EXCLr   r   r   rd   r   r   r%   rx   r   r#   r+   r,   r\   rv   rw   r{   r   r   r   r	   r   r
   r   r   r   r   r   r   r   r   rQ   platformr   r   r   objectr   r   r   r   r   <module>   s|   




	-
'
( +?   '
   < 