MINI MINI MANI MO
3
  \h                 @   s.  d ddddddddd	d
ddg
Z d
dlZd
dlZd
dlZd
dlZd
dl	Z
d
dlZd
dl
mZ d
dlZyd
dlZW n ek
r   d
dlZY nX ejZejejB ejB ZeedreejO ZeZeedreejO ZeedrejZndZdZ e Z!eedrej"Z#needrej$Z#ndd Z#dd Z%dd Z&dd Z'G dd dZ(d d! Z)d"d# Z*da+d$d% Z,d&d' Z-d(d Z.d)d Z/da0d*d
 Z1d+d Z2d?d-dZ3d@d.dZ4d/e dfd0dZ5G d1d2 d2Z6G d3d4 d4Z7dBd8d Z8ej9d9ksej:j;d:kre8Z<need;a=dDd<dZ<G d=d dZ>G d>d de?Z@dS )ENamedTemporaryFile
TemporaryFileSpooledTemporaryFileTemporaryDirectorymkstempmkdtempmktempTMP_MAX
gettempprefixtempdir
gettempdirgettempprefixbgettempdirb    N)Random
O_NOFOLLOWO_BINARYi'  Ztmplstatstatc             C   s   t j| t j}t j| d S )N)_osopenO_RDONLYclose)fnfd r    /usr/lib64/python3.6/tempfile.py_statT   s    r   c             C   s*   yt |  W n tk
r    dS X dS d S )NFT)r   OSError)r   r   r   r   _existsX   s
    r   c              G   s`   d }xJ| D ]B}|d krq
t |tr8|tkr2tdt}q
|tkrHtdt}q
W |d kr\tS |S )Nz1Can't mix bytes and non-bytes in path components.)
isinstancebytesstr	TypeError)argsZreturn_typeargr   r   r   _infer_return_typea   s    
r%   c             C   sd   t | ||}|d kr| }| d kr:|tkr0t} n
tjt} |d krX|tkrRt }nt }| |||fS )N)r%   r!   templater   fsencoder   r
   )prefixsuffixdiroutput_typer   r   r   _sanitize_paramsv   s    
r,   c               @   s,   e Zd ZdZedd Zdd Zdd ZdS )	_RandomNameSequenceZ%abcdefghijklmnopqrstuvwxyz0123456789_c             C   s,   t j }|t| dd kr&t | _|| _| jS )N_rng_pid)r   getpidgetattr_RandomZ_rngr.   )selfZcur_pidr   r   r   rng   s
    z_RandomNameSequence.rngc             C   s   | S )Nr   )r2   r   r   r   __iter__   s    z_RandomNameSequence.__iter__c                s0   | j  | jj fddtdD }dj|S )Nc                s   g | ]} qS r   r   ).0Zdummy)cchooser   r   
<listcomp>