
    7 f                    2   d Z ddlmZ ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZ ddlmZ erddlmZ ddlmZ ddlmZ  ej         e!          Z" G d de          Z# G d de          Z$ddZ%dS )z+The image collector for sphinx.environment.    )annotationsN)glob)path)TYPE_CHECKINGAny)nodes)relative_path)addnodes)EnvironmentCollector)__)logging)get_image_filename_for_languagesearch_image_for_language)guess_mimetype)Node)Sphinx)BuildEnvironmentc                  2    e Zd ZdZdd
ZddZddZddZdS )ImageCollectorz-Image files collector for sphinx.environment.appr   envr   docnamestrreturnNonec                :    |j                             |           d S N)images	purge_docselfr   r   r   s       Y/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/environment/collectors/asset.py	clear_doczImageCollector.clear_doc    s    
W%%%%%    docnamesset[str]otherc                F    |j                             ||j                    d S r   )r   merge_otherr!   r   r   r%   r'   s        r"   r)   zImageCollector.merge_other#   s"    
x66666r$   doctreenodes.documentc                   |j         j        }|                    t          j                  D ]}i }||d<   |d         }|                    d          r||d<   -|                    d          dk    r||d<   L|                    t          j	        dz             r|j         
                    ||          \  }}||d<   t          ||j                   }	|j         
                    |	|          \  }
}|                     |j         |||           |                     |j         |||           nZt          ||j                   }|d         }|j         
                    ||          \  |d<   }
|d         |d<   |d         |k    r||d<   |                                D ]}|j         j        |                             |           t          j        t%          j        |j        |          t          j                  s/t,                              t1          d	          |z  |d
d           |j         j                            ||           dS )zProcess and rewrite image URIs.
candidatesurizdata:?://*original_urizimage file not readable: %simagenot_readablelocationtypesubtypeN)r   r   findallr   r5   
startswithfindendswithosextsep
relfn2pathr   collect_candidatesr   valuesdependenciesaddaccessr   joinsrcdirR_OKloggerwarningr   r   add_file)r!   r   r+   r   noder.   imgurirel_imgpathfull_imgpathi18n_imguri_full_i18n_imgpathr4   imgpaths                 r"   process_doczImageCollector.process_doc'   s\   '/OOEK00 0	: 0	:D
 *,J!+D%[F  )) "(
3{{5!!R''"(
3ry3// 8 -0G,>,>vw,O,O)\)U >fcgNN'*w'9'9+w'O'O$$''1BJPTUUU''z4PPPP 3637CC  $E{!$!3!3FG!D!DUQ"&u+
3;,..+7D( &,,.. : :$W-11':::y3:w!?!?II NN2&C#D#Dw#N,0w # X X X''9999:U0	: 0	:r$   rT   r.   dict[str, str]rM   r   c                D   i }t          |          D ]}t          t          j        |j        d          |          }	 t          |          }|$t          j        |          \  }	}
d|
dd          z   }||vr)|                    |g                               |           # t          $ r:}t                              t          d          ||fz  |dd           Y d }~d }~ww xY w|                                D ]$\  }}t          |t                    d	         ||<   %d S )
Ndummyzimage/x-   zimage file %s not readable: %sr5   r6   r7   )keyr   )r   r	   r   rG   rH   r   splitext
setdefaultappendOSErrorrJ   rK   r   itemssortedlen)r!   r   rT   r.   rM   globbedfilenamenew_imgpathmimetypebasenamesuffixerrrZ   filess                 r"   rB   z!ImageCollector.collect_candidates]   sn   (*W 	T 	TH'	#*g(F(F(02 2K	T)(33#'+}X'>'>$Hf)F122J6H:--&&x44;;KHHH T T Tr"BCCxQToU(,7N  T T T T T T T TT "--// 	8 	8JC$U444Q7JsOO	8 	8s   A"B  
C$*0CC$Nr   r   r   r   r   r   r   r   
r   r   r   r   r%   r&   r'   r   r   r   r   r   r+   r,   r   r   )
r   r   rT   r   r.   rV   rM   r   r   r   )__name__
__module____qualname____doc__r#   r)   rU   rB    r$   r"   r   r      sk        77& & & &7 7 7 74: 4: 4: 4:l8 8 8 8 8 8r$   r   c                  *    e Zd ZdZdd
ZddZddZdS )DownloadFileCollectorz0Download files collector for sphinx.environment.r   r   r   r   r   r   r   r   c                :    |j                             |           d S r   )dlfilesr   r    s       r"   r#   zDownloadFileCollector.clear_doct   s    g&&&&&r$   r%   r&   r'   c                F    |j                             ||j                    d S r   )ru   r)   r*   s        r"   r)   z!DownloadFileCollector.merge_otherw   s"    %-88888r$   r+   r,   c                   |                     t          j                  D ]}|d         }d|v r||d<   |j                            ||j        j                  \  }}|j        j        |j        j                                     |           t          j	        |t          j
                  s/t                              t          d          |z  |dd           |j        j                            |j        j        |          |d<   d	S )
z!Process downloadable file paths. 	reftargetr1   refurizdownload file not readable: %sdownloadr6   r7   rc   N)r;   r
   download_referencer   rA   r   rD   rE   r?   rF   rI   rJ   rK   r   ru   rL   )r!   r   r+   rM   
targetnamerel_filenamerc   s          r"   rU   z!DownloadFileCollector.process_doc{   s   OOH$?@@ 	[ 	[Dk*J
""!+X),););J)X)X&h$SW_599,GGGy2733 NN2&F#G#G(#R,0z> # [ [ [#&7?#;#;CGO\#Z#ZZ  	[ 	[r$   Nrj   rk   rl   )rm   rn   ro   rp   r#   r)   rU   rq   r$   r"   rs   rs   q   s\        ::' ' ' '9 9 9 9[ [ [ [ [ [r$   rs   r   r   r   dict[str, Any]c                v    |                      t                     |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr   rs   )r   s    r"   setupr      sE    .)))/000 "#  r$   )r   r   r   r~   )&rp   
__future__r   r?   r   r   typingr   r   docutilsr   docutils.utilsr	   sphinxr
   sphinx.environment.collectorsr   sphinx.localer   sphinx.utilr   sphinx.util.i18nr   r   sphinx.util.imagesr   docutils.nodesr   sphinx.applicationr   sphinx.environmentr   	getLoggerrm   rJ   r   rs   r   rq   r$   r"   <module>r      s   1 1 " " " " " " 				             % % % % % % % %       ( ( ( ( ( (       > > > > > >             W W W W W W W W - - - - - - 4######))))))333333		8	$	$Q8 Q8 Q8 Q8 Q8) Q8 Q8 Q8h[ [ [ [ [0 [ [ [4     r$   