
    z%i<y                        	 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j2                  ej4                  z  ej6                  z  Z eed      reej<                  z  ZeZ eed      reej@                  z  Z eed      rejB                  Z!ndZ!dZ" e       Z#d	 Z$d
 Z%d Z& G d d      Z'd Z(d Z)da*d Z+d Z,d Z-d Z.da/d Z0d Z1d Z2d+dZ3d,dZ4de"dfdZ5 G d d      Z6 G d d      Z7	 	 	 d-ddd d!Z8ejr                  d"k7  sejt                  d#k(  re8Z;n eed$      a<	 	 	 d.dd%d&Z; G d' d(ejz                        Z> G d) d*      Z?y)/)NamedTemporaryFileTemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAXgettempprefixtempdir
gettempdirgettempprefixbgettempdirb    N)Random
O_NOFOLLOWO_BINARYr	   i'  tmpc                 N    	 t        j                  |        y# t        $ r Y yw xY w)NTF)_oslstatOSError)fns    </home/uftp/.pyenv/versions/3.12.0/lib/python3.12/tempfile.py_existsr   L   s+    		"       	$$c                  T   	 d }| D ]w  }|t        |t        j                        rt        j                  |      }t        |t              r|t
        u rt        d      t        }_|t        u rt        d      t
        }y |&t        t        t        t
              rt
        S t        S |S )Nz1Can't mix bytes and non-bytes in path components.)
isinstancer   PathLikefspathbytesstr	TypeErrorr   )argsreturn_typeargs      r   _infer_return_typer&   U   s    LK ;c3<<(**S/Cc5!c! !3 4 4Ke# !3 4 4K!" ?j#6J L    c                     	 t        | ||      }| |       }| (|t        u rt        } nt        j                  t              } ||t        u rt               }n
t               }| |||fS N)r&   r!   templater   fsencoder   r   )prefixsuffixdiroutput_types       r   _sanitize_paramsr0   r   si    C$VVS9K~~#F\\(+F
{#,C-C63++r'   c                   .    e Zd Z	 dZed        Zd Zd Zy)_RandomNameSequence%abcdefghijklmnopqrstuvwxyz0123456789_c                     t        j                         }|t        | dd       k7  rt               | _        || _        | j                  S )N_rng_pid)r   getpidgetattr_Random_rngr5   )selfcur_pids     r   rngz_RandomNameSequence.rng   s8    **,gdJ55	DI#DMyyr'   c                     | S r)    r:   s    r   __iter__z_RandomNameSequence.__iter__   s    r'   c                 n    dj                  | j                  j                  | j                  d            S )N    )k)joinr<   choices
charactersr?   s    r   __next__z_RandomNameSequence.__next__   s)    wwtxx''1'=>>r'   N)__name__
__module____qualname__rG   propertyr<   r@   rH   r>   r'   r   r2   r2      s*    + 9J ?r'   r2   c                     	 g } dD ]+  }t        j                  |      }|s| j                  |       - t         j                  dk(  rR| j	                  t         j
                  j                  d      t         j
                  j                  d      ddddg       n| j	                  g d	       	 | j                  t        j                                | S # t        t        f$ r# | j                  t         j                         Y | S w xY w)
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dirnames      r   _candidate_tempdir_listr_      s    & G + ,**W%GNN7+,
 xx4,,-DE,,-AB#Y'D 	E 	9:#szz|$ N G$ #szz"N#s   -#C .DDc                  ~   	 t               } t               }|D ]  }|t        j                  k7  rt        j                  j                  |      }t        d      D ]  }t        |       }t        j                  j                  ||      }	 t        j                  |t        d      }	 	 t        j                  |d       t        j                  |       	 t        j                  |       |c c S   t+        t,        j.                  d|z        # t        j                  |       w xY w# t        j                  |       w xY w# t        $ r Y t        $ r^ t        j                   dk(  rFt        j                  j#                  |      r't        j$                  |t        j&                        rY SY  t(        $ r Y  w xY w)Nd     s   blatrQ   z)No usable temporary directory found in %s)r2   r_   r   r[   rV   abspathrangenextrE   open_bin_openflagswritecloseunlinkFileExistsErrorPermissionErrorrT   isdiraccessW_OKr   FileNotFoundError_errnoENOENT)namerr\   r.   seqrT   filenamefds          r   _get_default_tempdirrw      sX   >  !E%'G #**((""3'C: 	C;Dxx}}S$/HXXh>)&		"g.		"JJx(
		8 FMMG#$% % 		"JJx(" "  HH$)<JJsCHH- sI   D?$D:D%D?D""D%%D<<D??	F<
AF</F<;F<c                      	 t         ?t        j                          	 t         
t               a t        j	                          t         S t         S # t        j	                          w xY wr)   )_name_sequence
_once_lockacquirer2   releaser>   r'   r   _get_candidate_namesr}      sS    A 	!%!4!6 >     A A#c                    	 t         j                  j                  |       } t               }|t        u rt        t         j                  |      }t        t              D ]f  }t        |      }t         j                  j                  | ||z   |z         }t        j                  d|       	 t        j                  ||d      }	|	|fc S  t        t(        j*                  d      # t        $ r Y t        $ rZ t         j                   dk(  rEt         j                  j#                  |       r&t        j$                  | t         j&                        rY  w xY w)Nztempfile.mkstemprb   rQ   z#No usable temporary file name found)r   rV   rc   r}   r    mapr+   rd   r	   re   rE   _sysauditrf   rk   rl   rT   rm   rn   ro   rq   EEXIST)
r.   presufflagsr/   namesrt   rT   filerv   s
             r   _mkstemp_innerr      s   H
((

3
C "EeCLL%(W~ E{xx}}S#*s"23

%t,	$u-B 4x!$ &--?A A  	 	 D SXX^^C%8

3)	s   'C	E*AE
Ec                  6    	 t        j                  t              S r)   )r   fsdecoder*   r>   r'   r   r
   r
     s    A<<!!r'   c                  6    	 t        j                  t              S r)   )r   r+   r*   r>   r'   r   r   r     s    @<<!!r'   c                      	 t         ?t        j                          	 t         
