U
    þg<                     @   s6   d dl Z d dlZd dlZd dlmZ G dd dZdS )    N)Pathc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd@d$d%Zd&d' Zd(d) ZdAd,d-Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Z d+S )BIOFSc              
   C   s*   t |d}| W  5 Q R  S Q R X d S )Nropenreadselfpathfile r   /opt/rdisk/rdisk/io_fs.pyio_read_text   s    zIOFS.io_read_textc              
   C   s*   t |d}| W  5 Q R  S Q R X d S )Nrbr   r   r   r   r   io_read_bytes   s    zIOFS.io_read_bytesc              
   C   s,   t |d}||W  5 Q R  S Q R X d S )Nwr   writer	   r
   datar   r   r   r   io_write_text   s    zIOFS.io_write_textc              
   C   s,   t |d}||W  5 Q R  S Q R X d S )Nwbr   r   r   r   r   io_write_bytes   s    zIOFS.io_write_bytesc                 O   s   t |f||S N)r   )r	   r
   argskwargsr   r   r   io_open   s    zIOFS.io_openc                 C   s
   t |jS r   )r   suffixr	   r
   r   r   r   	io_suffix   s    zIOFS.io_suffixc                 C   s
   t |jS r   )r   suffixesr   r   r   r   io_suffixes   s    zIOFS.io_suffixesc                 C   s
   t |jS r   )r   stemr   r   r   r   io_stem!   s    zIOFS.io_stemc                 C   s   t j|S r   )osr
   abspathr   r   r   r   io_absolute$   s    zIOFS.io_absolutec                 C   s
   t |jS r   )r   partsr   r   r   r   io_parts'   s    zIOFS.io_partsc                 C   s   t || d S r   )r$   rename)r	   r
   targetr   r   r   	io_rename*   s    zIOFS.io_renamec                 C   s   t jj|f|d S )N/)r$   r
   joinsplit)r	   r
   keyr   r   r   io_joinpath-   s    zIOFS.io_joinpathc                 C   s   t t|jS r   )strr   parentr   r   r   r   	io_parent0   s    zIOFS.io_parentc                 C   s   dd t |jD S )Nc                 S   s   g | ]}t |qS r   )r1   ).0r2   r   r   r   
<listcomp>4   s     z#IOFS.io_parents.<locals>.<listcomp>)r   parentsr   r   r   r   
io_parents3   s    zIOFS.io_parentsc                 C   s
   t |jS r   )r   namer   r   r   r   io_name6   s    zIOFS.io_namec                 K   s   t |jf | d S r   )r   mkdirr	   r
   r   r   r   r   io_mkdir9   s    zIOFS.io_mkdirc                 K   s   t |jf | d S r   )r   touchr;   r   r   r   io_touch<   s    zIOFS.io_touchFc                 C   s$   t |}|r| sd S |  d S r   )r   existsunlink)r	   r
   
missing_okr   r   r   	io_unlink?   s    zIOFS.io_unlinkc                 K   s   t |jf | d S r   )r   rmdirr;   r   r   r   io_rmdirF   s    zIOFS.io_rmdirc                 c   s   t |D ]}|jV  q
d S r   )r$   scandirr
   )r	   r
   
child_pathr   r   r   
io_iterdirI   s    zIOFS.io_iterdirTNc                 c   s    t j|dd dD ]
}|V  qd S )NT)top_downon_error)r$   walk)r	   r
   rH   rI   entryr   r   r   io_walkM   s    zIOFS.io_walkc                 C   s   t | S r   )r   is_dirr   r   r   r   	io_is_dirQ   s    zIOFS.io_is_dirc                 C   s   t | S r   )r   is_filer   r   r   r   
io_is_fileT   s    zIOFS.io_is_filec                 C   s   t | S r   )r   r?   r   r   r   r   	io_existsW   s    zIOFS.io_existsc                 C   s   t | S r   )r   statr   r   r   r   io_statZ   s    zIOFS.io_statc                 C   s   t | d S r   )shutilrmtreer   r   r   r   	io_rmtree]   s    zIOFS.io_rmtreec                 C   s   t || d S r   )rT   copy)r	   srcdstr   r   r   io_copy`   s    zIOFS.io_copyc                 C   s*   t dd t dd t |\}}|S )Nzapplication/vnd.ms-outlookz.msgz
text/plainz.log)	mimetypesadd_type
guess_type)r	   r
   mimetype_r   r   r   io_mimetypec   s    zIOFS.io_mimetypec                 C   s
   t |S r   )rT   
disk_usager   r   r   r   io_disk_usagej   s    zIOFS.io_disk_usagec                 C   s
   |  |S r   )r&   r   r   r   r   io_tmp_readonly_pathm   s    zIOFS.io_tmp_readonly_path)F)TN)!__name__
__module____qualname__r   r   r   r   r   r   r!   r#   r&   r(   r+   r0   r3   r7   r9   r<   r>   rB   rD   rG   rL   rN   rP   rQ   rS   rV   rZ   r`   rb   rc   r   r   r   r   r      s<   

r   )rT   r[   r$   pathlibr   r   r   r   r   r   <module>   s   