o
    l¨Êhæ  ã                   @   sŒ   d Z ddlZddlZddlZddlZddlZddlZze W n ey)   e	ZY nw dd„ Z
dd„ Zdd„ Zd	Zd
Zddd„Zddd„ZdS )z
Disk management utilities.
é    Nc                 C   sj   d}t  | ¡dg D ]$}t  t j | |¡¡}t|dƒr#||jd 7 }q
||jd d d 7 }q
t|d ƒS )z& Return the disk usage in a directory.r   Ú.Ú	st_blocksi   é   g      �@)	ÚosÚlistdirÚstatÚpathÚjoinÚhasattrr   Úst_sizeÚint)r   ÚsizeÚfiler   © r   ú=/var/www/html/env/lib/python3.10/site-packages/joblib/disk.pyÚ	disk_used   s   
r   c              	   C   sh   d}t ||d |d d�}zt|| d  t| dd… ƒ ƒ}W |S  ttfy3   td| t| ƒf ƒ‚w )z2 Convert a memory text to its value in bytes.
    i   é   é   )ÚKÚMÚGéÿÿÿÿNzQInvalid literal for size give: %s (type %s) should be alike '10G', '500M', '50K'.)Údictr   ÚfloatÚKeyErrorÚ
ValueErrorÚtype)ÚtextÚkiloÚunitsr   r   r   r   Úmemstr_to_bytes)   s   "ü
ÿÿÿr    c              
   C   sF   zt  | ¡ W dS  ty" } z|jtjkr‚ W Y d}~dS d}~ww )zgEnsure directory d exists (like mkdir -p on Unix)
    No guarantee that the directory is writable.
    N)r   ÚmakedirsÚOSErrorÚerrnoÚEEXIST)ÚdÚer   r   r   Úmkdirp7   s   ÿ€ÿr'   gš™™™™™¹?é   c                 C   sn   g }zt  | ¡}W n t jy"   |dur|t j| t ¡ ƒ n‚ Y nw |D ]}t j | |¡}t||d� q%dS )aÌ  Remove all subdirectories in this path.

    The directory indicated by `path` is left in place, and its subdirectories
    are erased.

    If onerror is set, it is called to handle the error with arguments (func,
    path, exc_info) where func is os.listdir, os.remove, or os.rmdir;
    path is the argument to that function that caused it to fail; and
    exc_info is a tuple returned by sys.exc_info().  If onerror is None,
    an exception is raised.
    N)Úonerror)r   r   ÚerrorÚsysÚexc_infor   r	   Údelete_folder)r   r)   ÚnamesÚnameÚfullnamer   r   r   Ú
rm_subdirsJ   s   þþþr1   c              	   C   sŒ   t j | ¡rD|durt | d|¡ dS d}	 z
t | dd¡ W dS  ttfyB   |d7 }|tkr;t 	d 
| t¡¡ ‚ t t¡ Y nw qdS )zBUtility function to cleanup a temporary folder if it still exists.NFr   Tr   z/Unable to delete folder {} after {} tentatives.)r   r   ÚisdirÚshutilÚrmtreer"   ÚWindowsErrorÚRM_SUBDIRS_N_RETRYÚwarningsÚwarnÚformatÚtimeÚsleepÚRM_SUBDIRS_RETRY_TIME)Úfolder_pathr)   Ú	err_countr   r   r   r-   h   s(   þùüùr-   )N)Ú__doc__r   r+   r:   r#   r3   r7   r5   Ú	NameErrorr"   r   r    r'   r<   r6   r1   r-   r   r   r   r   Ú<module>   s&    
ÿ
