B
    \                 @   s<  d Z ddlm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ZddlmZmZmZ ddlmZ ydd	lmZ W n: ek
r   yddlZW n ek
r   dZY nX Y nX ereZed
dddddgZeddefdefdefgZdd Zd!ddZd"ddZdd Zdd Zdd  Z ej!"e  dS )#z
    sphinx.util.images
    ~~~~~~~~~~~~~~~~~~

    Image utility functions for Sphinx.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )absolute_importN)OrderedDict)path)
NamedTuple)PY3BytesIO	iteritems)RemovedInSphinx30Warning)Image)z.gifz	image/gif)z.jpgz
image/jpeg)z.pngz	image/png)z.pdfzapplication/pdf)z.svgzimage/svg+xml)z.svgzzimage/svg+xmlDataURImimetypecharsetdatac             C   sx   y^t | }|d dkrd }|d kr\tr\t| }|j}y|j  W n tk
rZ   Y nX |S  tk
rr   d S X d S )Nr   )	imagesizegetr
   opensizefpclose	Exception)filenamer   Zim r   1lib/python3.7/site-packages/sphinx/util/images.pyget_image_size6   s    

r   c             C   s   t | }|rd| S |S d S )Nzimage/)imghdrZwhat)streamdefaultZimgtyper   r   r   guess_mimetype_for_streamJ   s    
r    c          	   C   sr   t |  \}}|tkr"t| S |rFtjdtdd tt||dS t 	| rnt
| d}t||dS Q R X |S )Nz7The content argument of guess_mimetype() is deprecated.   )
stacklevel)r   rb)r   splitextlowermime_suffixeswarningswarnr	   r   r   existsr   )r   Zcontentr   _extfr   r   r   guess_mimetypeS   s    

r,   c             C   s&   x t tD ]\}}| |kr
|S q
W d S )N)r   r%   )r   r*   Z	_mimetyper   r   r   get_image_extensionc   s    r-   c             C   s   |  dsd S d}d}| dd  dd\}}x<|dD ].}|dkrHq:| d	r`|d
d  }q:|r:|}q:W t|}t|||S )Nzdata:z
text/plainzUS-ASCII   ,   ;base64zcharset=   )
startswithsplitr2   Z	b64decoder   )Zurir   r   Z
propertiesr   ZpropZ
image_datar   r   r   parse_data_uril   s    


r6   c             C   s4   yd|  d krdS W n tk
r.   Y nX dS )zEAn additional imghdr library helper; test the header is SVG's or not.z<svgzutf-8zsvg+xmlN)decoder$   UnicodeDecodeError)hr+   r   r   r   test_svg   s    r:   )N)r   NN)#__doc__Z
__future__r   r2   r   r&   collectionsr   osr   typingr   r   Zsixr   r   r   Zsphinx.deprecationr	   ZPILr
   ImportErrorstrZunicoder%   bytesr   r   r   r,   r-   r6   r:   Ztestsappendr   r   r   r   <module>
   sH   

	
	