ó
æNXc           @  s¾   d  Z  d d l m Z d d l Z d d l Z d d l Z y d d l	 m
 Z
 Wn= e k
 r d d l	 m Z m Z d e f d „  ƒ  YZ
 n Xd e f d	 „  ƒ  YZ d
 e
 f d „  ƒ  YZ d S(   s‚   TemporaryDirectory class, copied from Python 3.2.

This is copied from the stdlib and will be standard in Python 3.2 and onwards.
iÿÿÿÿ(   t   print_functionN(   t   TemporaryDirectory(   t   mkdtempt   templateR   c           B  s³   e  Z d  Z d e d d „ Z d „  Z e d „ Z d „  Z	 d „  Z
 e e j ƒ Z e e j j ƒ Z e e j j ƒ Z e e j ƒ Z e e j ƒ Z e j Z e j Z d „  Z RS(	   sF  Create and return a temporary directory.  This has the same
        behavior as mkdtemp but can be used as a context manager.  For
        example:

            with TemporaryDirectory() as tmpdir:
                ...

        Upon exiting the context, the directory and everthing contained
        in it are removed.
        t    c         C  s"   t  | | | ƒ |  _ t |  _ d  S(   N(   R   t   namet   Falset   _closed(   t   selft   suffixt   prefixt   dir(    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt   __init__   s    c         C  s   |  j  S(   N(   R   (   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt	   __enter__#   s    c         C  s­   |  j  r© |  j r© y |  j |  j  ƒ WnQ t t f k
 rz } d t | ƒ k rW ‚  n  t d j | |  ƒ d t j	 ƒd  SXt
 |  _ | r© |  j d j |  ƒ t ƒ q© n  d  S(   Nt   Nones"   ERROR: {!r} while cleaning up {!r}t   files   Implicitly cleaning up {!r}(   R   R   t   _rmtreet	   TypeErrort   AttributeErrort   strt   printt   formatt   _syst   stderrt   Truet   _warnt   Warning(   R   R   t   ex(    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt   cleanup&   s    
	c         C  s   |  j  ƒ  d  S(   N(   R   (   R   t   exct   valuet   tb(    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt   __exit__8   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R   R   (   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt   __del__;   s    c         C  sÆ   x— |  j  | ƒ D]† } |  j | | ƒ } y |  j | ƒ } Wn |  j k
 rW t } n X| rn |  j | ƒ q y |  j | ƒ Wq |  j k
 r• q Xq Wy |  j | ƒ Wn |  j k
 rÁ n Xd  S(   N(   t   _listdirt
   _path_joint   _isdirt	   _os_errorR   R   t   _removet   _rmdir(   R   t   pathR   t   fullnamet   isdir(    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR   L   s     
N(   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R    R!   t   staticmethodt   _ost   listdirR"   R(   t   joinR#   R*   R$   t   removeR&   t   rmdirR'   t   errorR%   t	   _warningst   warnR   R   (    (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR      s   
						t   NamedFileInTemporaryDirectoryc           B  s8   e  Z d  d d „ Z d „  Z e Z d „  Z d „  Z RS(   s   w+biÿÿÿÿc         K  sC   t  |   |  _ t j j |  j j | ƒ } t | | | ƒ |  _ d S(   sN  
        Open a file named `filename` in a temporary directory.

        This context manager is preferred over `NamedTemporaryFile` in
        stdlib `tempfile` when one needs to reopen the file.

        Arguments `mode` and `bufsize` are passed to `open`.
        Rest of the arguments are passed to `TemporaryDirectory`.

        N(   R   t   _tmpdirR/   R(   R1   R   t   openR   (   R   t   filenamet   modet   bufsizet   kwdsR(   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR   d   s    c         C  s   |  j  j ƒ  |  j j ƒ  d  S(   N(   R   t   closeR8   R   (   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR   s   s    c         C  s   |  j  S(   N(   R   (   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR   y   s    c         C  s   |  j  ƒ  d  S(   N(   R   (   R   t   typeR   t	   traceback(    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR    |   s    (   R+   R,   R   R   R!   R   R    (    (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR7   b   s
   		t   TemporaryWorkingDirectoryc           B  s    e  Z d  Z d „  Z d „  Z RS(   sÛ   
    Creates a temporary directory and sets the cwd to that directory.
    Automatically reverts to previous cwd upon cleanup.
    Usage example:

        with TemporaryWorkingDirectory() as tmpdir:
            ...
    c         C  s2   t  j ƒ  |  _ t  j |  j ƒ t t |  ƒ j ƒ  S(   N(   R/   t   getcwdt   old_wdt   chdirR   t   superRA   R   (   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR   ‰   s    c         C  s,   t  j |  j ƒ t t |  ƒ j | | | ƒ S(   N(   R/   RD   RC   RE   RA   R    (   R   R   R   R   (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyR    Ž   s    (   R+   R,   R-   R   R    (    (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyRA   €   s   	(   R-   t
   __future__R    t   osR/   t   warningsR5   t   sysR   t   tempfileR   t   ImportErrorR   R   t   objectR7   RA   (    (    (    sM   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/tempdir.pyt   <module>   s   O