U cB`G@s dZddlZddlmZddlmZddlmZmZmZmZddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZmZddlmZe e!Z"GdddeZ#GdddeZ$eee%efdddZ&dS)z sphinx.environment.collectors.asset ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The image collector for sphinx.environment. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)glob)path)AnyDictListSet)nodes)Node) relative_path)addnodes)Sphinx)BuildEnvironment)EnvironmentCollector)__)logging)get_image_filename_for_languagesearch_image_for_language)guess_mimetypec@speZdZdZeeeddddZeeeeeddddZ ee j dd d d Z eee eefedd d dZdS)ImageCollectorz-Image files collector for sphinx.environment.NappenvdocnamereturncCs|j|dSN)images purge_docselfrrrrM/usr/local/lib/python3.8/site-packages/sphinx/environment/collectors/asset.py clear_doc#szImageCollector.clear_docrrdocnamesotherrcCs|j||jdSr)r merge_otherrrrr#r$rrr r%&szImageCollector.merge_otherrdoctreerc Csx|jj}|tjD]\}i}||d<|d}|drD||d<qn|ddkr\||d<q|tj dr|j ||\}}||d<|j j rt ||j} |j | |\} } ||j| ||||j|||n6|j j rt||j}|j ||\|d<} |d|d<|D]`} |jj|| tt|j| tjs^tjtd| |d d d q|jj|| qqd S) zProcess and rewrite image URIs. candidatesZurizdata:?://*zimage file not readable: %simage not_readablelocationtypeZsubtypeN)rrtraverserr. startswithfindendswithosextsep relfn2pathZconfigZlanguagercollect_candidatesrvalues dependenciesaddaccessrjoinsrcdirR_OKloggerwarningrradd_file) rrr(rnoder)ZimguriZ rel_imgpathZ full_imgpathZ i18n_imguri_Zfull_i18n_imgpathimgpathrrr process_doc*sB     zImageCollector.process_doc)rrGr)rErc Csi}t|D]}tt|jd|}zLt|}|dkrTt|\} } d| dd}||krn||g|Wq t k r} z"t j t d|| f|dddW5d} ~ XYq Xq | D]\} } t| tdd || <qdS) NZdummyzimage/x-zimage file %s not readable: %sr.r/r0)keyr)rr rr?r@rsplitext setdefaultappendOSErrorrBrCritemssortedlen)rrrGr)rEZglobbedfilenameZ new_imgpathZmimetypebasenamesuffixerrrJfilesrrr r:_s( z!ImageCollector.collect_candidates)__name__ __module__ __qualname____doc__r r strr!rr%rdocumentrHrr r:rrrr r s 5 rc@sReZdZdZeeeddddZeeeeeddddZ ee j dd d d Z dS) DownloadFileCollectorz0Download files collector for sphinx.environment.NrcCs|j|dSr)dlfilesrrrrr r!vszDownloadFileCollector.clear_docr"cCs|j||jdSr)r^r%r&rrr r%ysz!DownloadFileCollector.merge_otherr'cCs|tjD]}|d}d|kr*||d<q |j||jj\}}|jj|jj|t |tj st j t d||dddq |jj|jj||d<q d S) z!Process downloadable file paths. Z reftargetr+Zrefurizdownload file not readable: %sZdownloadr/r0rRN)r3r Zdownload_referencerr9rr<r=r7r>rArBrCrr^rD)rrr(rEZ targetnameZ rel_filenamerRrrr rH}s z!DownloadFileCollector.process_doc) rWrXrYrZr r r[r!rr%rr\rHrrrr r]ss r])rrcCs |t|tddddS)NZbuiltinT)versionZparallel_read_safeZparallel_write_safe)Zadd_env_collectorrr])rrrr setups   r`)'rZr7rrtypingrrrrZdocutilsrZdocutils.nodesr Zdocutils.utilsr Zsphinxr Zsphinx.applicationr Zsphinx.environmentr Zsphinx.environment.collectorsrZ sphinx.localerZ sphinx.utilrZsphinx.util.i18nrrZsphinx.util.imagesrZ getLoggerrWrBrr]r[r`rrrr s&              S