o
    h                     @   sR   d dl Z d dlZd dlZd dlZd dlZG dd dejZG dd dejjZ	dS )    Nc                       s^   e Zd ZdZdZd fdd	ZdddZdd	d
Zdd ZdddZ	dd Z
dddZ  ZS )JupyterFileSystemz?View of the files as seen by a Jupyter server (notebook or lab))jupyterjlabNc              
      s   d|v r,|du r$z
t d|d }W n ty# } ztd|d}~ww |ddd }|dd | _t | _	|rDd	| | j	j
d
< t jdi | dS )aD  

        Parameters
        ----------
        url : str
            Base URL of the server, like "http://127.0.0.1:8888". May include
            token in the string, which is given by the process when starting up
        tok : str
            If the token is obtained separately, can be given here
        kwargs
        ?Nztoken=([a-z0-9]+)r   zCould not determine token   /z/api/contentsztoken Authorization )refindall
IndexError
ValueErrorsplitrstripurlrequestsSessionsessionheaderssuper__init__)selfr   tokkwargse	__class__r	   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fsspec/implementations/jupyter.pyr      s   

zJupyterFileSystem.__init__Tc                 K   s   |  |}| j| j d| }|jdkrt|S |  | }|d dkr-|d }n|g}|D ]}|d|d< |d |d dkrJd	|d< q2|rO|S d
d |D S )Nr     type	directorycontentpathnamenotebookfilec                 S   s   g | ]}|d  qS )r#   r	   ).0or	   r	   r   
<listcomp><   s    z(JupyterFileSystem.ls.<locals>.<listcomp>)	_strip_protocolr   getr   status_codeFileNotFoundErrorraise_for_statusjsonpop)r   r"   detailr   routr'   r	   r	   r   ls)   s$   



zJupyterFileSystem.lsc                 K   sx   |  |}| j| j d| }|jdkrt|S |  | }|d dkr/|d  }nt	
|d }||| S )Nr   r   formattextr!   )r)   r   r*   r   r+   r,   r-   r.   encodebase64	b64decode)r   r"   startendr   r1   r2   br	   r	   r   cat_file>   s   

zJupyterFileSystem.cat_filec                 K   sV   |  |}|ddd |t|t| ddd}| jj| j d| |d d S )Nr   r   r7   r%   )r#   r"   sizer!   r4   r   r.   )	r)   rsplitlenr7   	b64encodedecoder   putr   )r   r"   value_r.   r	   r	   r   	pipe_fileL   s   
 zJupyterFileSystem.pipe_filec                 K   sj   |  |}|rd|v r| |ddd d |ddd |d d dd}| jj| j d| |d d S )	Nr   r   r   Tr=   r    )r#   r"   r>   r!   r   r?   )r)   mkdirr@   r   rD   r   )r   r"   create_parentsr   r.   r	   r	   r   rH   X   s   
 zJupyterFileSystem.mkdirc                 C   s&   |  |}| j| j d|  d S )Nr   )r)   r   deleter   )r   r"   r	   r	   r   _rme   s   
zJupyterFileSystem._rmrbc                 K   s4   |  |}|dkr| |}t|S t| |ddS )NrL   wb)mode)r)   r<   ioBytesIOSimpleFileWriter)r   r"   rN   r   datar	   r	   r   _openi   s
   


zJupyterFileSystem._open)N)T)NN)rL   )__name__
__module____qualname____doc__protocolr   r3   r<   rG   rH   rK   rS   __classcell__r	   r	   r   r   r   
   s    


r   c                   @   s   e Zd ZdddZdS )rQ   Fc                 C   s6   |du rdS | j d | j  }| j| j| dS )zWNever uploads a chunk until file is done

        Not suitable for large files
        Fr   N)bufferseekreadfsrG   r"   )r   finalrR   r	   r	   r   _upload_chunks   s
   
zSimpleFileWriter._upload_chunkN)F)rT   rU   rV   r_   r	   r	   r	   r   rQ   r   s    rQ   )
r7   rO   r
   r   fsspecAbstractFileSystemr   specAbstractBufferedFilerQ   r	   r	   r	   r   <module>   s    h