
    }c                        d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZ ddlZ	 ddlmZ n# e$ r dZY nw xY w eg d          Z G d d	e
          Zd
edeeeef                  fdZddedee         dee         fdZdd
edee         dee         fdZdedee         fdZdedee         fdZdedee	         dee         fdZej                            e           dS )z#Image utility functions for Sphinx.    N)OrderedDict)path)IOBinaryIO
NamedTupleOptionalTuple)Image))z.gifz	image/gif)z.jpgz
image/jpeg)z.pngz	image/png)z.pdfzapplication/pdf)z.svgimage/svg+xml)z.svgzr   )z.aizapplication/illustratorc                   .    e Zd ZU eed<   eed<   eed<   dS )DataURImimetypecharsetdataN)__name__
__module____qualname__str__annotations__bytes     2lib/python3.11/site-packages/sphinx/util/images.pyr   r      s+         MMMLLL
KKKKKr   r   filenamereturnc                    	 t          j        |           }|d         dk    rd }n`t          |d         t                    st          |d         t                    r*t	          |d                   t	          |d                   f}|:t
          r3t          j        |           5 }|j        }d d d            n# 1 swxY w Y   |S # t          $ r Y d S w xY w)Nr      )		imagesizeget
isinstancefloatintr
   opensize	Exception)r   r%   ims      r   get_image_sizer(   !   s   }X&&7b= 	0DDQ'' 	0:d1gu+E+E 	0QLL#d1g,,/D 	E 	H%% w                  tts6   B C "B6*C 6B::C =B:>C 
CCstreamdefaultc                 <    t          j        |           }|rd|z   S |S )Nzimage/)imghdrwhat)r)   r*   imgtypes      r   guess_mimetype_for_streamr/   2   s)    k&!!G '!!r    c                    t          j        |                                           \  }}|t          v rt          |         S t          j        |           r9t          | d          5 }t          ||          cd d d            S # 1 swxY w Y   |S )Nrb)r*   )r   splitextlowermime_suffixesexistsr$   r/   )r   r*   _extfs        r   guess_mimetyper:   :   s    ]8>>++,,FAs
m AS!!	X		 A(D!! 	AQ,Q@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A Ns   $BB	Br   c                 X    t                                           D ]\  }}| |k    r|c S d S N)r5   items)r   r8   	_mimetypes      r   get_image_extensionr?   E   sC    '--//  Yy  	JJJ	 4r   uric                 J   |                      d          sd S d}d}| dd                              dd          \  }}|                    d          D ]-}|dk    r	|                     d	          r|d
d          })|r|}.t          j        |          }t	          |||          S )Nzdata:z
text/plainzUS-ASCII   ,r   ;base64zcharset=   )
startswithsplitrE   	b64decoder   )r@   r   r   
propertiesr   prop
image_datas          r   parse_data_urirM   M   s    >>'"" t HG122w}}S!,,J  %%  8 	__Z(( 	122hGG 	H!$''J8Wj111r   hr9   c                 ~    	 d|                                                                  v rdS n# t          $ r Y nw xY wdS )zEAn additional imghdr library helper; test the header is SVG's or not.z<svgzsvg+xmlN)decoder4   UnicodeDecodeError)rN   r9   s     r   test_svgrR   b   sY    QXXZZ%%''' 	9	    4s   (- 
::r<   )r0   N)__doc__rE   r,   collectionsr   osr   typingr   r   r   r   r	   r   PILr
   ImportErrorr5   r   r   r#   r(   r/   r:   r?   rM   r   rR   testsappendr   r   r   <module>r[      s;   ) )   # # # # # #       < < < < < < < < < < < < < <       EEE          j   S XeCHo%>    " b 8C= HUXM     S  RU    # (3-    2 2 1 2 2 2 2* (8, #       H     s   1 ;;