o
    tf                     @  s   d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ ed ZedZG d	d
 d
e
eZdddZdS )    )annotationsN)ENOENT)Literal)FUSEFuseOSErrorLoggingMixIn
OperationsHttpFs)httphttpsftpzhg.fusec                   @  sF   e Zd ZdddZdddZddd
dZdddZdd Zdd Zd	S )MultiHttpFsschemaslist[FsName]c                   s6   t d t|dksJ d fdd|D | _d S )NzStarting FUSE at /r   z must provide at least one schemac                   s   i | ]}|t |fi  qS  r	   ).0Zschemakwargsr   ]/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/higlass/fuse/_httpfs.py
<dictcomp>   s    z(MultiHttpFs.__init__.<locals>.<dictcomp>)loggerinfolenfs)selfr   r   r   r   r   __init__   s   
zMultiHttpFs.__init__pathstrc                 C  sl   | dd^}}t|dkr|d dkrttz| j| }W n ty,   ttw |dd| fS )N/   r    )lstripsplitr   r   r   r   KeyErrorjoin)r   r   rootrestr   r   r   r   _deref   s   zMultiHttpFs._derefNc                 C  sL   t d| |dkrtt| j }|d|S | |\}}|||S )Nz
getattr %sr   )r   debugnextiterr   valuesgetattrr(   )r   r   fhfirstr   r   r   r   r-       s   zMultiHttpFs.getattrsizeintoffsetc                 C  s0   t d|||f | |\}}|||||S )Nzread %s)r   r)   r(   read)r   r   r0   r2   r.   r   r   r   r   r3   (   s   zMultiHttpFs.readc                 C  sF   t d| |dd  dkrt||dkrt| jng }ddg|S )Nz
readdir %sz..r   .)r   r)   NotADirectoryErrorlistr   )r   r   r.   filesr   r   r   readdir-   s
   zMultiHttpFs.readdirc                 C  s   | j  D ]}|| qd S N)r   r,   destroy)r   r   r   r   r   r   r;   4   s   zMultiHttpFs.destroy)r   r   )r   r   r:   )r   r   r0   r1   r2   r1   )	__name__
__module____qualname__r   r(   r-   r3   r9   r;   r   r   r   r   r      s    


r   mount_pointr   disk_cache_dirc                 C  s&   t ddgd|dd}t|| dd d S )Nr   r   i   i  )Zdisk_cache_sizer@   Zlru_capacityT)
foreground)r   r   )r?   r@   r   r   r   r   run9   s   rB   )r?   r   r@   r   )
__future__r   loggingerrnor   typingr   Zfuser   r   r   r   Zsimple_httpfsr
   ZFsName	getLoggerr   r   rB   r   r   r   r   <module>   s    
*