Ë
    íÍ:j\$  ã                   óö   — d Z ddlZddlmZ ddlmZmZ ddlZddlm	Z	 ddl
mZ ddlmZmZ ddlmZ ddlZ G d	„ d
e	j$                  e	j&                  «      Z G d„ de«      Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)a   
Add a ``figure-mpl`` directive that is a responsive version of ``figure``.

This implementation is very similar to ``.. figure::``, except it also allows a
``srcset=`` argument to be passed to the image tag, hence allowing responsive
resolution images.

There is no particular reason this could not be used standalone, but is meant
to be used with :doc:`/api/sphinxext_plot_directive_api`.

Note that the directory organization is a bit different than ``.. figure::``.
See the *FigureMpl* documentation below.

é    N)Úrelpath)ÚPurePathÚPath)Únodes)Ú
directives)ÚFigureÚImage)ÚExtensionErrorc                   ó   — e Zd Zy)Ú
figmplnodeN)Ú__name__Ú
__module__Ú__qualname__© ó    úz/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/sphinxext/figmpl_directive.pyr   r      s   „ Ør   r   c            	       óÜ   — e Zd ZdZdZdZdZdZej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  dœZd„ Zy)Ú	FigureMplaž  
    Implements a directive to allow an optional hidpi image.

    Meant to be used with the *plot_srcset* configuration option in conf.py,
    and gets set in the TEMPLATE of plot_directive.py

    e.g.::

        .. figure-mpl:: plot_directive/some_plots-1.png
            :alt: bar
            :srcset: plot_directive/some_plots-1.png,
                     plot_directive/some_plots-1.2x.png 2.00x
            :class: plot-directive

    The resulting html (at ``some_plots.html``) is::

        <img src="sphx_glr_bar_001_hidpi.png"
            srcset="_images/some_plot-1.png,
                    _images/some_plots-1.2x.png 2.00x",
            alt="bar"
            class="plot_directive" />

    Note that the handling of subdirectories is different than that used by the sphinx
    figure directive::

        .. figure-mpl:: plot_directive/nestedpage/index-1.png
            :alt: bar
            :srcset: plot_directive/nestedpage/index-1.png
                     plot_directive/nestedpage/index-1.2x.png 2.00x
            :class: plot_directive

    The resulting html (at ``nestedpage/index.html``)::

        <img src="../_images/nestedpage-index-1.png"
            srcset="../_images/nestedpage-index-1.png,
                    ../_images/_images/nestedpage-index-1.2x.png 2.00x",
            alt="bar"
            class="sphx-glr-single-img" />

    where the subdirectory is included in the image name for uniqueness.
    Fé   é   )ÚaltÚheightÚwidthÚscaleÚalignÚclassÚcaptionÚsrcsetc                 ó4  — t        «       }| j                  d   }| j                  j                  dd«      |d<   | j                  j                  dd «      |d<   | j                  j                  dd «      |d<   | j                  j                  dd «      |d<   | j                  j                  dd «      |d<   | j                  j                  dd «      |d<   | j                  j                  d	d «      |d	<   ||d
