Ë
    :vžj¿  ã                   ó¼   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZ dd	lmZmZ dd
lmZ dZd„ Z G d„ d«      Zg d¢Z G d„ de«      Zdefd„Zy)é    )ÚThreadPoolExecutor)ÚPath)Úrmtree)ÚList)Úrun_on_executor)Úconvert_yieldedé   )Úlsp_message_listener)Úfile_uri_to_pathÚis_relative)ÚLanguageServerManagerAPIé   c                 óL   — |D ]  }	 | |   } Œ
 | S # t         t        f$ r Y  y w xY w©N)ÚKeyErrorÚ	TypeError)ÚobjÚpathÚcrumbs      úu/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_lsp/virtual_documents_shadow.pyÚextract_or_noner      s:   € Ûˆð	Ø�e‘*‰Cð ð
 €Jøô œ)Ð$ò 	Úð	ús   ‡�#¢#c                   ó    — e Zd Z ee¬«      Zd„ Zd„ Zd„ Ze	d„ «       Z
e	d„ «       Zededed	efd
„«       Zedefd„«       Zdefd„Zed„ «       Zy)ÚEditableFile)Úmax_workersc                 óT   — t        |t        «      rt        |«      | _        y || _        y r   )Ú
isinstanceÚstrr   r   )Úselfr   s     r   Ú__init__zEditableFile.__init__   s   € ä",¨T´3Ô"7”D˜“Jˆ�	¸Tˆ�	ó    c              ƒ   ó\   K  — t        | j                  «       «      ƒ d {  –—† | _        y 7 Œ
­wr   )r   Ú
read_linesÚlines©r   s    r   ÚreadzEditableFile.read"   s   è ø€ Ü*¨4¯?©?Ó+<Ó=×=ˆ�
Ð=ús   ‚,Ÿ* ,c              ƒ   óP   K  — t        | j                  «       «      ƒ d {  –—† S 7 Œ­wr   )r   Úwrite_linesr$   s    r   ÚwritezEditableFile.write%   s    è ø€ Ü$ T×%5Ñ%5Ó%7Ó8×8Ð8Ð8ús   ‚&Ÿ$ &c                 ó‚   — dg}	 | j                   j                  d¬«      j                  «       }|S # t        $ r Y |S w xY w)NÚ úutf-8©Úencoding)r   Ú	read_textÚ
splitlinesÚFileNotFoundError)r   r#   s     r   r"   zEditableFile.read_lines(   sP   € ð �ˆð	à—I‘I×'Ñ'°Ð'Ó9×DÑDÓFˆEð ˆøô !ò 	ØØˆð	ús   …*1 ±	>½>c                 ó¾   — | j                   j                  j                  dd¬«       | j                   j                  dj	                  | j
                  «      d¬«       y )NT©ÚparentsÚexist_okÚ
