
    FeZ                    d   d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 ddl
Z
erddlmZ 	 ddlmZ dd	d
dddddZ eej#                               D  ci c]  \  } }|| 
 c}} Z G d de      ZddZe	dd       Ze	ddd       Z	 	 d	 	 	 	 	 ddZddZddZd dZy# e$ r dZY xw xY wc c}} w )!z#Image utility functions for Sphinx.    )annotationsN)path)TYPE_CHECKING
NamedTupleoverload)PathLike)Imagez	image/gifz
image/jpegz	image/pngzapplication/pdfzimage/svg+xmlzapplication/illustrator)z.gifz.jpgz.pngz.pdfz.svgz.svgzz.aic                  ,    e Zd ZU ded<   ded<   ded<   y)DataURIstrmimetypecharsetbytesdataN)__name__
__module____qualname____annotations__     4/usr/lib/python3/dist-packages/sphinx/util/images.pyr   r      s    ML
Kr   r   c                l   	 t        j                  |       }|d   dk(  rd }nBt        |d   t              st        |d   t              rt	        |d         t	        |d         f}|2t
        r,t        j                  |       5 }|j                  }d d d        |S |S # 1 sw Y   |S xY w# t        $ r Y y w xY w)Nr      )		imagesizeget
isinstancefloatintr	   opensize	Exception)filenamer!   ims      r   get_image_sizer%   %   s    }}X&7b=DQ':d1gu+EQL#d1g,/D<EH% ww t  s6   A?B' B	B' B' B$B' $B' '	B32B3c                     y Nr   r#   defaults     r   guess_mimetyper*   6       r   c                     y r'   r   r(   s     r   r*   r*   ;   r+   r   c                    t        j                  |       d   j                         }|t        v r	t        |   S t        j                  |       r	 t        |       }d|z   S |S # t        $ r Y |S w xY w)Nr   zimage/)r   splitextlowermime_suffixesexists_image_type_from_file
ValueError)r#   r)   extimgtypes       r   r*   r*   @   s{     --
!!
$
*
*
,C
mS!!{{8	&+H5G g%%N	  	 N		s   A   	A-,A-c                ,    t         j                  |       S r'   )_suffix_from_mimer   )r   s    r   get_image_extensionr8   Q   s      **r   c                   | j                  d      sy d}d}| dd  j                  dd      \  }}|j                  d      D ]$  }|dk(  r	|j                  d	      r|d
d  } |s#|}& t        j                  |      }t	        |||      S )Nzdata:z
text/plainzUS-ASCII   ,r   ;base64zcharset=   )
startswithsplitr=   	b64decoder   )urir   r   
propertiesr   prop
image_datas          r   parse_data_urirF   U   s    >>'" HG12w}}S!,J  % 8__Z(12hGH !!$'J8Wj11r   c                   t        | d      5 }|j                  d      }d d d        j                  d      ry|j                  d      ry|j                  d      ry|j                  d	      ry
d|j                         v ry|j                  d      ry|j                  d      r	|dd dk(  ryd}t	        |      # 1 sw Y   xY w)Nrb    s   BMbmp)s   GIF87as   GIF89agifs   jpegs   PNG

pngs   <svgzsvg+xml)s   MMs   IItiffs   RIFFr>      s   WEBPwebpzCould not detect image type!)r    readr?   r/   r3   )r#   fheadermsgs       r   r2   r2   j   s    	h	 
  /0 % -. &,,.  ( !fQrlg&=
(C
S/O s   B;;C)r#   r   returnztuple[int, int] | None)r#   PathLike[str] | strr)   r   rU   r   r'   )r#   rV   r)   NonerU   
str | None) N)r#   rV   r)   rX   rU   rX   )r   r   rU   rX   )rB   r   rU   zDataURI | None)r#   rV   rU   r   )__doc__
__future__r   r=   osr   typingr   r   r   r   r   PILr	   ImportErrorr0   reverseditemsr7   r   r%   r*   r8   rF   r2   )kvs   00r   <module>rd      s    ) "   6 6 
 $ '/}/B/B/D&EFdaQTF j " 
 
 
 

 %'! "+2*(u  E Gs   B B,B)(B)