
    O&i                      B   d Z ddlZddlmZ ddlmZ ddlmZmZ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 ddlmZ ddlmZ ddlmZmZ ddlmZ  ej         e!          Z" G d de          Z# G d de          Z$dedee%ef         fdZ&dS )z+The image collector for sphinx.environment.    N)glob)path)AnyDictListSet)nodes)Node)relative_path)addnodes)Sphinx)BuildEnvironment)EnvironmentCollector)__)logging)get_image_filename_for_languagesearch_image_for_language)guess_mimetypec            
           e Zd ZdZdedededdfdZdededee         d	eddf
d
Z	dede
j        ddfdZdededeeef         deddf
dZdS )ImageCollectorz-Image files collector for sphinx.environment.appenvdocnamereturnNc                 :    |j                             |           d S N)images	purge_docselfr   r   r   s       p/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/environment/collectors/asset.py	clear_doczImageCollector.clear_doc   s    
W%%%%%    docnames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#   doctreec                 d   |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         |||           nAt          ||j                   }|j         
                    ||          \  |d<   }
|d         |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:?://*zimage file not readable: %simagenot_readablelocationtypesubtypeN)r   r   findallr	   r1   
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_imgpathimgpaths                r!   process_doczImageCollector.process_doc"   s:   '/OOEK00 -	: -	:D
 *,J!+D%[F  )) "(
3U##r))"(
3ry3// . -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 "%!3!3FG!D!DUQ"&u+
3 &,,.. : :$W-11':::y3:w!?!?II NN2&C#D#Dw#N,0w # X X X''9999:O-	: -	:r#   rP   r+   rI   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: %sr1   r2   r3   )keyr   )r   r   r   rC   rD   r   splitext
setdefaultappendOSErrorrF   rG   r   itemssortedlen)r    r   rP   r+   rI   globbedfilenamenew_imgpathmimetypebasenamesuffixerrrU   filess                 r!   r>   z!ImageCollector.collect_candidatesU   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$)__name__
__module____qualname____doc__r   r   strr"   r   r'   r	   documentrQ   r   r
   r>    r#   r!   r   r      s        77&V &*: &S &T & & & &7v 7,< 7!#h7/?7DH7 7 7 71:v 1: 1:4 1: 1: 1: 1:f8&6 8 8'+CH~8=A8FJ8 8 8 8 8 8r#   r   c            
       p    e Zd ZdZdedededdfdZdededee         d	eddf
d
Z	dede
j        ddfdZdS )DownloadFileCollectorz0Download files collector for sphinx.environment.r   r   r   r   Nc                 :    |j                             |           d S r   )dlfilesr   r   s       r!   r"   zDownloadFileCollector.clear_docl   s    g&&&&&r#   r$   r%   c                 F    |j                             ||j                    d S r   )ro   r'   r(   s        r!   r'   z!DownloadFileCollector.merge_othero   s"    %-88888r#   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. 	reftargetr.   refurizdownload file not readable: %sdownloadr2   r3   r^   N)r7   r   download_referencer   r=   r   r@   rA   r;   rB   rE   rF   rG   r   ro   rH   )r    r   r)   rI   
targetnamerel_filenamer^   s          r!   rQ   z!DownloadFileCollector.process_docs   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#   )re   rf   rg   rh   r   r   ri   r"   r   r'   r	   rj   rQ   rk   r#   r!   rm   rm   i   s        ::'V '*: 'S 'T ' ' ' '9v 9,< 9!#h9/?9DH9 9 9 9[v [ [4 [ [ [ [ [ [r#   rm   r   r   c                 v    |                      t                     |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr   rm   )r   s    r!   setupr~      sE    .)))/000 "#  r#   )'rh   r;   r   r   typingr   r   r   r   docutilsr	   docutils.nodesr
   docutils.utilsr   sphinxr   sphinx.applicationr   sphinx.environmentr   sphinx.environment.collectorsr   sphinx.localer   sphinx.utilr   sphinx.util.i18nr   r   sphinx.util.imagesr   	getLoggerre   rF   r   rm   ri   r~   rk   r#   r!   <module>r      s   1 1 				             ' ' ' ' ' ' ' ' ' ' ' '             ( ( ( ( ( (       % % % % % % / / / / / / > > > > > >             W W W W W W W W - - - - - -		8	$	$N8 N8 N8 N8 N8) N8 N8 N8b[ [ [ [ [0 [ [ [4v $sCx.      r#   