§
    ŽŸj  ã                   óê   — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZ dd	lmZ d
ZdZej        dk    r	 ddlZn# e$ r ddlZY nw xY w G d„ de¦  «        ZdS )zcModule containing a preprocessor that converts outputs in the notebook from
one format to another.
é    N)ÚPath)Úwhich)ÚTemporaryDirectory)ÚListÚUnicodeÚUnionÚdefault)ÚFormatSafeDicté   )ÚConvertFiguresPreprocessorz:/Applications/Inkscape.app/Contents/Resources/bin/inkscapez2/Applications/Inkscape.app/Contents/MacOS/inkscapeÚwin32c                   óÆ  — e Zd ZdZ ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¬¦  «                             d¬	¦  «        Z	 ed
¦  «        d„ ¦   «         Z
 e e¦   «          e¦   «         gd¬¦  «                             d¬	¦  «        Z ed¦  «        d„ ¦   «         Z ed¬¦  «                             d¬	¦  «        Z ed¦  «        d„ ¦   «         Zd„ ZdS )ÚSVG2PDFPreprocessorzD
    Converts all of the outputs in a notebook from SVG to PDF.
    Úfrom_formatc                 ó   — dS )Nzimage/svg+xml© ©Úselfs    úl/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/nbconvert/preprocessors/svg2pdf.pyÚ_from_format_defaultz(SVG2PDFPreprocessor._from_format_default)   s   € àˆó    Ú	to_formatc                 ó   — dS )Nzapplication/pdfr   r   s    r   Ú_to_format_defaultz&SVG2PDFPreprocessor._to_format_default-   s   € à Ð r   zeThe version of inkscape being used.

        This affects how the conversion command is run.
        )ÚhelpT)ÚconfigÚinkscape_versionc                 ó(  — t          j        | j        dgt           j        t           j        ¬¦  «        }|                     ¦   «         \  }}|j        dk    rd}t          |¦  «        ‚|                     d¦  «                             d¦  «        d         S )Nz	--version)ÚstdoutÚstderrr   z,Unable to find inkscape executable --versionúutf-8ú r   )	Ú
subprocessÚPopenÚinkscapeÚPIPEÚcommunicateÚ
returncodeÚRuntimeErrorÚdecodeÚsplit)r   ÚpÚoutputÚ_Úmsgs        r   Ú_inkscape_version_defaultz-SVG2PDFPreprocessor._inkscape_version_default8   s…   € åÔØŒ]˜KÐ(Ý”?Ý”?ð
ñ 
ô 
ˆð
 —M’M‘O”O‰	ˆ�ØŒ<˜1ÒÐØ@ˆCÝ˜sÑ#Ô#Ð#Ø�}Š}˜WÑ%Ô%×+Ò+¨CÑ0Ô0°Ô3Ð3r   a–  
        The command to use for converting SVG to PDF

        This traitlet is a template, which will be formatted with the keys
        to_filename and from_filename.

        The conversion call must read the SVG from {from_filename},
        and write a PDF to {to_filename}.

        It could be a List (recommended) or a String. If string, it will
        be passed to a shell for execution.
        Úcommandc                 ó&  — | j                              d¦  «        d         }| j        g}t          |¦  «        dk     r+|                     d¦  «         |                     d¦  «         n|                     d¦  «         |                     d¦  «         |S )Nú.r   r   z--without-guiz--export-pdf={to_filename}z--export-filename={to_filename}z{from_filename})r   r+   r%   ÚintÚappend)r   Úmajor_versionr1   s      r   Ú_command_defaultz$SVG2PDFPreprocessor._command_defaultV   sŒ   € àÔ-×3Ò3°CÑ8Ô8¸Ô;ˆØ”=�/ˆåˆ}ÑÔ Ò!Ð!à�NŠN˜?Ñ+Ô+Ð+à�NŠNÐ7Ñ8Ô8Ð8Ð8à�NŠNÐ<Ñ=Ô=Ð=à�ŠÐ(Ñ)Ô)Ð)Øˆr   z"The path to Inkscape, if necessaryr%   c                 ó˜  — t           j        dk    r¨t          j        d t          j        ¦  «        }	 t          j        |d¦  «        }t          j        |d¦  «        d                              d¦  «        d         }t          j	         
                    |¦  «        r|S n# t          t          t          f$ r Y nw xY wdt          j        d<   t          d¦  «        }t           j        dk    rê|rèt           j        d	k     rØ	 t#          j        ¦   «                              ¦   «         }t#          |¦  «                             ¦   «         j        |k    }|d
