B
    .Kc                 @   s   d Z ddlZddlZddlmZ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 ddlmZ dd	lmZ eeZG d
d deZe
eeef dddZdS )z$Image converter extension for Sphinx    N)PIPECalledProcessError)AnyDict)Sphinx)ExtensionError)__)ImageConverter)loggingc               @   s8   e Zd ZddddgZedddZeeedd	d
ZdS )ImagemagickConverter)zimage/svg+xmlz	image/png)z	image/gifz	image/png)zapplication/pdfz	image/png)zapplication/illustratorz	image/png)returnc          
   C   s   y.| j jdg}td| tj|ttdd dS  tk
rf } ztt	d| j j| dS d}~X Y n8 t
k
r } ztt	d|j|j dS d}~X Y nX dS )	z+Confirms the converter is available or not.z-versionzInvoking %r ...T)stdoutstderr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: %sFNz2convert exited with error:
[stderr]
%r
[stdout]
%r)configimage_converterloggerdebug
subprocessrunr   OSErrorwarningr   r   r   r   )selfargsexc r   6lib/python3.7/site-packages/sphinx/ext/imgconverter.pyis_available   s    
z!ImagemagickConverter.is_available)_from_tor   c          
   C   s   yD|d7 }| j jg| j j ||g }td| tj|ttdd dS  tk
rl   t	t
d| j j dS  tk
r } ztt
d|j|jf |W dd}~X Y nX dS )	z#Converts the image to expected one.z[0]zInvoking %r ...T)r   r   r   zCconvert command %r cannot be run, check the image_converter settingFz2convert exited with error:
[stderr]
%r
[stdout]
%rN)r   r   image_converter_argsr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   convert0   s    


zImagemagickConverter.convertN)__name__
__module____qualname__Zconversion_rulesboolr   strr!   r   r   r   r   r      s   r   )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   setupH   s    

r.   )__doc__r   r+   r   r   typingr   r   r-   Zsphinx.applicationr   Zsphinx.errorsr   Zsphinx.localer   Z(sphinx.transforms.post_transforms.imagesr	   Zsphinx.utilr
   Z	getLoggerr"   r   r   r&   r.   r   r   r   r   <module>   s   
6