t               a t        j	                          t         S t         S # t        j	                          w xY wr)   )r   rz   r{   rw   r|   r>   r'   r   _gettempdirr     sM    0	!.0 N7N  r~   c                  >    	 t        j                  t                     S r)   )r   r   r   r>   r'   r   r   r   )  s    *<<&&r'   c                  >    	 t        j                  t                     S r)   )r   r+   r   r>   r'   r   r   r   -  s    ,<<&&r'   c                 d    	 t        || |      \  }} }}|rt        }nt        }t        ||| ||      S r)   )r0   _text_openflagsrg   r   )r-   r,   r.   textr/   r   s         r   r   r   1  s@    8 (8'L$FFC#vvukBBr'   c                    	 t        || |      \  }} }}t               }|t        u rt        t        j
                  |      }t        t              D ]  }t        |      }t        j                  j                  |||z   | z         }t        j                  d|       	 t	        j                  |d       t        j                  j)                  |      c S  t        t*        j,                  d      # t        $ r Y t        $ r[ t        j                   dk(  rFt        j                  j#                  |      r't	        j$                  |t        j&                        rY 	 w xY w)Nztempfile.mkdtemp  rQ   z(No usable temporary directory name found)r0   r}   r    r   r   r+   rd   r	   re   rV   rE   r   r   mkdirrk   rl   rT   rm   rn   ro   rc   rq   r   )r-   r,   r.   r/   r   rt   rT   r   s           r   r   r   X  s   
 (8'L$FFC "EeCLL%(W~ &E{xx}}S&4-&"89

%t,	IIdE" xx%%!&$ &--DF F  	 	 D SXX^^C%8

3)	s   C,,	E7AEErB   c                    	 |
t               }t               }t        t              D ]B  }t	        |      }t
        j                  j                  |||z   | z         }t        |      r@|c S  t        t        j                  d      )Nz"No usable temporary filename found)r   r}   rd   r	   re   r   rV   rE   r   rk   rq   r   )r-   r,   r.   r   rt   rT   r   s          r   r   r     s|    " {l "EW~ E{xx}}S&4-&"89t}K	 &-->@ @r'   c                   d    e Zd Z	 dZdZddZej                  dk(  ej                  fdZ	d Z
