
    &=d                        d dl Z d dlZd dlZddZ e            Ze j        e j        z  e j        z  Z e	e d          r
ee j
        z  Z e	e d          r
ee j        z  ZeZ e	e d          r
ee j        z  ZddZd	edd
ddfdZd ZdS )    Nc                     dg}| r|                     |            |r|                     |           |                     t          j        d                     d                    |          S )a)  
    Generate filename prefix for a temporary file

    Parameters
    ----------
    package : str, optional
        package name, will be included in prefix if given
    extra : str, optional
        extra string to include in prefix

    Returns
    -------
    str
        filename prefix
    	reportbugz%Y%m%d%H%M%S--)appendtimestrftimejoin)packageextraplists      5/usr/lib/python3/dist-packages/reportbug/tempfiles.pytempfile_prefixr      sk      ME W U	LL//00088E??    O_NOINHERIT
O_NOFOLLOWO_BINARYw+bc                     d|v rt          j        | t          d          }nt          j        | t          d          }	 t          j        |||          S # t
          $ r t          j        |            w xY w)a  
    Wrapper for open() setting some flags

    Parameters
    ----------
    filename : str
        file name
    mode : str, optional
        open mode
    bufsize : int, optional
        buffer size in bytes

    Returns
    -------
    an open file object
    bi  )osopen_bin_openflags_text_openflagsfdopen	Exceptionclose)filenamemodebufsizefds       r   open_write_safer"   E   sy    " d{{WX~u55WX66yT7+++   
s   A  A3 Tzw+c                 j    t          j        | |||          \  }}t          j        |||          }||fS )a  
    Wrapper for tempfile.mkstemp

    Main differences are that text defaults to True, and it returns a
    Python file object instead of an os-level file descriptor.

    Parameters
    ----------
    suffix : str, optional
    prefix : str
    dir : str
    text : bool
    mode : str
    bufsize : int

    Returns
    -------
    (file object, str)
        tuple with file object and file name
    )tempfilemkstempr   r   )	suffixprefixdirtextr   r    fhr   r!   s	            r   TempFiler,   d   s;    , #FFC>>LB	2tW	%	%B>r   c                 p    t           j                            |           rt          j        |            dS dS )z
    Clean up a temporary file

    Removes (unlinks) the named file if it exists.

    Parameters
    ----------
    temp_filename : str
        Full filename of the file to clean up.

    Returns
    -------
    None
    N)r   pathexistsunlink)temp_filenames    r   cleanup_temp_filer2      s:     
w~~m$$ !
	-     ! !r   )NN)r   r   )r   r%   r   r   templateO_RDWRO_CREATO_EXCLr   hasattrr   r   r   r   r"   r,   r2    r   r   <module>r9      s  . 
			     2 ? )bj(294
72} &r~%O
72| %r}$O 
72z "bk!N
   > xT   6! ! ! ! !r   