U ��.ei�@sZddlZddlZddlZddlZddlZddlZddlZejdd��Zdd�Z dd�Z dS)�Nc cs$t��}z |VW5t�|�XdS)z2Create a temporary directory in a context manager.N)�tempfileZmkdtemp�shutilZrmtree)Ztd�r�?/usr/lib/python3.8/site-packages/pip/_vendor/pep517/dirtools.py�tempdir s rc OsDztj||�WStk r>}z|jtjkr.�W5d}~XYnXdS)zWLike `mkdir`, but does not raise an exception if the directory already exists. N)�os�mkdir�OSError�errnoZEEXIST)�args�kwargs�excrrr�mkdir_ps  rcCs�t��}t�|d�}t�|�D]r\}}}|D]0}tj�||�}tj�||�}|� |dd�q,|D],}tj�||�}tj�||�}|� ||�qbq|S)z0Construct an in-memory zip file for a directory.�w�/�) �io�BytesIO�zipfileZZipFiler�walk�path�join�relpathZwritestr�write)�root�bufferZzip_file�dirs�filesrZfs_pathZrel_pathrrr�dir_to_zipfiles r) rr� contextlibrrr r�contextmanagerrrrrrrr�s