
    `m                         d Z ddlmZ ddlZddlZddlmZ ddl	m
Z
 ej        dk     rddlmZ ddZnddlmZ ej        d	k     reneZ G d
 de          ZdS )z
Partial backport of Python 3.5's tempfile module:

    TemporaryDirectory

Backport modifications are marked with marked with "XXX backport".
    )absolute_importN)rmtree)finalize)      )mkdtempc                 v    d t          | ||                                          D             }t          di |S )ze
        Wrap `tempfile.mkdtemp()` to make the suffix and prefix optional (like Python 3.5).
        c                     i | ]
\  }}|||S N ).0kvs      2lib/python3.11/site-packages/backports/tempfile.py
<dictcomp>zmkdtemp.<locals>.<dictcomp>   s*     $ $ $6Aq] Q"]]    )suffixprefixdirr   )dictitemsold_mkdtemp)r   r   r   kwargss       r   r   r      sQ    $ $fV===CCEE$ $ $ $$V$$$r   )r      c                   H    e Zd ZdZd	dZed             Zd Zd Zd Z	d Z
dS )
TemporaryDirectorya+  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 everything contained
    in it are removed.
    Nc                     t          |||          | _        t          | | j        | j        d                    |                     | _        d S )NzImplicitly cleaning up {!r})warn_message)r   namer   _cleanupformat
_finalizer)selfr   r   r   s       r   __init__zTemporaryDirectory.__init__4   sN    FFC00	"$-6==dCCE E Er   c                 X    t          |           t          j        |t                     d S r   )_rmtree	_warningswarn_ResourceWarning)clsr   r   s      r   r    zTemporaryDirectory._cleanup:   s&    |%566666r   c                 L    d                     | j        j        | j                  S )Nz	<{} {!r}>)r!   	__class____name__r   r#   s    r   __repr__zTemporaryDirectory.__repr__@   s    !!$."949EEEr   c                     | j         S r   )r   r.   s    r   	__enter__zTemporaryDirectory.__enter__C   s
    yr   c                 .    |                                   d S r   )cleanup)r#   excvaluetbs       r   __exit__zTemporaryDirectory.__exit__F   s    r   c                 d    | j                                         rt          | j                   d S d S r   )r"   detachr&   r   r.   s    r   r3   zTemporaryDirectory.cleanupI   s8    ?!!## 	DI	 	r   NNN)r-   
__module____qualname____doc__r$   classmethodr    r/   r1   r7   r3   r   r   r   r   r   (   s        	 	E E E E 7 7 [7
F F F        r   r   r:   )r=   
__future__r   syswarningsr'   shutilr   r&   backports.weakrefr   version_infotempfiler   r   RuntimeWarningResourceWarningr)   objectr   r   r   r   <module>rI      s     ' & & & & & 



     $ $ $ $ $ $ & & & & & &
 f//////% % % % % !     
 &)%5%>%>>>O # # # # # # # # # #r   