
    wg                         d dl Z d dlZd dlZd dlZd dlZ G d dej
                        Z G d dej                  j                        Z	y)    Nc                   T     e Zd ZdZdZd
 fd	ZddZddZd ZddZ	d Z
dd	Z xZS )JupyterFileSystemz?View of the files as seen by a Jupyter server (notebook or lab))jupyterjlabc                 h   d|v r1|	 t        j                  d|      d   }|j	                  dd      d   }|j                  d      dz   | _        t        j                         | _	        |rd	| | j                  j                  d
<   t        | 0  di | y# t        $ r}t        d      |d}~ww xY w)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__s        c/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/fsspec/implementations/jupyter.pyr   zJupyterFileSystem.__init__   s     #:{I**%8#>qAC ))C#A&C::c?_4'')6<SENDLL  1"6" " I$%@AqHIs   B 	B1 B,,B1c                    | j                  |      }| j                  j                  | j                   d|       }|j                  dk(  rt        |      S |j                          |j                         }|d   dk(  r|d   }n|g}|D ]5  }|j                  d      |d<   |j                  d       |d   dk(  s1d	|d<   7 |r|S |D cg c]  }|d   	 c}S c c}w )
Nr
     type	directorycontentpathnamenotebookfile)	_strip_protocolr   getr   status_codeFileNotFoundErrorraise_for_statusjsonpop)r   r%   detailr   routos          r   lszJupyterFileSystem.ls)   s    ##D)LLz4&12==C$T**	ffhv;+%i.C%C 	#AfAfIEE)yJ&"&			#
 J#&'a&	'''s   	Cc                 ^   | j                  |      }| j                  j                  | j                   d|       }|j                  dk(  rt        |      S |j                          |j                         }|d   dk(  r|d   j                         }nt        j                  |d         }||| S )Nr
   r!   formattextr$   )r)   r   r*   r   r+   r,   r-   r.   encodebase64	b64decode)r   r%   startendr   r1   r2   bs           r   cat_filezJupyterFileSystem.cat_file>   s    ##D)LLz4&12==C$T**	ffhx=F"I%%'A  Y0As|    c                 
   | j                  |      }|j                  dd      d   |t        |      t        j                  |      j                         ddd}| j                  j                  | j                   d| |       y )Nr
   r	   r9   r(   )r&   r%   sizer$   r6   r"   r.   )	r)   rsplitlenr9   	b64encodedecoder   putr   )r   r%   value_r.   s        r   	pipe_filezJupyterFileSystem.pipe_fileL   s{    ##D)KKQ'+J''.557
 	DHH:Qtf-D9r?   c                 
   | j                  |      }|r)d|v r%| j                  |j                  dd      d   d       |j                  dd      d   |d d dd}| j                  j	                  | j
                   d| |       y )	Nr
   r	   r   TrA   r#   )r&   r%   rB   r$   r"   rC   )r)   mkdirrD   r   rH   r   )r   r%   create_parentsr   r.   s        r   rM   zJupyterFileSystem.mkdirX   s    ##D)cTkJJt{{3*1-t4KKQ'+
 	DHH:Qtf-D9r?   c                 z    | j                  |      }| j                  j                  | j                   d|        y )Nr
   )r)   r   deleter   )r   r%   s     r   _rmzJupyterFileSystem._rme   s3    ##D)txxj$01r?   c                     | j                  |      }|dk(  r&| j                  |      }t        j                  |      S t	        | |d      S )Nrbwb)mode)r)   r>   ioBytesIOSimpleFileWriter)r   r%   rU   r   datas        r   _openzJupyterFileSystem._openi   sE    ##D)4<==&D::d###D$T::r?   )N)T)NN)rS   )__name__
__module____qualname____doc__protocolr   r4   r>   rK   rM   rQ   rZ   __classcell__)r   s   @r   r   r   
   s.    I"H#4(*
::2;r?   r   c                       e Zd ZddZy)rX   c                     |du ry| j                   j                  d       | j                   j                         }| j                  j	                  | j
                  |       y)zWNever uploads a chunk until file is done

        Not suitable for large files
        Fr   N)bufferseekreadfsrK   r%   )r   finalrY   s      r   _upload_chunkzSimpleFileWriter._upload_chunks   sJ    
 E>{{!$))T*r?   N)F)r[   r\   r]   rh   r   r?   r   rX   rX   r   s    	+r?   rX   )
r9   rV   r   r   fsspecAbstractFileSystemr   specAbstractBufferedFilerX   r   r?   r   <module>rm      s?     	 	  e;11 e;P
+v{{77 
+r?   