<   | j                  j                  dd «      |d<   |gS )Nr   r   Ú r   r   r   r   r   r   Úurir   )r   Ú	argumentsÚoptionsÚget)ÚselfÚ
image_nodeÚimagenms      r   ÚrunzFigureMpl.runZ   s  € ä“\ˆ
à—.‘. Ñ#ˆØ ŸL™L×,Ñ,¨U°BÓ7ˆ
�5ÑØ"Ÿl™l×.Ñ.¨w¸Ó=ˆ
�7ÑØ"Ÿl™l×.Ñ.¨w¸Ó=ˆ
�7ÑØ"Ÿl™l×.Ñ.¨w¸Ó=ˆ
�7ÑØ#Ÿ|™|×/Ñ/°¸$Ó?ˆ
�8ÑØ"Ÿl™l×.Ñ.¨w¸Ó=ˆ
�7ÑØ $§¡× 0Ñ 0°¸DÓ Aˆ
�9Ñð $ˆ
�5ÑØ#Ÿ|™|×/Ñ/°¸$Ó?ˆ
�8Ñàˆ|Ðr   N)r   r   r   Ú__doc__Úhas_contentÚrequired_argumentsÚoptional_argumentsÚfinal_argument_whitespacer   Ú	unchangedÚlength_or_unitlessÚ length_or_percentage_or_unitlessÚnonnegative_intr	   r   Úclass_optionÚoption_specr(   r   r   r   r   r       ss   „ ñ(ðT €KØÐØÐØ %Ðà×#Ñ#Ø×/Ñ/Ø×<Ñ<Ø×+Ñ+Ø—‘Ø×(Ñ(Ø×'Ñ'Ø×&Ñ&ñ	€Kór   r   c                 ó  — | j                  d«      }i }|D ]n  }|j                  «       j                  d«      }t        |«      dk(  r	|d   |d<   Œ9t        |«      dk(  r|d   dd }|d   |t        |«      <   Œat	        d|› d	�«      ‚ |S )
z
    parse srcset...
    ú,ú r   r   r   Néÿÿÿÿzsrcset argument "z" is invalid.)ÚsplitÚstripÚlenÚfloatr
   )ÚstÚentriesr   ÚentryÚsplÚmults         r   Ú_parse_srcsetNodesrA   q   s�   € ð �h‰h�s‹m€GØ€FØò KˆØ�k‰k‹m×!Ñ! #Ó&ˆÜˆs‹8�qŠ=Ø˜A™ˆF�1ŠIÜ�‹X˜Š]Ø�q‘6˜#˜2�;ˆDØ"% a¡&ˆF”5˜“;Òä Ð#4°U°G¸=Ð!IÓJÐJðKð €Mr   c                 óâ  — |d   rt        |d   «      }nd }t        | j                  d   «      j                  }| j                  j
                  }t        ||«      j                  dd«      j                  t        j                  d«      }t        |«      r|dz  }t        | j                  j                  | j                  j                  «      }t        |«      j                  dd¬«       |rJ|j                  «       D ]6  }t        ||«      }||j                   z   }	t#        j$                  |||	z  «       Œ8 n7t        ||d   «      }||j                   z   }	t#        j$                  |||	z  «       |||fS )	Nr   Úsourceú.r    ú-T)ÚparentsÚexist_okr!   )rA   r   ÚdocumentÚparentÚbuilderÚsrcdirr   ÚreplaceÚosÚsepr:   ÚoutdirÚimagedirr   ÚmkdirÚvaluesÚnameÚshutilÚcopyfile)
r%   Únoder   Ú	docsourceÚsrctopÚrelrP   ÚsrcÚabspathrS   s
             r   Ú_copy_images_figmplr\   ƒ   sD  € ð ˆH‚~Ü# D¨¡NÓ3‰àˆô ˜Ÿ™ xÑ0Ó1×8Ñ8€Ið �\‰\× Ñ €FÜ
