o $a @sLdZddlZddlZddlmZddlmZddlmZm Z m Z m Z m Z ddl Z zddlmZWn ey;dZYnwegdZGdd d e Zd ed e e eeffd d Zddede ed e efddZd d ede ed e efddZded e efddZded e efddZdede e d e efddZejedS)!z sphinx.util.images ~~~~~~~~~~~~~~~~~~ Image utility functions for Sphinx. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N) OrderedDict)path)IOBinaryIO NamedTupleOptionalTuple)Image))z.gifz image/gif)z.jpgz image/jpeg)z.pngz image/png)z.pdfzapplication/pdf)z.svg image/svg+xml)z.svgzr )z.aizapplication/illustratorc@s&eZdZUeed<eed<eed<dS)DataURImimetypecharsetdataN)__name__ __module__ __qualname__str__annotations__bytesrr4/usr/lib/python3/dist-packages/sphinx/util/images.pyr #s  r filenamereturncCszKt|}|ddkrd}nt|dtst|dtr)t|dt|df}|durItrIt| }|j}Wd|WS1sDwY|WStyUYdSw)Nr) imagesizeget isinstancefloatintr opensize Exception)rr!imrrrget_image_size)s       r$streamdefaultcCst|}|r d|S|S)Nzimage/)imghdrwhat)r%r&imgtyperrrguess_mimetype_for_stream:s r*cCsft|\}}|tvrt|St|r1t|d}t||dWdS1s,wY|S)Nrb)r&)rsplitextlower mime_suffixesexistsr r*)rr&_extfrrrguess_mimetypeBs    r4r cCs&tD] \}}||kr|SqdSN)r/items)r r2 _mimetyperrrget_image_extensionMs r8uricCs~|dsdSd}d}|dddd\}}|dD]}|dkr#q|d r/|d d}q|r3|}qt|}t|||S) Nzdata:z text/plainzUS-ASCII,r;base64zcharset=) startswithsplitr= b64decoder )r9r r propertiesrprop image_datarrrparse_data_uriUs    rEhr3cCs2zd|vr WdSWdStyYdSw)zEAn additional imghdr library helper; test the header is SVG's or not.zs*