
    bi0                     h    d dl Z d dlZd dlmZ d dlmZ d dlmZmZ  G d de      Z	 G d de      Z
y)	    N)run_sync)web)AsyncFileContentsManagerFileContentsManagerc                   *     e Zd ZdZd fd	Zd Z xZS )LargeFileManagerzHandle large file upload.c                    |j                  dd      }|||j                  d      }|dk(  r| j                  ||       d|vrt        j                  dd      |d   d	k7  r(t        j                  dd
j                  |d               d|vr|d   dk7  rt        j                  dd      | j                  |      }|dk(  r| j                  j                  d|        n!| j                  j                  d| d|        	 |dk(  r$t        | )  ||d   |j                  d             n%| j                  ||d   |j                  d             | j                  |d      }|dk(  r| j                  ||       | j                  d|d       |S t        | A  ||      S # t        j                  $ r  t        $ rA}| j                  j                  d||d       t        j                  dd| d|       |d}~ww xY wz9Save the file model and return the model with no content.chunkN/   )modelpathtype  zNo file type providedfilez7File type "{}" is not supported for large file transfercontent	directoryzNo file content providedzSaving last chunk of file zSaving chunk z	 of file formatzError while saving file: %s %sT)exc_infoi  z$Unexpected error while saving file:  F)r   )r   os_pathsave)actionr   )datagetstriprun_pre_save_hooksr   	HTTPErrorr   _get_os_pathlogdebugsuper
_save_file_save_large_file	Exceptionerrorrun_post_save_hooksemitr   selfr   r   r   r   e	__class__s         l/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jupyter_server/services/contents/largefilemanager.pyr   zLargeFileManager.save   s
   		'4(::c?Dz''e$'?U"mmC)@AAV}&mmMTTUZ[aUbc  %%-;*FmmC)CDD''-G{!;G9EFugYwiHI	cA:G&wi0@%))HBUV))'53CUYYxEXY HHT5H1E {((ug(FIIfd;I<L7<t,, ==  c?qSWXmmC+OPTvUVWXVY)Z[abbcs   AF# #H ?<G;;H c                    |dvrt        j                  dd      	 |dk(  r|j                  d      }n&|j                  d      }t        j                  |      }| j                  |      5  t        j                  j                  |      rPt        j                  j                  t        j                  j                  |      t        j                  |            }t        |d
      5 }|j                  |       d	d	d	       d	d	d	       y	# t
        $ r"}t        j                  dd| d|       |d	}~ww xY w# 1 sw Y   @xY w# 1 sw Y   y	xY wzSave content of a generic file.>   textbase64r   z:Must specify format of file contents as 'text' or 'base64'r3   utf8asciizEncoding error saving z: Nab)r   r!   encoder4   	b64decoder(   perm_to_403osr   islinkjoindirnamereadlinkopenwriter-   r   r   r   bcontent	b64_bytesr.   fs           r0   r'   z!LargeFileManager._save_large_file>   s#   ++--L 	U">>&1#NN73	!++I6 g& 	"ww~~g&'',,rwww'?WAUVgt$ "!"	" 	"  	U--'=gYb%LMSTT	U" "	" 	"s<   =D	 *A<E&D78E		D4D//D47E 	<EE __name__
__module____qualname____doc__r   r'   __classcell__r/   s   @r0   r   r      s    #,-\"    r   c                   *     e Zd ZdZd fd	Zd Z xZS )AsyncLargeFileManagerz'Handle large file upload asynchronouslyc                 ^  K   |j                  dd      }||j                  d      }|dk(  r| j                  ||       d|vrt        j                  dd      |d   d	k7  r(t        j                  dd
j                  |d               d|vr|d   dk7  rt        j                  dd      | j                  |      }|dk(  r| j                  j                  d|        n!| j                  j                  d| d|        	 |dk(  r,t        | )  ||d   |j                  d             d{    n-| j                  ||d   |j                  d             d{    | j                  |d       d{   }|dk(  r| j                  ||       | j                  d|d       |S t        | A  ||       d{   S 7 7 h# t        j                  $ r  t        $ rA}| j                  j                  d||d       t        j                  dd| d|       |d}~ww xY w7 7 jwr
   r   r,   s         r0   r   zAsyncLargeFileManager.saveX   s5    		'4(::c?Dz''e$'?U"mmC)@AAV}&mmMTTUZ[aUbc  %%-;*FmmC)CDD''-G{!;G9EFugYwiHI	cA:',WeI6F		RZH[\\\//y9I599U]K^___ ((4(77E {((ug(FIIfd;I<LeT222% ]_==  c?qSWXmmC+OPTvUVWXVY)Z[abbc 8 3sm   DH-+G	 0G1-G	 GG	 #H-9H):AH- H+H-G	 G	 	H&%<H!!H&&H-+H-c                   K   |dvrt        j                  dd      	 |dk(  r|j                  d      }n&|j                  d      }t        j                  |      }| j                  |      5  t        j                  j                  |      rPt        j                  j                  t        j                  j                  |      t        j                  |            }t        |d
      5 }t        |j                  |       d	{    d	d	d	       d	d	d	       y	# t
        $ r"}t        j                  dd| d|       |d	}~ww xY w7 C# 1 sw Y   BxY w# 1 sw Y   y	xY wwr2   )r   r!   r8   r4   r9   r(   r:   r;   r   r<   r=   r>   r?   r@   r   rA   rB   s           r0   r'   z&AsyncLargeFileManager._save_large_file   s4    ++--L 	U">>&1#NN73	!++I6 g& 	2ww~~g&'',,rwww'?WAUVgt$ 2qww1112	2 	2  	U--'=gYb%LMSTT	U 22 2	2 	2sk   E =D E ,A<E(EEEE	E 	E!D>>EE EE	EEE rF   rH   rN   s   @r0   rQ   rQ   U   s    1-3^2rO   rQ   )r4   r;   anyio.to_threadr   tornador   ,jupyter_server.services.contents.filemanagerr   r   r   rQ    rO   r0   <module>rX      s5     	 $ E"* E"PF24 F2rO   