„ t          j                             dt          j        ¦  «                             t          j        ¦  «        D ¦   «         v }|r |st1          j        dt4          d¬¦  «         d }n# t6          $ r d }Y nw xY w|�|S t           j        dk    rVt          j	         
                    t8          ¦  «        rt8          S t          j	         
                    t:          ¦  «        rt:          S d}t          |¦  «        ‚)Nr   z)SOFTWARE\Classes\inkscape.svg\DefaultIconÚ r   ú,Ú1Ú"NODEFAULTCURRENTDIRECTORYINEXEPATHr%   )é   é   c                 óP   — h | ]#}t          |¦  «                             ¦   «         ’Œ$S r   )r   Úresolve)Ú.0r,   s     r   ú	<setcomp>z8SVG2PDFPreprocessor._inkscape_default.<locals>.<setcomp>�   s5   € ð &ð &ð &Ø*+•D˜‘G”G—O’OÑ%Ô%ð&ð &ð &r   ÚPATHz¯shutil.which('inkscape') resolved to an executable in the current working directory even though CWD is not on PATH. Ignoring this result for security reasons (CVE-2025-53000).é   )Ú
stacklevelÚdarwinz+Inkscape executable not found in safe paths)ÚsysÚplatformÚwinregÚConnectRegistryÚHKEY_LOCAL_MACHINEÚOpenKeyÚQueryValueExr+   ÚosÚpathÚisfileÚFileNotFoundErrorÚOSErrorÚ
IndexErrorÚenvironr   Úversion_infor   Úcwdr@   ÚparentÚgetÚdefpathÚpathsepÚwarningsÚwarnÚRuntimeWarningÚ	ExceptionÚINKSCAPE_APP_v1ÚINKSCAPE_APP)	r   Ú	wr_handleÚrkeyÚinkscape_fullÚinkscape_pathrV   Úin_cwdÚcwd_on_pathr/   s	            r   Ú_inkscape_defaultz%SVG2PDFPreprocessor._inkscape_defaulth   sA  € õ Œ<˜7Ò"Ð"ÝÔ.¨tµVÔ5NÑOÔOˆIðÝ”~ iÐ1]Ñ^Ô^�Ý &Ô 3°D¸"Ñ =Ô =¸aÔ @× FÒ FÀsÑ KÔ KÈAÔ N�Ý”7—>’> -Ñ0Ô0ð )Ø(Ð(ð)øå%¥wµ
Ð;ð ð ð Ø�ðøøøð <?�Œ
Ð7Ñ8å˜jÑ)Ô)ˆõ
 Œ<˜7Ò"Ð" }Ð"½Ô9IÈGÒ9SÐ9Sð%Ý”h‘j”j×(Ò(Ñ*Ô*�Ý˜mÑ,Ô,×4Ò4Ñ6Ô6Ô=ÀÒD�Ø!ð &ð &Ý/1¬z¯~ª~¸fÅbÄjÑ/QÔ/Q×/WÒ/WÕXZÔXbÑ/cÔ/cð&ñ &ô &ð �ð ð ) +ð )Ý”MðHõ 'Ø#$ðñ ô ð ð %)�MøøÝð %ð %ð %à $���ð%øøøð Ð$Ø Ð õ Œ<˜8Ò#Ð#ÝŒw�~Š~�oÑ.Ô.ð 'Ý&Ð&õ Œw�~Š~�lÑ+Ô+ð $Ý#Ð#à;ˆÝ Ñ$Ô$Ð$s%   ±A)B ÂB6Â5B6Ã:CF? Æ?GÇGc                 ón  ‡	— t          ¦   «         5 }t          j                             |d¦  «        }t	          |dd¬¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   t          j                             |d¦  «        }||dœŠ	t          | j        t          ¦  «        rˆ	fd„| j        D ¦   «         }n | j        j	        di ‰	¤Ž}t          j        |t          |t          ¦  «        ¬	¦  «         t          j                             |¦  «        rnt	          |d
