ó
    �®žjo#  ã            
       óÂ  • % S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$J%r%  \ RL                  " \'5      r(Sr)\*\+S'   Sr,\-S-  \+S'    S SK.J/r/J0r0J1r1J2r2J3r3J4r4  Sr)Sr6\(       a
  S SK7r8S SK9J:r:   " S S\\\\\\5      r;g! \- a  r5\5r, Sr5C5N1Sr5C5ff = f)é    N)ÚBytesIO)ÚPath)ÚTYPE_CHECKINGÚOptionalÚUnionÚcast)ÚDocItemLabelÚDoclingDocumentÚNodeItem)Ú
Formatting)ÚDeclarativeDocumentBackend)ÚEnvironmentHandlerMixin)ÚMacroHandlerMixin)ÚMathHandlerMixin)Údecode_latex_content)ÚTableHelperMixin)ÚTextHelperMixin)ÚLatexBackendOptions)ÚInputFormat)ÚInputDocumentFÚ_PYLATEXENC_AVAILABLEÚ_PYLATEXENC_IMPORT_ERROR)ÚLatexCharsNodeÚLatexEnvironmentNodeÚLatexGroupNodeÚLatexMacroNodeÚLatexMathNodeÚLatexWalkerTzxThe 'pylatexenc' package is required to process LaTeX files. Install it with `pip install 'docling-slim[format-latex]'`.)ÚTectonicEnginec            
       óè   ^ • \ rS rSr SS\S\\\4   S\\	   4U 4S jjjr