d Zy)	_TemporaryFileCloserFc                 <    || _         || _        || _        || _        y r)   )r   rT   deletedelete_on_closer:   r   rT   r   r   s        r   __init__z_TemporaryFileCloser.__init__  s    		.r'   rQ   c                    | j                   sed| _         	 | j                  s!d| _        | j                  j                          | j                  r#|r| j
                  s	  || j                         y y y y # t        $ r Y y w xY w# | j                  r2|r| j
                  s#	  || j                         w # t        $ r Y w w xY ww w xY wNT)cleanup_calledclose_calledr   ri   r   r   rT   rp   )r:   windowsrj   s      r   cleanupz_TemporaryFileCloser.cleanup  s    """&D(((,D%IIOO% ;;D4H4Htyy) 5I; # -  ;;D4H4Htyy),  5I;sA   -B A3 3	A?>A?CB10C1	B=:C<B==Cc                    | j                   sMd| _         	 | j                  j                          | j                  r| j                  r| j                          y y y y # | j                  r| j                  r| j                          w w w xY wr   )r   r   ri   r   r   r   r?   s    r   ri   z_TemporaryFileCloser.close  sm       $D#		!;;4#7#7LLN $8; !
 ;;4#7#7LLN $8;s   A ,Bc                 $    | j                          y r)   )r   r?   s    r   __del__z_TemporaryFileCloser.__del__  s    r'   NTT)rI   rJ   rK   r   r   r   r   rT   rj   r   ri   r   r>   r'   r   r   r     s;     NL/  #xx4/  #r'   r   c                   4    e Zd Z	 ddZd Zd Zd Zd Zd Zy)	_TemporaryFileWrapperc                 F    || _         || _        t        ||||      | _        y r)   )r   rT   r   _closerr   s        r   r   z_TemporaryFileWrapper.__init__  s%    		+D$,;=r'   c                     | j                   d   }t        ||      }t        |d      r2|t        j                        fd       }| j
                  |_        |}t        |t              st        | ||       |S )Nr   __call__c                       | i |S r)   r>   )r#   kwargsfuncs     r   func_wrapperz7_TemporaryFileWrapper.__getattr__.<locals>.func_wrapper  s    T,V,,r'   )	__dict__r7   hasattr
_functoolswrapsr   r   intsetattr)r:   rT   r   ar   r   s        @r   __getattr__z!_TemporaryFileWrapper.__getattr__  sy     }}V$D$1j!Dd#- $- $(<<L A!S!D$"r'   c                 :    | j                   j                          | S r)   )r   	__enter__r?   s    r   r   z_TemporaryFileWrapper.__enter__  s    		r'   c                 t    | j                   j                  |||      }| j                  j                          |S r)   )r   __exit__r   r   )r:   excvaluetbresults        r   r   z_TemporaryFileWrapper.__exit__  s/    ##C3r'   c                 :    	 | j                   j                          y r)   )r   ri   r?   s    r   ri   z_TemporaryFileWrapper.close  s    	 	r'   c              #   6   K   | j                   D ]  }|  y wr)   )r   )r:   lines     r   r@   z_TemporaryFileWrapper.__iter__   s       II 	DJ	s   Nr   )	rI   rJ   rK   r   r   r   r   ri   r@   r>   r'   r   r   r     s%    =*
r'   r   T)errorsr   c          	         	 t              \  t        t        j                  dk(  r|r|	rt        j                  z  d| vrt        j                  |      }d fd}
	 t        j                  | |||||
      }	 t        |d|      }t        |d|      }|_        t        |||	      S #  |j                           xY w#  ,t        j                  dk(  r|r|	st        j                          xY w)NrQ   bc                  ,    t              \  }|S r)   )r   )r#   rv   r.   r   rT   r/   r,   r-   s     r   openerz"NamedTemporaryFile.<locals>.opener1  s    !#vvukJD	r'   	bufferingnewlineencodingr   r   bufferraw)r0   rg   r   rT   O_TEMPORARY_iotext_encodingrf   r7   r   ri   rj   )moder   r   r   r-   r,   r.   r   r   r   r   r   r   r   rT   r/   s       ```      @@@r   r   r   	  s   . (8'L$FFCE xx4F 