¦  «        5 }t          j        |                     ¦   «         ¦  «                             d¦  «        cddd¦  «         cddd¦  «         S # 1 swxY w Y   nd}t%          |¦  «        ‚	 ddd¦  «         dS # 1 swxY w Y   dS )zN
        Convert a single SVG figure to PDF.  Returns converted data.
        z
figure.svgÚwÚutf8)ÚencodingNz
figure.pdf)Úfrom_filenameÚto_filenamec           	      óN   •— g | ]!}|                      t          d i ‰¤Ž¦  «        ‘Œ"S )r   )Ú
format_mapr
   )rA   ÚsÚtemplate_varss     €r   ú
<listcomp>z6SVG2PDFPreprocessor.convert_figure.<locals>.<listcomp>³   s3   ø€ Ð`Ð`Ð`Èa˜AŸLšL­Ð)HÐ)H¸-Ð)HÐ)HÑIÔIÐ`Ð`Ð`r   )ÚshellÚrbr!   z%Inkscape svg to pdf conversion failedr   )r   rN   rO   ÚjoinÚopenÚwriteÚ
isinstancer1   ÚlistÚformatr#   ÚcallÚstrrP   Úbase64ÚencodebytesÚreadr*   Ú	TypeError)
r   Údata_formatÚdataÚtmpdirÚinput_filenameÚfÚoutput_filenameÚfull_cmdr/   rq   s
            @r   Úconvert_figurez"SVG2PDFPreprocessor.convert_figure¡   s…  ø€ õ  Ñ!Ô!ð 	% VåœWŸ\š\¨&°,Ñ?Ô?ˆNå�n c°FÐ;Ñ;Ô;ð ¸qØ—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ !œgŸlšl¨6°<Ñ@Ô@ˆOà.<È_Ð]Ð]ˆMÝ˜$œ,­Ñ-Ô-ð @Ø`Ð`Ð`Ð`ÐSWÔS_Ð`Ñ`Ô`��ð /˜4œ<Ô.Ð?Ð?°Ð?Ð?�ÝŒO˜H­J°xÅÑ,EÔ,EÐFÑFÔFÐFõ Œw�~Š~˜oÑ.Ô.ð %Ý˜/¨4Ñ0Ô0ð H°Aå!Ô-¨a¯fªf©h¬hÑ7Ô7×>Ò>¸wÑGÔGðHð Hð Hð Hñ Hô Hð Hð-	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð,Hð Hð Hð Høøøð Hð Hð Hð Hð Hð >�Ý ‘n”nÐ$ðHð-	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%sZ   �3F*ÁA%ÁF*Á%A)	Á)F*Á,A)	Á-C F*Ä-9E?Å&F*Å?F	ÆF*ÆF	ÆF*Æ*F.Æ1F.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   Útagr   r0   r   r   r1   r7   r%   rg   rˆ   r   r   r   r   r   $   s‡  € € € € € ðð ð €Wˆ]ÑÔðð ñ Ôðð €Wˆ[ÑÔð!ð !ñ Ôð!ð �wððñ ô ÷
 
‚c�€cÑÔð ð €WÐÑ Ô ð
4ð 
4ñ !Ô ð
4ð ˆeØ	ˆ‰Œ�D�D‘F”FÐððñ ô ÷ 
‚c�€cÑÔð ð  €WˆYÑÔðð ñ Ôðð ˆwÐ@ÐAÑAÔA×EÒEÈTÐEÑRÔR€Hà€WˆZÑÔð6%ð 6%ñ Ôð6%ðp!%ð !%ð !%ð !%ð !%r   r   )rŒ   r}   rN   r#   rG   r[   Úpathlibr   Úshutilr   Útempfiler   Ú	traitletsr   r   r   r	   Únbconvert.utils.ior
   Úconvertfiguresr   r`   r_   rH   rI   ÚImportErrorÚ_winregr   r   r   r   ú<module>r–      sX  ððð ð €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à -Ð -Ð -Ð -Ð -Ð -à 6Ð 6Ð 6Ð 6Ð 6Ð 6ð L€ð G€à„<�7ÒÐð!ØˆˆˆˆøØð !ð !ð !Ø Ð Ð Ð Ð Ð ð!øøøð^%ð ^%ð ^%ð ^%ð ^%Ð4ñ ^%ô ^%ð ^%ð ^%ð ^%s   ÁA Á	A"Á!A"