S\4S jr\S\4S	 j5       r\S\\   4S
 j5       rS\S\4S jrS\4S jr   SS\S\S-  S\S-  S\S-  4S jjrSrU =r$ )ÚLatexDocumentBackendé6   NÚin_docÚpath_or_streamÚoptionsc                 ón  >• [         (       d  [        [        5      [        eUc
  [	        5       n[
        TU ]  XU5        [        R                  " U R                  5      U l        0 U l	        0 U l
        0 U l        [        5       U l        S U l        S U l        / U l        [#        U R$                  5      U l        g ©N)r   ÚImportErrorÚ_INSTALL_HINTr   r   ÚsuperÚ__init__Úmodel_validater%   ÚlabelsÚ_custom_macrosÚ_custom_macro_num_argsÚsetÚ_input_stackÚ_tectonic_engineÚ_tikz_executorÚ_tikz_futuresr   r$   Ú
latex_text)Úselfr#   r$   r%   Ú	__class__s       €ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/latex/backend.pyr+   ÚLatexDocumentBackend.__init__>   s–   ø€ ÷ %Ò$ÜœmÓ,Ô2JÐJØ‰?Ü)Ó+ˆGÜ‰Ñ˜°Ô9Ü*×9Ò9¸$¿,¹,ÓGˆŒØ')ˆŒØ.0ˆÔØ68ˆÔ#Ü&)£eˆÔØ7;ˆÔØLPˆÔØ>@ˆÔÜ.¨t×/BÑ/BÓCˆ�ó    Úreturnc                 óH   • U R                   R                  5       nU(       d  gg)NFT)r5   Ústrip)r6   Útexts     r8   Úis_validÚLatexDocumentBackend.is_validS   s   € Ø�‰×$Ñ$Ó&ˆÞØØr:   c                 ó   • g)NF© ©Úclss    r8   Úsupports_paginationÚ(LatexDocumentBackend.supports_paginationY   s   € àr:   c                 ó$   • [         R                  1$ r'   )r   ÚLATEXrC   s    r8   Úsupported_formatsÚ&LatexDocumentBackend.supported_formats]   s   € ä×!Ñ!Ð"Ð"r:   Údocc                 óŽ  • SS K nSS KnU R                  U R                  5      nUR	                  SXCR
                  5      nU(       a*  UR                  S5      nUR                  SSU5      U l        OSU l        [        USS9n UR                  5       u  p‰n
[#        S[$        R&                  " 5       =(       d    SS-
  5      nUR(                  R+                  US9U l        / U l         U R1                  U5        U R3                  X�5        U R5                  U5      nU(       a  U R7                  UR8                  U5        OU R7                  X�5        U R.                  (       a%  UR(                  R;                  U R.                  5        U R,                  R?                  SS9  U$ ! [         aM  n[        R                  SU S	35        UR                  [        R                   U R                  S
9  Us S nA$ S nAff = f! [         a"  n[        R=                  SU 35         S nANœS nAff = f! U R,                  R?                  SS9  f = f)Nr   z^(.*?)\\begin\{document\}é   z*\\documentclass(?:\[[^\]]*\])?\s*\{[^}]*\}Ú T)Útolerant_parsingzLaTeX parsing failed: z!. Using fallback text extraction.©Úlabelr>   é   )Úmax_workerszError processing LaTeX nodes: F)Úwait) Úconcurrent.futuresÚreÚ_preprocess_custom_macrosr5   ÚsearchÚDOTALLÚgroupÚsubÚlatex_preambler   Úget_latex_nodesÚ	ExceptionÚ_logÚwarningÚadd_textr	   ÚTEXTÚmaxÚosÚ	cpu_countÚfuturesÚThreadPoolExecutorr3   r4   Ú_extract_custom_macrosÚ_extract_preamble_metadataÚ_find_document_envÚ_process_nodesÚnodelistrT   ÚerrorÚshutdown)r6   rK   Ú
concurrentrV   Úpreprocessed_textÚpreamble_matchÚraw_preambleÚwalkerÚnodesÚ_posÚ_lenÚeÚworkersÚdoc_nodes                 r8   Ú_do_parse_and_processÚ*LatexDocumentBackend._do_parse_and_processa   sù  € Û!Ûà ×:Ñ:¸4¿?¹?ÓKÐð Ÿ™Ø(Ð*;¿Y¹Yó
ˆö Ø)×/Ñ/°Ó2ˆLà"$§&¡&Ø=¸rÀ<ó#ˆDÕð #%ˆDÔäÐ.ÀÑFˆð	Ø &× 6Ñ 6Ó 8ÑˆE˜ô �aœ"Ÿ,š,›.×-¨A°Ñ2Ó3ˆØ(×0Ñ0×CÑCÐPWÐCÐXˆÔØˆÔð	5Ø×'Ñ'¨Ô.Ø×+Ñ+¨EÔ7à×.Ñ.¨uÓ5ˆHæØ×#Ñ# H×$5Ñ$5°sÕ;à×#Ñ# EÔ/à×!×!Ø×"Ñ"×'Ñ'¨×(:Ñ(:Ô;ð
 ×Ñ×(Ñ(¨eÐ(Ñ4àˆ
øô9 ó 	Ü�L‰LÐ1°!°Ð4UÐVÔWØ�L‰Lœ|×0Ñ0°t·±ˆLÑGØ�Jûð	ûô. ó 	=Ü�J‰JÐ7¸°sÐ;×<Ñ<ûð	=ûð ×Ñ×(Ñ(¨eÐ(Ò4úsJ   ÂF  Ã'BG: Æ 
G7Æ*AG2Ç,G7Ç2G7Ç:
H&ÈH!ÈH) È!H&È&H) È)Ic                 ó¶  ^ ^^^• [        T R                  R                  S9m[        [        T R
                  5      nUR                  nUc  T R                  T5      $ / m/ mUUUU 4S jn[        R                  " USS9nUR                  5         UR                  US9  UR                  5       (       aw  [        R                  SU ST R                  R                   S35        [        T R                  R                  S9nUR!                  ["        R$                  T R&                  S	9  U$ T(       a  [        R)                  S
TS    35        T$ T(       a  TS   $ T$ )N)Únamec                  óœ   >•  TR                  T5      n TR                  U 5        g ! [         a  nTR                  U5         S nAg S nAff = fr'   )rz   Úappendr^   )Úresrw   rK   Úerror_containerÚresult_containerr6   s     €€€€r8   Ú
_worker_fnÚ0LatexDocumentBackend.convert.<locals>._worker_fn¡   sG   ø€ ð*Ø×0Ñ0°Ó5�Ø ×'Ñ'¨Õ,øÜó *Ø×&Ñ& q×)Ñ)ûð*ús   ƒ"& ¦
A°AÁAT)ÚtargetÚdaemon)ÚtimeoutzLaTeX parsing timed out after zs for 'z5'. Returning partial document with raw text fallback.rP   zError during LaTeX parsing: r   )r
   ÚfileÚstemr   r   r%   Úparse_timeoutrz   Ú	threadingÚThreadÚstartÚjoinÚis_aliver_   r`   r}   ra   r	   rb   r5   rm   )	r6   Úoptsr‡   rƒ   ÚthreadÚfallbackrK   r�   r‚   s	   `     @@@r8   ÚconvertÚLatexDocumentBackend.convert–   s1  û€ Ü 4§9¡9§>¡>Ñ2ˆÜÔ'¨¯©Ó6ˆØ×$Ñ$ˆà‰?Ø×-Ñ-¨cÓ2Ð2à24ÐØ+-ˆ÷	*ð 	*ô ×!Ò!¨¸DÑAˆØ�‰ŒØ�‰˜GˆÑ$à�?‰?×ÑÜ�L‰LØ0°°	ð :Ø—I‘I—N‘NÐ#ð $EðEôô
 '¨D¯I©I¯N©NÑ;ˆHØ×Ñ¤L×$5Ñ$5¸D¿O¹OÐÑLØˆOæÜ�J‰JÐ5°oÀaÑ6HÐ5IÐJÔKØˆJæØ# AÑ&Ð&àˆ
r:   ÚparentÚ
formattingÚ
text_labelc                 óþ  ^^^^^• Uc  g / mUUUUU4S jnSnU[        U5      :  Ga
  X   nSn	 [        U[        5      (       a  U R                  UTTTTTU5        O¼[        U[        5      (       a  U R                  UTTTTTUXS-   S  5      n	O‰[        U[        5      (       a  U" 5         U R                  UTTTT5        OW[        U[        5      (       a  U R                  UTTTU5        O,[        U[        5      (       a  U R                  UTTTTTU5        USU	-   -  nU[        U5      :  a  GM
  U" 5         g ! [         a8  n
[        R                  S[        U5      R                    SU
 35         S n
A
N_S n
A
ff = f)Nc                  óÔ   >• T(       a`  SR                  T5      R                  5       n U (       a)  TR                  TT=(       d    [        R                  U TS9  TR                  5         g g )NrN   )r•   rQ   r>   r–   )rŽ   r=   ra   r	   rb   Úclear)Úcombined_textrK   r–   r•   Útext_bufferr—   s    €€€€€r8   Úflush_text_bufferÚ>LatexDocumentBackend._process_nodes.<locals>.flush_text_bufferÌ   s[   ø€ ÞØ "§¡¨Ó 4× :Ñ :Ó <�Þ Ø—L‘LØ%Ø(×=¬L×,=Ñ,=Ø*Ø#-ð	 !ñ ð ×!Ñ!Õ#ð r:   r   rM   zFailed to process node z: )ÚlenÚ
isinstancer   Ú_process_chars_noder   Ú_process_macro_node_inliner   Ú_process_environmentr   Ú_process_math_noder   Ú_process_group_noder^   r_   r`   ÚtypeÚ__name__)r6   rt   rK   r•   r–   r—   r�   ÚidxÚnodeÚconsumed_followingrw   rœ   s     ````     @r8   rk   Ú#LatexDocumentBackend._process_nodes¿   sž  ü€ ð ‰=Øà!#ˆ÷
	$ñ 
	$ð ˆØ”C˜“JÔØ‘:ˆDØ!"Ðð-SÜ˜d¤N×3Ñ3Ø×,Ñ,ØØØØ"Ø"Ø#Ø)õô   ¤n×5Ñ5Ø)-×)HÑ)HØØØØ"Ø"Ø#Ø)Ø A™g˜iÐ(ó	*Ñ&ô   Ô&:×;Ñ;Ù%Ô'Ø×-Ñ-¨d°C¸ÀÈZÕXä ¤m×4Ñ4Ø×+Ñ+Ø˜c 6¨;Ð8Iõô   ¤n×5Ñ5Ø×,Ñ,ØØØØ"Ø"Ø#Ø)ôð �1Ð)Ñ)Ñ)ˆCðc ”C˜“JÖñf 	Õøô	 ó SÜ—‘Ð6´t¸D³z×7JÑ7JÐ6KÈ2ÈaÈSÐQ×RÑRûðSús/   ¯,D: Á2D: Â1D: Ã*D: Ã,,D: Ä:
E<Å.E7Å7E<)
r/   r.   r1   r2   r3   r4   r-   r\   r5   r%   r'   )NNN)r§   Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r   r   r+   Úboolr?   ÚclassmethodrE   r0   r   rI   r
   rz   r“   r   r   r	   rk   Ú__static_attributes__Ú__classcell__)r7   s   @r8   r!   r!   6   sû   ø† ð 26ñ	DàðDð ˜g t˜mÑ,ðDð Ð-Ñ.÷	Dð Dð*˜$ô ð ð Dó ó ðð ð# # kÑ"2ó #ó ð#ð3¨ð 3¸_ô 3ðj'˜ô 'ðZ #'Ø(,Ø*.ñMð ðMð ˜4‘ð	Mð
  Ñ%ðMð ! 4Ñ'÷Mó Mr:   r!   )<Úloggingrd   r‹   Úior   Úpathlibr   Útypingr   r   r   r   Údocling_core.types.docr	   r
   r   Údocling_core.types.doc.documentr   Ú docling.backend.abstract_backendr   Ú+docling.backend.latex.handlers.environmentsr   Ú%docling.backend.latex.handlers.macrosr   Ú#docling.backend.latex.handlers.mathr   Ú$docling.backend.latex.utils.encodingr   Ú!docling.backend.latex.utils.tabler   Ú docling.backend.latex.utils.textr   Ú!docling.datamodel.backend_optionsr   Údocling.datamodel.base_modelsr   Údocling.datamodel.documentr   Ú	getLoggerr§   r_   r   r¯   Ú__annotations__r   r(   Úpylatexenc.latexwalkerr   r   r   r   r   r   rw   r)   rU   ro   Ú&docling.backend.latex.engines.tectonicr   r!   rB   r:   r8   Ú<module>rÇ      sÑ   ðô Û 	Û Ý Ý ß 7Ó 7ç JÑ JÝ 6å GÝ OÝ CÝ @Ý EÝ >Ý <Ý AÝ 5Ý 4à×Ò˜Ó"€à#Ð �tÓ #Ø/3Ð ˜+¨Ñ,Ó 3ð!÷÷ ð !Ðð
Bð ö
 ÛåEôVØØØØØØõVøð ó !Ø Õûð!ús   ÂC ÃCÃCÃC