$$$X.D xxTY '(6%'	$$/C#uc*CCH(tV_MM	JJLHHOJJts   0C .B< <CC 1Dposixcygwin	O_TMPFILEr   c          	         	 d| vrt        j                  |      }t              \  t        t        rId fd}	 t        j
                  | |||||      }	t        |	d|	      }
t        |
d|
      }
|
_        |	S d fd}t        j
                  | |||||      }	t        |	d|	      }
t        |
d|
      }
|
_        |	S # t        $ r daY Xt        $ r Y bw xY w)Nr   c                      t         j                  z  t         j                   z  }t        j                  |d      S )Nrb   )r   r   O_CREATrf   )r#   flags2r.   rv   r   s     r   r   zTemporaryFile.<locals>.openerl  s3    #--/CKK<?XXc651	r'   r   r   r   Fc                      t              \  }	 t        j                  |       S # t        $ r}t        j                          d }~ww xY wr)   )r   r   rj   BaseExceptionri   )	r#   rT   er.   rv   r   r/   r,   r-   s	      r   r   zTemporaryFile.<locals>.opener  sQ    %c665+NHB

4  I ! 		"s   , 	AAA)
r   r   r0   rg   _O_TMPFILE_WORKSrf   r7   rT   IsADirectoryErrorr   )r   r   r   r   r-   r,   r.   r   r   r   r   rv   r   r/   s       ```    @@@r   r   r   R  s   	 d?((2H+;FFC+P([B
xxTY(/('-f> dHd3c5#.& 	 	 xxTY '(6%' dHd+c5#&E % ) $)   s   	>C C+ C+*C+c                   B   e Zd Z	 dZ	 	 	 d$dddZ eej                        Zd Z	d Z
d Zd Zd	 Zd
 Zd Zed        Zed        Zed        Zd Zd Zd Zed        Zed        Zed        Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d%dZ$d  Z%d! Z&d" Z'd# Z(y)&r   FNr   c	          	         d|v rt        j                         | _        nEt        j                  |      }t        j                  t        j                         ||	|      | _        || _        d| _        ||||||||	d| _        y )Nr   )r   r   r   F)r   r   r-   r,   r   r   r.   r   )r   BytesIO_filer   TextIOWrapper	_max_size_rolled_TemporaryFileArgs)
r:   max_sizer   r   r   r   r-   r,   r.   r   s
             r   r   zSpooledTemporaryFile.__init__  sy     $;DJ((2H**3;;=%-f$+-DJ "+/i-3v/7G*-#Ar'   c                     | j                   ry | j                  }|r%|j                         |kD  r| j                          y y y r)   )r   r   tellrollover)r:   r   r   s      r   _checkzSpooledTemporaryFile._check  s4    <<>>		h.MMO /8r'   c                    | j                   ry | j                  }t        di | j                  x}| _        | `|j	                         }t        |d      r8|j                  j                  |j                         j                                n|j                  |j                                |j                  |d       d| _         y )Nr   r   Tr>   )r   r   r   r   r   r   r   rh   detachgetvalueseek)r:   r   newfileposs       r   r   zSpooledTemporaryFile.rollover  s    <<zz,Gt/F/FGG$*#iik7H%NN  !7!7!9:MM$--/*S!r'   c                 H    | j                   j                  rt        d      | S )Nz%Cannot enter context with closed file)r   closed
ValueErrorr?   s    r   r   zSpooledTemporaryFile.__enter__  s     ::DEEr'   c                 8    | j                   j                          y r)   r   ri   r:   r   r   r   s       r   r   zSpooledTemporaryFile.__exit__      