r+   r,   )r   ÚparentÚmkdirÚ
write_textÚjoinr#   r$   s    r   r'   zEditableFile.write_lines3   sC   € à�	‰	×Ñ×Ñ t°dÐÔ;Ø�	‰	×Ñ˜TŸY™Y t§z¡zÓ2¸WÐÕEr    r#   Ú	characterÚsidec                 ó<   — d}| r| |   |d  }| |   |k7  rd}|| |<   |S )NFT© )r#   r:   r;   Ú
needs_glueÚtrimmeds        r   ÚtrimzEditableFile.trim8   s:   € àˆ
ÙØ˜D‘k ) *Ð-ˆGØ�T‰{˜gÒ%Ø!�
Ø!ˆE�$‰KØÐr    Úgluec                 ó8   — |sg S | r| d   nd|r|d   z   gS dz   gS )Néÿÿÿÿr*   r   r=   )ÚleftÚrightrA   s      r   r9   zEditableFile.joinB   s1   € áØˆIÙ!��b’ r¹%¨e°A©hÑHÐIÐIÀRÑHÐIÐIr    Útextc                 óp  — | j                   d |d    }| j                   |d   d  }| j                  ||d   d¬«      }| j                  ||d   d¬«      }|j                  d«      }|d |rdnd  | j                  |||«      z   ||rdnd |rdnd  z   | j                  |||«      z   ||rdnd d  z   xs dg| _         y )	NÚliner:   r   )r#   r:   r;   rC   r5   r	   r*   )r#   r@   Úsplitr9   )	r   rF   ÚstartÚendÚbeforeÚafterÚneeds_glue_leftÚneeds_glue_rightÚinners	            r   Úapply_changezEditableFile.apply_changeH   sï   € Ø—‘˜O˜e F™mÐ,ˆØ—
‘
˜3˜v™;˜=Ð)ˆàŸ)™)¨&¸EÀ+Ñ<NÐUV˜)ÓWˆØŸ9™9¨5¸CÀÑ<LÐSU˜9ÓVÐà—
‘
˜4Ó ˆð Ð4™?‘R°Ð5Ø�i‰i˜  Ó7ñ8à™‘A¨dÑ;K±RÐQUÐVñWð �i‰i˜˜uÐ&6Ó7ñ8ð Ñ)‘A¨tÐ5Ð6ñ	7òð ˆTð 	�
r    c                 óŽ   — dddœ}t        | j                  «      | j                  rt        | j                  d   «      nddœ}||dœS )Nr   )rH   r:   rC   )rJ   rK   )Úlenr#   )r   rJ   rK   s      r   Ú
full_rangezEditableFile.full_rangeY   sC   € à¨Ñ+ˆä˜Ÿ
™
“OØ04·
²
œ˜TŸZ™Z¨™^Ô,Àñ
ˆð  sÑ+Ð+r    N)Ú__name__Ú
__module__Ú__qualname__r   ÚMAX_WORKERSÚexecutorr   r%   r(   r   r"   r'   ÚstaticmethodÚlistÚintr@   Úboolr9   r   rQ   ÚpropertyrT   r=   r    r   r   r      s­   „ Ù!¨kÔ:€HòBò>ò9ð ñó ðð ñFó ðFð ð�Dð  Sð °ò ó ðð ðJ ò Jó ðJð
 ó ð" ñ,ó ñ,r    r   )ztextDocument/didOpenútextDocument/didChangeztextDocument/didSavec                   ó   — e Zd ZdZy)ÚShadowFilesystemErrorz Error in the shadow file system.N)rU   rV   rW   Ú__doc__r=   r    r   ra   ra   f   s   „ Ú*r    ra   Úvirtual_documents_uric                 ó¨   ‡ ‡‡‡— ‰ j                  d«      st        d‰ z   «      ‚dŠg Št        t        ‰ «      «      Št	        d«      ˆˆˆˆ fd„«       }|S )Nzfile:/z6Virtual documents URI has to start with "file:/", got FÚclientc              “   ó¨  •K  — |j                   |   }|j                  dd«      sy|j                  d«      t        vryt        |ddg«      }|€t	        dj                  |«      «      ‚t        |dg«      }|st	        d	j                  |«      «      ‚|j                  ‰«      sy‰sLt        ‰«      d
k(  ry	 ‰j                  dd¬«       t        t        ‰«      «       ‰j                  dd¬«       dŠt#        |«      }t%        ‰|«      st	        d|› d�«      ‚t'        |«      }	|	j)                  «       ƒ d{  –—†  t        |dg«      }
|
�d|
ig}n#|d   dk7  ryd|d   vrt	        d«      ‚|d   d   }t        |«      dkD  r|j                  j!                  d«       |dd D ]4  }|j                  d|	j*                  «      } |	j,                  |d   fi |¤Ž Œ6 |	j/                  «       ƒ d{  –—†  |S # t        t        t        f$ rE}‰j                  |«       t        ‰«      d
k(  r|j                  j!                  d‰«       Y d}~yd}~ww xY w7 �Œ7 Œe­w)zêIntercept a message with document contents creating a shadow file for it.

        Only create the shadow file if the URI matches the virtual documents URI.
        Returns the path on filesystem where the content was stored.
        Úrequires_documents_on_diskTNÚmethodÚparamsÚtextDocumentz#Could not get textDocument from: {}ÚurizCould not get URI from: {}é   r2   a\  [lsp] initialization of shadow filesystem failed three times check if the path set by `LanguageServerManager.virtual_documents_dir` or `JP_LSP_VIRTUAL_DIR` is correct; if this is happening with a server for which you control (or wish to override) jupyter-lsp specification you can try switching `requires_documents_on_disk` off. The errors were: %szPath z* is not relative to shadow filesystem rootrF   r_   ÚcontentChangesz0textDocument/didChange is missing contentChangesr	   zBLSP warning: up to one change supported for textDocument/didChangeÚrange)Úlanguage_serversÚgetÚ	WRITE_ONEr   ra   ÚformatÚ
