o $a7@s dZddlZddlmZddlmZddlmZmZmZmZddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZmZddlmZe e!Z"GdddeZ#GdddeZ$dedee%effddZ&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 @seZdZdZdedededdfddZdeded eed eddf d d Z ded e j ddfddZ dedede eefdeddf ddZdS)ImageCollectorz-Image files collector for sphinx.environment.appenvdocnamereturnNcC|j|dSN)images purge_docselfrrrrE/usr/lib/python3/dist-packages/sphinx/environment/collectors/asset.py clear_doc#zImageCollector.clear_docdocnamesothercC|j||jdSr)r merge_otherrrrr#r$rrr r&&zImageCollector.merge_otherdoctreec Csn|jj}|tjD]}i}||d<|d}|dr ||d<q |ddkr,||d<q |tj drg|j ||\}}||d<|j j r]t ||j} |j | |\} } ||j| ||||j|||n|j j rqt||j}|j ||\|d<} |d|d<|D]-} |jj|| tt|j| tjstjtd| |d d d q|jj|| qq d S) zProcess and rewrite image URIs. candidatesurizdata:?://*zimage file not readable: %simage not_readablelocationtypesubtypeN)rrtraverserr0 startswithfindendswithosextsep relfn2pathconfiglanguagercollect_candidatesrvalues dependenciesaddaccessrjoinsrcdirR_OKloggerwarningrradd_file) rrr)rnoder*imguri rel_imgpath full_imgpath i18n_imguri_full_i18n_imgpathimgpathrrr process_doc*sB     zImageCollector.process_docrQr*rJc Csi}t|D]S}tt|jd|}z&t|}|dur*t|\} } d| dd}||vr7||g|Wqt yY} zt j t d|| f|dddWYd} ~ qd} ~ ww| D]\} } t| tdd || <q^dS) Ndummyzimage/x-zimage file %s not readable: %sr0r1r2)keyr)rr rrDrErsplitext setdefaultappendOSErrorrGrHritemssortedlen)rrrQr*rJglobbedfilename new_imgpathmimetypebasenamesuffixerrrUfilesrrr r?_s, z!ImageCollector.collect_candidates)__name__ __module__ __qualname____doc__r r strr!rr&rdocumentrRrr r?rrrr r s$   5 rc @sdeZdZdZdedededdfddZdeded eed eddf d d Z ded e j ddfddZ dS)DownloadFileCollectorz0Download files collector for sphinx.environment.rrrrNcCrr)dlfilesrrrrr r!vr"zDownloadFileCollector.clear_docr#r$cCr%r)rlr&r'rrr r&yr(z!DownloadFileCollector.merge_otherr)cCs|tjD]F}|d}d|vr||d<q|j||jj\}}|jj|jj|t |tj s@t j t d||dddq|jj|jj||d<qd S) z!Process downloadable file paths. reftargetr-refurizdownload file not readable: %sdownloadr1r2r^N)r6r download_referencerr<rrArBr:rCrFrGrHrrlrI)rrr)rJ targetname rel_filenamer^rrr rR}s z!DownloadFileCollector.process_doc) rerfrgrhr r rir!rr&rrjrRrrrr rkss  rkrrcCs |t|tddddS)NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorrrk)rrrr setups  rx)'rhr:rrtypingrrrrdocutilsrdocutils.nodesr docutils.utilsr sphinxr sphinx.applicationr sphinx.environmentr sphinx.environment.collectorsr sphinx.localer sphinx.utilrsphinx.util.i18nrrsphinx.util.imagesr getLoggerrerGrrkrirxrrrr s(             S