3
QfX                 @   sV   d Z ddlZddlZddlZddlZddlZdd Zdd Zdd Zd	Z	dd
dZ
dS )z
Disk management utilities.
    Nc             C   sn   d}x\t j| dg D ]H}t jt jj| |}t|drH||jd 7 }q||jd d d 7 }qW 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   R/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/joblib3/disk.py	disk_used   s    
r   c             C   sl   d}t d||d d}y$t|| d  t| dd  }W n, ttfk
rf   td| t| f Y nX |S )	z7 Convert a memory text to it's value in kilobytes.
    i   r      )KMGNzQInvalid literal for size give: %s (type %s) should be alike '10G', '500M', '50K'.r   )dictr   floatKeyError
ValueErrortype)textZkiloZunitsr   r   r   r   memstr_to_kbytes"   s    $r   c             C   sD   yt j|  W n0 tk
r> } z|jtjkr. W Y dd}~X nX dS )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   mkdirp1   s
    r$   g?c             C   s   g }yt j| }W nB t jk
rT } z$|dk	rB|t j| tj  n W Y dd}~X nX x|D ]}t jj| |}t jj|r\|dk	rtj	|d| q\d}xLytj	|dd P W q t jk
r   |dkrȂ |d7 }t
jt Y qX qW q\W 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.
    NFr   r   )r   r   errorsysexc_infor   r	   isdirshutilrmtreetimesleepRM_SUBDIRS_RETRY_TIME)r   onerrornameserrnamefullnameZ	err_countr   r   r   
rm_subdirsA   s,    
r3   )N)__doc__r    r   r)   r&   r+   r   r   r$   r-   r3   r   r   r   r   <module>   s   