U
    \Sh                     @  s   d Z ddlmZ ddlZddlZddlmZ ddlm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 dd
lmZ eeZG dd deZdddddZdS )z$Image converter extension for Sphinx    )annotationsN)CalledProcessError)Any)Sphinx)ExtensionError)__)ImageConverter)loggingc                   @  s8   e Zd ZddddgZddddZd	d	dd
ddZdS )ImagemagickConverter)zimage/svg+xml	image/png)z	image/gifr   )zapplication/pdfr   )zapplication/illustratorr   bool)returnc              
   C  s   z.| j jdg}td| tj|ddd W dS  tk
rl } z ttd| j j| W Y dS d}~X Y n> t	k
r } z ttd|j
|j W Y dS d}~X Y nX dS )	z+Confirms the converter is available or not.z-versionInvoking %r ...Tcapture_outputcheckzUnable to run the image conversion command %r. 'sphinx.ext.imgconverter' requires ImageMagick by default. Ensure it is installed, or set the 'image_converter' option to a custom conversion command.

Traceback: %sFN2convert exited with error:
[stderr]
%r
[stdout]
%r)configimage_converterloggerdebug
subprocessrunOSErrorwarningr   r   stderrstdout)selfargsexc r    J/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/ext/imgconverter.pyis_available   s&     
 z!ImagemagickConverter.is_availablestr)_from_tor   c              
   C  s   zD|d7 }| j jg| j j ||g }td| tj|ddd W dS  tk
rn   tt	d| j j Y dS  t
k
r } ztt	d|j|jf |W 5 d}~X Y nX dS )	z#Converts the image to expected one.z[0]r   Tr   zCconvert command %r cannot be run, check the image_converter settingFr   N)r   r   image_converter_argsr   r   r   r   r   r   r   r   r   r   r   )r   r$   r%   r   r   r    r    r!   convert2   s*    

zImagemagickConverter.convertN)__name__
__module____qualname__Zconversion_rulesr"   r'   r    r    r    r!   r
      s   r
   r   zdict[str, Any])appr   c                 C  s^   |  t tjdkr4| ddd | ddgd n| ddd | dg d tjdddS )	Nwin32r   Zmagickenvr&   r'   T)versionZparallel_read_safeZparallel_write_safe)Zadd_post_transformr
   sysplatformZadd_config_valuesphinxZ__display_version__)r+   r    r    r!   setupJ   s    

r2   )__doc__
__future__r   r   r/   r   typingr   r1   Zsphinx.applicationr   Zsphinx.errorsr   Zsphinx.localer   Z(sphinx.transforms.post_transforms.imagesr   Zsphinx.utilr	   	getLoggerr(   r   r
   r2   r    r    r    r!   <module>   s   
6