ó
ÚÆ÷Xc           @` s’   d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z e d „  ƒ Z e d „  ƒ Z e d d	 „ ƒ Z d S(
   s?    Contexts for *with* statement providing temporary directories
i    (   t   divisiont   print_functiont   absolute_importN(   t   contextmanager(   t   rmtree(   t   mkdtempc          c` s   t  ƒ  }  |  Vt |  ƒ d S(   sè  Create and return a temporary directory.  This has the same
    behavior as mkdtemp but can be used as a context manager.

    Upon exiting the context, the directory and everthing contained
    in it are removed.

    Examples
    --------
    >>> import os
    >>> with tempdir() as tmpdir:
    ...     fname = os.path.join(tmpdir, 'example_file.txt')
    ...     with open(fname, 'wt') as fobj:
    ...         _ = fobj.write('a string\n')
    >>> os.path.exists(tmpdir)
    False
    N(   R   R   (   t   d(    (    s2   /tmp/pip-build-X4mzal/scipy/scipy/_lib/_tmpdirs.pyt   tempdir
   s    	c          c` sB   t  j ƒ  }  t ƒ  } t  j | ƒ | Vt  j |  ƒ t | ƒ d S(   s®   Create, return, and change directory to a temporary directory

    Examples
    --------
    >>> import os
    >>> my_cwd = os.getcwd()
    >>> with in_tempdir() as tmpdir:
    ...     _ = open('test.txt', 'wt').write('some text')
    ...     assert os.path.isfile('test.txt')
    ...     assert os.path.isfile(os.path.join(tmpdir, 'test.txt'))
    >>> os.path.exists(tmpdir)
    False
    >>> os.getcwd() == my_cwd
    True
    N(   t   ost   getcwdR   t   chdirR   (   t   pwdR   (    (    s2   /tmp/pip-build-X4mzal/scipy/scipy/_lib/_tmpdirs.pyt
   in_tempdir!   s    	c         c` sD   t  j ƒ  } |  d k r! | Vd St  j |  ƒ |  Vt  j | ƒ d S(   sf   Change directory to given directory for duration of ``with`` block

    Useful when you want to use `in_tempdir` for the final test, but
    you are still debugging.  For example, you may want to do this in the end:

    >>> with in_tempdir() as tmpdir:
    ...     # do something complicated which might break
    ...     pass

    But indeed the complicated thing does break, and meanwhile the
    ``in_tempdir`` context manager wiped out the directory with the
    temporary files that you wanted for debugging.  So, while debugging, you
    replace with something like:

    >>> with in_dir() as tmpdir: # Use working directory by default
    ...     # do something complicated which might break
    ...     pass

    You can then look at the temporary file outputs to debug what is happening,
    fix, and finally replace ``in_dir`` with ``in_tempdir`` again.
    N(   R   R	   t   NoneR
   (   t   dirt   cwd(    (    s2   /tmp/pip-build-X4mzal/scipy/scipy/_lib/_tmpdirs.pyt   in_dir:   s    (   t   __doc__t
   __future__R    R   R   R   t
   contextlibR   t   shutilR   t   tempfileR   R   R   R   R   (    (    (    s2   /tmp/pip-build-X4mzal/scipy/scipy/_lib/_tmpdirs.pyt   <module>   s   