�)˜VÓ
$×
,Ñ
,¨S°"Ó
5×
=Ñ
=¼b¿f¹fÀcÓ
J€CÜ
ˆ3„xØˆs‰
ˆô ˜Ÿ™×+Ñ+¨T¯\©\×-BÑ-BÓC€Hô 	ˆƒN×Ñ °ÐÔ5ñ Ø—=‘=“?ò 	6ˆCä˜y¨#Ó.ˆGØ˜Ÿ™Ñ%ˆDÜ�O‰O˜G X°¡_Õ5ñ		6ô ˜9 d¨5¡kÓ2ˆØ�W—\‘\Ñ!ˆÜ�‰˜ ¨D¡Ô1à�V˜SÐ Ð r   c           	      ó  — t        | |«      \  }}}t        | j                  d   «      }t        | j                  j                  d«      }t        ||«      }t        | j                  j                  d«      }||z  }	t        t        ||	j                  «      «      j                  «       }
| j                  j                  dk(  rd|
› �}
t        |d   dd  «      j                  }|
› d|› |› �}||d   d	œ}|}|rid
}d}|j                  «       D ]J  \  }}t        |dd  «      j                  }|
› d|› |› �}||z  }|dk(  r|dz  }n
|d|d›d�z  }||kD  sŒG|}|}ŒL |d d |d<   |d   �dj                  |d   «      |d<   dD ]1  }||   sŒ	d|vr|› d||   › d�|d<   Œ|dxx   |› d||   › d�z  cc<   Œ3 | j                  j                  | j                  |d|d   rd|d   › �nd¬«      «       | j                  j                  | j                  |dd|¬«       | j                  |dfi |¤Žz   d z   «       |d!   r¼| j                  j                  | j                  |d"«      «       | j                  j                  | j                  |d#«      «       | j                  j                  | j                  |d$d%¬«      «       | j                  j                  |d!   «       | j                  j                  d&«       | j                  j                  d'«       y )(NrC   r    Údirhtmlz..r!   r   ú/r   )rZ   r   r7   r   z, r6   z1.2fzx, éþÿÿÿr   r   )r   r   r   Ústylez: ú;Úfigurer   zalign-zalign-center)ÚCLASSÚaz"reference internal image-reference)rd   ÚhrefÚimgz</a>
r   Ú
figcaptionÚpÚspanzcaption-textz</span></p></figcaption>
z
</figure>
)r\   r   rH   rJ   rK   r   rO   rI   Úas_posixrS   ÚitemsÚjoinÚbodyÚappendÚstarttagÚemptytag)r%   rV   rP   r   rY   rW   rX   Ú	relsourceÚdesttopÚdestÚimagerelÚnmr!   Ú	img_attrsÚmaxsrcÚmaxmultÚsrcsetstr@   rZ   Úpathra   s                        r   Úvisit_figmpl_htmlr|   ª   sD  € ä/°°dÓ;Ñ€Hˆf�cô ˜Ÿ™ xÑ0Ó1€Iô �d—l‘l×)Ñ)¨2Ó.€Fä˜	 6Ó*€Iä�t—|‘|×*Ñ*¨BÓ/€Gà�YÑ€Dô œ ¨$¯+©+Ó6Ó7×@Ñ@ÓB€HØ‡|�|×Ñ˜IÒ%Ø˜�z�?ˆô 
�$�u‘+˜a˜b�/Ó	"×	'Ñ	'€BØˆJ�a˜�u˜R˜DÐ
!€CØ D¨¡KÑ0€Ið €FÙØˆØˆØŸ™›ò 	‰IˆD�#Ü˜#˜a˜b˜'Ó"×'Ñ'ˆBà�Z˜q   b TÐ*ˆDØ˜ÑˆHØ�qŠyØ˜DÑ ‘à˜a  T˜{¨#Ð.Ñ.�à�g‹~Ø�Ø‘ð	ð ' s¨˜mˆ	�(ÑàˆG�}Ð Ø ŸX™X d¨7¡mÓ4ˆ	�'ÑØ-ò AˆØ�‹;Ø˜iÑ'Ø(- w¨b°°e±°¸QÐ%?�	˜'Ò"à˜'Ó"¨¨¨r°$°u±+°¸aÐ&@Ñ@Ô"ðAð" 	‡I�I×ÑØ�‰Ø�(Ø.2°7ªm�F˜4 ™=˜/Ñ*Àð 	ó 	QôRð 	‡I�I×ÑØ�‰�d˜CÐ'KØ!ð 	ó 	#àˆ�‰�d˜EÑ/ YÑ/ñ	0ð 	ñ	ôð
 ˆI‚Ø�	‰	×Ñ˜Ÿ™ t¨\Ó:Ô;Ø�	‰	×Ñ˜Ÿ™ t¨SÓ1Ô2Ø�	‰	×Ñ˜Ÿ™ t¨V¸>˜ÓJÔKØ�	‰	×Ñ˜˜i™Ô)Ø�	‰	×ÑÐ5Ô6Ø‡I�I×Ñ�]Õ#r   c                 ó¢   — |d   �9t        | |«      \  }}d}t        |d¬«      }t        ||   «      j                  |d<   | j	                  |«       y )Nr   r7   )Údefaultr!   )r\   Úmaxr   rS   Úvisit_figure)r%   rV   rP   r   ry   s        r   Úvisit_figmpl_latexr�   ÿ   sT   € àˆH�~Ð!Ü.¨t°TÓ:Ñˆ�&Øˆä�f bÔ)ˆÜ˜v g™Ó/×4Ñ4ˆˆU‰à×Ñ�dÕr   c                  ó   — y ©Nr   ©r%   rV   s     r   Údepart_figmpl_htmlr…     s   € Ør   c                 ó&   — | j                  |«       y rƒ   )Údepart_figurer„   s     r   Údepart_figmpl_latexrˆ     s   € Ø×Ñ�tÕr   c                 ó\   — | j                  t        t        t        ft        t
        f¬«       y )N)ÚhtmlÚlatex)Úadd_noder   r|   r…   r�   rˆ   )Úapps    r   Úfigurempl_addnoderŽ     s(   € Ø‡L�L”Ü(Ô*<Ð=Ü*Ô,?Ð@ð õ Br   c                 óp   — | j                  dt        «       t        | «       ddt        j                  dœ}|S )Nz
figure-mplT)Úparallel_read_safeÚparallel_write_safeÚversion)Úadd_directiver   rŽ   Ú
matplotlibÚ__version__)r�   Úmetadatas     r   Úsetupr—     s4   € Ø×Ñ�l¤IÔ.Ü�cÔØ&*À4Ü%×1Ñ1ñ3€Hà€Or   )r)   rM   Úos.pathr   Úpathlibr   r   rT   Údocutilsr   Údocutils.parsers.rstr   Ú&docutils.parsers.rst.directives.imagesr   r	   Úsphinx.errorsr
   r”   ÚGeneralÚElementr   r   rA   r\   r|   r�   r…   rˆ   rŽ   r—   r   r   r   ú<module>r       sx   ðñó 
Ý ß "Û å Ý +ß @Ý (ã ô	�—‘ §¡ô 	ôN�ô Nòbò$$!òNR$òj	ò	òòBór   