startswithrS   r7   r   r   ÚOSErrorÚPermissionErrorr0   ÚappendÚlogÚwarnr   r   r   r%   rT   rQ   r(   )ÚscopeÚmessageÚlanguage_serverÚmanagerÚserver_specÚdocumentrk   Úer   Úeditable_filerF   ÚchangesÚchangeÚchange_rangeÚfailuresÚinitializedÚshadow_filesystemrc   s                 €€€€r   Úshadow_virtual_documentsz9setup_shadow_filesystem.<locals>.shadow_virtual_documentsv   s‰  øè ø€ ð ×.Ñ.¨Ñ?ˆØ�‰Ð;¸TÔBØà�{‰{˜8Ó$¬	Ñ1Øä" 7¨X°~Ð,FÓGˆØÐÜ'Ø5×<Ñ<¸WÓEóð ô ˜h¨¨Ó0ˆÙÜ'Ð(D×(KÑ(KÈGÓ(TÓUÐUà�~‰~Ð3Ô4Øñ Ü�8‹} Ò!Øðà!×'Ñ'°¸tÐ'ÔDä”sÐ,Ó-Ô.à!×'Ñ'°¸tÐ'ÔDð ˆKä Ó$ˆÜÐ,¨dÔ3Ü'Ø˜�vÐGÐHóð ô % TÓ*ˆà× Ñ Ó"×"Ð"ä˜x¨&¨Ó2ˆàÐà �~Ð&‰Gð �xÑ Ð$<Ò<ØØ w¨xÑ'8Ñ8Ü+ØFóð ð ˜hÑ'Ð(8Ñ9ˆGäˆw‹<˜!ÒØ�K‰K×ÑØTôð ˜b˜q“kˆFØ!Ÿ:™: g¨}×/GÑ/GÓHˆLØ&ˆM×&Ñ& v¨f¡~ÑF¸ÓFð "ð ×!Ñ!Ó#×#Ð#àˆøôe œ_Ô.?Ð@ò Ø—‘ Ô"Ü�x“= AÒ%Ø—K‘K×$Ñ$ðgð
 !ôô ûðúð, 	#ùð4 	$úsP   ƒB1IÂ5:G1 Ã/AIÄ5IÄ6B4IÇ*IÇ+IÇ1I
È;IÉ IÉI
É
IÉI)rs   ra   r   r   r
   )rc   r‡   r„   r…   r†   s   ` @@@r   Úsetup_shadow_filesystemrˆ   j   si   û€ Ø ×+Ñ+¨HÔ5Ü#ØDØ#ñ$ó
ð 	
ð
 €KØ "€HäÔ-Ð.CÓDÓEÐä˜(Ó#öZó $ðZðx $Ð#r    N)Úconcurrent.futuresr   Úpathlibr   Úshutilr   Útypingr   Útornado.concurrentr   Útornado.genr   r|   r
   Úpathsr   r   Útypesr   rX   r   r   rq   Ú
ValueErrorra   r   rˆ   r=   r    r   Ú<module>r’      s[   ðå 1Ý Ý Ý å .Ý 'å )ß 0Ý +ð €ò÷E,ñ E,òP W€	ô+˜Jô +ði$°3ô i$r    