
    -Ph                    N   d Z ddlmZ ddlZddl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 ddlmZ e	r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$  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)nodes)addnodes)EnvironmentCollector)__)logging)get_image_filename_for_languagesearch_image_for_language)guess_mimetype)_relative_path)Set)Node)Sphinx)BuildEnvironment)ExtensionMetadatac                  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       c/var/www/html/test/jupyter/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                             |           t          j        |j        |z  t          j                  s-t&                              t+          d	          ||d
d           p|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   r6   
startswithfindendswithosextsep
relfn2pathr   collect_candidatessrcdirr   valuesnote_dependencyaccessR_OKloggerwarningr
   r   add_file)r"   r   r,   r   noder/   imgurirel_imgpathfull_imgpathi18n_imguri_full_i18n_imgpathr5   imgpaths                 r#   process_doczImageCollector.process_doc0   sM   '/OOEK00 5	: 5	:D
 *,J!+D%[F  )) "(
3{{5!!R''"(
3ry3// 8 -0G,>,>vw,O,O)\)U >fcgNN'*w'9'9+w'O'O$$''
4EzSWXXX''
L*dSSSS 3637CC  $E{!$!3!3FG!D!DUQ"&u+
3;,..+7D( &,,.. : :''000yg!5rw?? NN899!%$ . #    ''9999:U5	: 5	:r%   rD   r   rS   r/   dict[str, str]rL   r   c           
     V   i }t          |          D ]}t          t          |          |          }	 t          |          }|/t          j                            |          \  }	}
d|
dd          z   }||vr;|                    |g                               |	                                           # t          $ r7}t                              t          d          |||dd           Y d }~d }~ww xY w|                                D ]\  }}t          |t                     ||<   d S )Nzimage/x-   zimage file %s not readable: %sr6   r7   r8   )key)r   r   r   r   r@   pathsplitext
setdefaultappendas_posixOSErrorrI   rJ   r
   itemsminlen)r"   rD   rS   r/   rL   globbedfilenamenew_imgpathmimetypebasenamesuffixerrrX   filess                 r#   rC   z!ImageCollector.collect_candidatesk   s`    )+W 	 	H(h@@K)(33#')w'7'7'A'A$Hf)F122J6H:--&&x44;;K<P<P<R<RSSS   788! *          "--// 	2 	2JC!%S111JsOO	2 	2s   A?B22
C3<-C..C3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   )
rD   r   rS   r   r/   rU   rL   r   r   r   )__name__
__module____qualname____doc__r$   r*   rT   rC    r%   r#   r   r   !   sk        77& & & &7 7 7 79: 9: 9: 9:v2 2 2 2 2 2r%   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_doc   s    g&&&&&r%   r&   r'   r(   c                F    |j                             ||j                    d S r   )ru   r*   r+   s        r#   r*   z!DownloadFileCollector.merge_other   s$     	%-88888r%   r,   r-   c                   |                     t          j                  D ]}|d         }d|v r||d<   |j                            ||j        j                  \  }}|j                            |           t          j        |t          j	                  s-t                              t          d          ||dd           |j        j                            |j        j        |                                          |d<   d	S )
z Process downloadable file paths.	reftargetr2   refurizdownload file not readable: %sdownloadr7   r8   rc   N)r<   r   download_referencer   rB   r   rF   r@   rG   rH   rI   rJ   r
   ru   rK   r]   )r"   r   r,   rL   
targetnamerel_filenamerc   s          r#   rT   z!DownloadFileCollector.process_doc   s   OOH$?@@ 	 	Dk*J
""!+X),););J)X)X&h''555y2733 NN;<< !%' . #    #&7?#;#;GO\$ $(** Z  !	 	r%   Nrj   rk   rl   )rm   rn   ro   rp   r$   r*   rT   rq   r%   r#   rs   rs      sV        ::' ' ' '9 9 9 9     r%   rs   r   r   r   r   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@   os.pathr   pathlibr   typingr   docutilsr   sphinxr   sphinx.environment.collectorsr	   sphinx.localer
   sphinx.utilr   sphinx.util.i18nr   r   sphinx.util.imagesr   sphinx.util.osutilr   collections.abcr   docutils.nodesr   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   	getLoggerrm   rI   r   rs   r   rq   r%   r#   <module>r      s   1 1 " " " " " " 				                                      > > > > > >             W W W W W W W W - - - - - - - - - - - - 5############))))))333333444444		8	$	$e2 e2 e2 e2 e2) e2 e2 e2P# # # # #0 # # #L     r%   