r'   c                 6    | j                   j                         S r)   )r   r@   r?   s    r   r@   zSpooledTemporaryFile.__iter__      zz""$$r'   c                     | j                   s=t        j                  dj                  |       t        d|        | j                          y y )NzUnclosed file {!r}   )
stacklevelsource)r   	_warningswarnformatResourceWarningri   r?   s    r   r   zSpooledTemporaryFile.__del__  s<    {{NN$++D1	 JJL r'   c                 8    | j                   j                          y r)   r   r?   s    r   ri   zSpooledTemporaryFile.close  r   r'   c                 .    | j                   j                  S r)   )r   r   r?   s    r   r   zSpooledTemporaryFile.closed      zz   r'   c                 .    | j                   j                  S r)   )r   r   r?   s    r   r   zSpooledTemporaryFile.encoding      zz"""r'   c                 .    | j                   j                  S r)   )r   r   r?   s    r   r   zSpooledTemporaryFile.errors  r  r'   c                 V    | j                          | j                  j                         S r)   )r   r   filenor?   s    r   r  zSpooledTemporaryFile.fileno  s    zz  ""r'   c                 8    | j                   j                          y r)   )r   flushr?   s    r   r  zSpooledTemporaryFile.flush  r   r'   c                 6    | j                   j                         S r)   )r   isattyr?   s    r   r  zSpooledTemporaryFile.isatty      zz  ""r'   c                 l    	 | j                   j                  S # t        $ r | j                  d   cY S w xY w)Nr   )r   r   rZ   r   r?   s    r   r   zSpooledTemporaryFile.mode  s5    	3::??" 	3**622	3s    33c                 N    	 | j                   j                  S # t        $ r Y y w xY wr)   )r   rT   rZ   r?   s    r   rT   zSpooledTemporaryFile.name  s'    	::??" 		r   c                 .    | j                   j                  S r)   )r   newlinesr?   s    r   r  zSpooledTemporaryFile.newlines  r
  r'   c                 6    | j                   j                         S r)   )r   readabler?   s    r   r  zSpooledTemporaryFile.readable  r   r'   c                 4     | j                   j                  | S r)   )r   readr:   r#   s     r   r  zSpooledTemporaryFile.read      tzz%%r'   c                 4     | j                   j                  | S r)   )r   read1r  s     r   r  zSpooledTemporaryFile.read1  s    tzz&&r'   c                 8    | j                   j                  |      S r)   )r   readintor:   r   s     r   r   zSpooledTemporaryFile.readinto  s    zz""1%%r'   c                 8    | j                   j                  |      S r)   )r   	readinto1r!  s     r   r#  zSpooledTemporaryFile.readinto1  s    zz##A&&r'   c                 4     | j                   j                  | S r)   )r   readliner  s     r   r%  zSpooledTemporaryFile.readline"  s    "tzz""D))r'   c                 4     | j                   j                  | S r)   )r   	readlinesr  s     r   r'  zSpooledTemporaryFile.readlines%  s    #tzz##T**r'   c                 6    | j                   j                         S r)   )r   seekabler?   s    r   r)  zSpooledTemporaryFile.seekable(  r   r'   c                 4     | j                   j                  | S r)   )r   r   r  s     r   r   zSpooledTemporaryFile.seek+  r  r'   c                 6    | j                   j                         S r)   )r   r   r?   s    r   r   zSpooledTemporaryFile.tell.  s    zz  r'   c                     || j                   j                         S || j                  kD  r| j                          | j                   j                  |      S r)   )r   truncater   r   )r:   sizes     r   r-  zSpooledTemporaryFile.truncate1  sD    <::&&((dnn$::&&t,,r'   c                 6    | j                   j                         S r)   )r   writabler?   s    r   r0  zSpooledTemporaryFile.writable9  r   r'   c                 b    | j                   }|j                  |      }| j                  |       |S r)   )r   rh   r   )r:   sr   rvs       r   rh   zSpooledTemporaryFile.write<  s)    zzZZ]D	r'   c                 b    | j                   }|j                  |      }| j                  |       |S r)   )r   
