o
    Ni                  	   @  s  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 z
ddlmZ dZW n ey=   d	ZY nw d
ddddddddZdd ee D ZG dd deZd.ddZe	d/ddZe		d0d1d"dZ	#	d2d3d$dZd4d&d'Zd5d*d+Zd6d,d-ZdS )7z#Image utility functions for Sphinx.    )annotationsN)path)TYPE_CHECKING
NamedTupleoverload)PathLike)ImageTFz	image/gifz
image/jpegz	image/pngzapplication/pdfzimage/svg+xmlzapplication/illustratorz
image/webp)z.gifz.jpgz.pngz.pdfz.svgz.svgzz.aiz.webpc                 C  s   i | ]\}}||qS  r	   ).0kvr	   r	   F/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/util/images.py
<dictcomp>   s    r   c                   @  s&   e Zd ZU ded< ded< ded< dS )DataURIstrmimetypecharsetbytesdataN)__name__
__module____qualname____annotations__r	   r	   r	   r   r   "   s   
 r   filenamer   returntuple[int, int] | Nonec                 C  s   zKt | }|d dkrd }nt|d tst|d tr)t|d t|d f}|d u rItrIt| }|j}W d    |W S 1 sDw   Y  |W S  t	yU   Y d S w )Nr      )
	imagesizeget
isinstancefloatintPILLOW_AVAILABLEr   opensize	Exception)r   r%   imr	   r	   r   get_image_size(   s    

r(   PathLike[str] | strdefaultc                 C     d S Nr	   r   r*   r	   r	   r   guess_mimetype9   s   r.   None
str | Nonec                 C  r+   r,   r	   r-   r	   r	   r   r.   =   s    c                 C  sX   t | d  }|tv rt| S t | r*z	t| }W d| S  ty)   Y |S w |S )Nr   zimage/)r   splitextlowermime_suffixesexists_image_type_from_file
ValueError)r   r*   extimgtyper	   r	   r   r.   C   s   

r   c                 C  s
   t | S r,   )_suffix_from_mimer   )r   r	   r	   r   get_image_extensionT   s   
r;   uriDataURI | Nonec                 C  s~   |  dsd S d}d}| dd  dd\}}|dD ]}|dkr#q| d	r/|d
d  }q|r3|}qt|}t|||S )Nzdata:z
text/plainzUS-ASCII   ,r   ;base64zcharset=   )
startswithsplitrA   	b64decoder   )r<   r   r   
propertiesr   prop
image_datar	   r	   r   parse_data_uriX   s   


rI   c                 C  s   t | d}|d}W d    n1 sw   Y  |dr!dS |dr(dS |dr/dS |d	r6d
S d| v r>dS |drEdS |drT|dd dkrTdS d}t|)Nrb    s   BMbmp)s   GIF87as   GIF89agifs   jpegs   PNG

pngs   <svgzsvg+xml)s   MMs   IItiffs   RIFFrB      s   WEBPwebpzCould not detect image type!)r$   readrC   r3   r7   )r   fheadermsgr	   r	   r   r6   m   s&   




r6   )r   r   r   r   )r   r)   r*   r   r   r   r,   )r   r)   r*   r/   r   r0   )r1   N)r   r)   r*   r0   r   r0   )r   r   r   r0   )r<   r   r   r=   )r   r)   r   r   )__doc__
__future__r   rA   osr   typingr   r   r   r   r   PILr   r#   ImportErrorr4   reverseditemsr:   r   r(   r.   r;   rI   r6   r	   r	   r	   r   <module>   sJ    



