
    kKjt                     z    d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ  G d d	      Z G d
 de      Zy)a  This module contains classes - NamedFileInTemporaryDirectory, TemporaryWorkingDirectory.

These classes add extra features such as creating a named file in temporary directory and
creating a context manager for the working directory which is also temporary.
    N)BufferedWriter)Path)TemporaryDirectory)TracebackType)OptionalTypec            	       h    e Zd ZddedededefdZd ZeZde	fdZ
d	eee      d
ee   dee   fdZy)NamedFileInTemporaryDirectoryfilenamemodebufsizeadd_to_syspathc                     t        di || _        t        | j                  j                        |z  }d|v rdnd}t	        ||||      | _        y)aN  
        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`.

        bNzutf-8)encoding )r   _tmpdirr   nameopenfile)selfr   r   r   r   kwdspathr   s           f/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/IPython/utils/tempdir.py__init__z&NamedFileInTemporaryDirectory.__init__   sK     *1D1DLL%%&1$;4GtWx@	    c                 l    | j                   j                          | j                  j                          y N)r   closer   cleanupr   s    r   r    z%NamedFileInTemporaryDirectory.cleanup    s     		r   returnc                     | j                   S r   )r   r!   s    r   	__enter__z'NamedFileInTemporaryDirectory.__enter__&   s    yyr   typevalue	tracebackc                 $    | j                          y r   )r    )r   r%   r&   r'   s       r   __exit__z&NamedFileInTemporaryDirectory.__exit__)   s    r   N)F)__name__
__module____qualname__strintboolr   r    __del__r   r$   r   r   BaseExceptionr   r)   r   r   r   r
   r
      sq    A AC A# ARV A  G> Xd=&9: 8MCZ gop}g~ r   r
   c                   \     e Zd ZdZdef fdZdeee      dee   dee	   ddf fdZ
 xZS )	TemporaryWorkingDirectoryz
    Creates a temporary directory and sets the cwd to that directory.
    Automatically reverts to previous cwd upon cleanup.
    Usage example:

        with TemporaryWorkingDirectory() as tmpdir:
            ...
    r"   c                     t        j                         | _        t        j                  | j
                         t        t        | #         S r   )	r   cwdold_wd_oschdirr   superr4   r$   )r   	__class__s    r   r$   z#TemporaryWorkingDirectory.__enter__7   s1    hhj		$)).?AAr   excr&   tbNc                 l    t        j                  | j                         t        t        |   |||      S r   )r8   r9   r7   r:   r4   r)   )r   r<   r&   r=   r;   s       r   r)   z"TemporaryWorkingDirectory.__exit__<   s*    		$++.>sE2NNr   )r+   r,   r-   __doc__r.   r$   r   r   r2   r   r)   __classcell__)r;   s   @r   r4   r4   -   sY    B3 B
OHT-%89 O(=BY O_ghu_v O{ O Or   r4   )r?   osr8   ior   pathlibr   tempfiler   typesr   typingr   r   r
   r4   r   r   r   <module>rG      s7       '  ! <O 2 Or   