writelinesr   )r:   iterabler   r3  s       r   r5  zSpooledTemporaryFile.writelinesB  s*    zz__X&D	r'   c                 6    | j                   j                         S r)   )r   r   r?   s    r   r   zSpooledTemporaryFile.detachH  r  r'   )r   w+bNNNNNr)   ))rI   rJ   rK   r   r   classmethod_typesGenericAlias__class_getitem__r   r   r   r   r@   r   ri   rL   r   r   r   r  r  r  r   rT   r  r  r  r  r   r#  r%  r'  r)  r   r   r-  r0  rh   r5  r   r>   r'   r   r   r     s.    G9;(,/3A?CA" $F$7$78*
% ! ! # # ! !## 3 3   # #%&'&'*+%&!-%#r'   r   c                       e Zd Z	 	 	 ddddZedd       Zedd       Zd Zd Zd	 Z	d
 Z
 eej                        Zy)r   NT)r   c                    t        |||      | _        || _        || _        t	        j
                  | | j                  | j                  dj                  |       | j                  | j                        | _        y )NzImplicitly cleaning up {!r})warn_messageignore_errorsr   )	r   rT   _ignore_cleanup_errors_delete_weakreffinalize_cleanupr  
_finalizer)r:   r-   r,   r.   ignore_cleanup_errorsr   s         r   r   zTemporaryDirectory.__init__`  s`    FFC0	&;#"++$--6==dC55dllLr'   c                 F      fd}t        j                  |       y )Nc                 X   t        |t              rNd }	 |k7  r% |t        j                  j	                  |              ||       	 t        j
                  |       y y t        |t              ry s y # t        t        f$ r j                  |       Y :w xY w# t        $ r Y y w xY w)Nc                 |    	 t        j                  | d       t        j                  | d       y # t        $ r Y "w xY w)Nr   r   )r   chflagsrZ   chmod)rV   s    r   
resetpermsz=TemporaryDirectory._rmtree.<locals>.onexc.<locals>.resetpermsn  s9    D!, IIdE* * s   / 	;;rA  )	r   rl   r   rV   r^   rj   r   _rmtreerp   )r   rV   r   rN  clsrA  rT   s       r   onexcz)TemporaryDirectory._rmtree.<locals>.onexcl  s    #/+t|"388#3#3D#9:t$G

4( G C!23$ % .? GDFG( s/   2B 	A5 5"BB BB 	B)(B))rR  )_shutilrmtree)rQ  rT   rA  rR  s   ``` r   rP  zTemporaryDirectory._rmtreej  s    	6 	t5)r'   c                 d    |r.| j                  ||       t        j                  |t               y y NrO  )rP  r  r  r  )rQ  rT   r@  rA  r   s        r   rF  zTemporaryDirectory._cleanup  s(    KKMK:NN<9 r'   c                 b    dj                  | j                  j                  | j                        S )Nz	<{} {!r}>)r  	__class__rI   rT   r?   s    r   __repr__zTemporaryDirectory.__repr__  s#    !!$.."9"9499EEr'   c                     | j                   S r)   )rT   r?   s    r   r   zTemporaryDirectory.__enter__  s    yyr'   c                 >    | j                   r| j                          y y r)   )rC  r   r   s       r   r   zTemporaryDirectory.__exit__  s    <<LLN r'   c                     | j                   j                         s)t        j                  j	                  | j
                        r(| j                  | j
                  | j                         y y rV  )rG  r   r   rV   existsrT   rP  rB  r?   s    r   r   zTemporaryDirectory.cleanup  sE    ??!!#sxxtyy'ALL$2M2MLN (Br'   NNNF)F)FT)rI   rJ   rK   r   r:  rP  rF  rY  r   r   r   r;  r<  r=  r>   r'   r   r   r   L  so    & 6:',L8<L * *< : :
FO $F$7$78r'   r   r^  )NNN)r8  r9  NNNNNT)r8  r9  NNNNN)@__all__	functoolsr   warningsr  ior   osr   shutilrS  errnorq   randomr   r8   sysr   typesr;  weakrefrD  _threadallocate_lock_allocate_lockO_RDWRr   O_EXCLr   r   r   rg   r   r	   r*   rz   r   r&   r0   r2   r_   rw   ry   r}   r   r
   r   r   r   r   r   r   r   r   r   r   r   rT   platformr   r   IOBaser   r   r>   r'   r   <module>rq     s  2       $    &&**s{{*SZZ7
3s~~%O 
3
cll"N
3	kkGG  
:,$? ?06*%X A@"" 
''$CN&FP X4 @@( (V< <| ;?9=(,<8<'+<| 88w$--83 'M sK09=8<I*.IVl#3:: l#^Q9 Q9r'   