
    -Ph/                    4   d Z ddlmZ ddlZddlZddlZddlZddl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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+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 er*ddl2m3Z3m4Z4m5Z5 ddlm6Z6m7Z7 ddl8m9Z9 ddl:m;Z; ddl#m<Z< ddl=m>Z>  ej?        dd          Z@ e jA        eB          ZC G d d           ZD G d! d"          ZE G d# d$          ZF G d% d&e1          ZG G d' d(e/          ZH G d) d*e          ZI e
d+          xZJ ejK         eLeJ                    ZMn ejN                    ZM ejO        d,eM          ZPd=d3ZQd>d6ZR G d7 d8eI          ZSd?d<ZTdS )@z The MessageCatalogBuilder class.    )annotationsN)defaultdict)getenvwalk)Path)TYPE_CHECKING)uuid4)nodes)addnodespackage_dir)bold)Builder)
ThemeError)__)logging)status_iterator)docname_to_domain)split_index_msg)extract_messagestraverse_translatable_index)
canon_path	ensuredirrelpath)Tags)SphinxRenderer)IterableIteratorSequence)AnyLiteral)Element)Sphinx)CatalogInfo)ExtensionMetadata	templatesgettextc                  F    e Zd ZU dZdZded<   ded<   ded<   ddZddZdS )Messagez!An entry of translatable message.text	locationsuuidsstrr*   list[tuple[str, int]]r+   	list[str]r,   returnNonec                0    || _         || _        || _        d S Nr)   )selfr*   r+   r,   s       W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/builders/gettext.py__init__zMessage.__init__8   s     	"


    c                8    d| j         d| j        d| j        dS )NzMessage(text=z, locations=z, uuids=)r)   r4   s    r5   __repr__zMessage.__repr__?   s>    I -1^ GKz  	
r7   N)r*   r-   r+   r.   r,   r/   r0   r1   r0   r-   __name__
__module____qualname____doc__	__slots____annotations__r6   r;    r7   r5   r(   r(   /   sj         ++,IIII$$$$   
 
 
 
 
 
r7   r(   c                  F    e Zd ZdZdZddZdd
ZddZedd            Z	dS )Catalogz!Catalog of translatable messages.metadatar0   r1   c                    i | _         d S r3   rG   r:   s    r5   r6   zCatalog.__init__L   s    ?Ar7   msgr-   originElement | MsgOriginc                    t          |d          sd S | j                            |g           }|j        x}|nd}|                    |j        pd||j        f           d S )Nuid )hasattrrH   
setdefaultlineappendsourcerN   )r4   rJ   rK   msg_metadatarS   s        r5   addzCatalog.addP   sq    vu%% 	 F}//R88 &+8ttbV]0b$
CDDDDDr7   Iterator[Message]c              #  H  K   | j                                         D ]\  }}t          t          t	          t          j        dd          |                              }t          t	          t          j        d          |                    }t          |||          V  d S )Nr         r)   )	rH   itemssortedsetmapoperator
itemgetterlistr(   )r4   messagerV   	positionsr,   s        r5   __iter__zCatalog.__iter__Y   s      %)]%8%8%:%: 	J 	J!G\s3x':1a'@'@,#O#OPPQQIX033\BBCCEw)5IIIIIII	J 	Jr7   r/   c                *    t          | j                  S r3   )rb   rH   r:   s    r5   messageszCatalog.messages_   s    DM"""r7   Nr0   r1   )rJ   r-   rK   rL   r0   r1   )r0   rX   )r0   r/   )
r>   r?   r@   rA   rB   r6   rW   re   propertyrg   rD   r7   r5   rF   rF   G   s        ++IB B B BE E E EJ J J J # # # X# # #r7   rF   c                  F    e Zd ZU dZdZded<   ded<   ded<   dd
ZddZdS )	MsgOriginz)Origin holder for Catalog message origin.rU   rS   rN   r-   rU   intrS   rN   r0   r1   c                R    || _         || _        t                      j        | _        d S r3   )rU   rS   r	   hexrN   )r4   rU   rS   s      r5   r6   zMsgOrigin.__init__m   s!    	77;r7   c                8    d| j          d| j         d| j        dS )Nz<MsgOrigin :z; uid=>rl   r:   s    r5   r;   zMsgOrigin.__repr__r   s)    IT[II49IIDHIIIIr7   N)rU   r-   rS   rm   r0   r1   r<   r=   rD   r7   r5   rk   rk   d   sj         33'IKKKIIIHHH   
J J J J J Jr7   rk   c                  2     e Zd Z	 	 dd fdZd fdZ xZS )GettextRendererNtemplate_path'Sequence[str | os.PathLike[str]] | Noneoutdirstr | os.PathLike[str] | Noner0   r1   c                   || _         |(t                                          t          g           n*t                                          g |t                     dd}|| j        j        d<   || j        j        d<   d S )Nsr-   r0   c                    |                      dd          } |                      dd          } |                      dd          S )N\z\\"z\"
z\n"
")replace)rz   s    r5   escapez(GettextRenderer.__init__.<locals>.escape   s<    		$&&A		#u%%A99T9---r7   er   rz   r-   r0   r-   )rw   superr6   DEFAULT_TEMPLATE_PATHenvfilters)r4   ru   rw   r   	__class__s       r5   r6   zGettextRenderer.__init__w   s    
  GG345555GGD}D.CDEEE	. 	. 	. 	. !'%+"""r7   filenamer-   contextdict[str, Any]c                `     d fd}||d<   t                                          ||          S )Nrz   r-   r0   c                H    t          t          | j                            S r3   )r   r   rw   )rz   r4   s    r5   _relpathz(GettextRenderer.render.<locals>._relpath   s    ga55666r7   r   r   )r   render)r4   r   r   r   r   s   `   r5   r   zGettextRenderer.render   sF    	7 	7 	7 	7 	7 	7 &	ww~~h000r7   )NN)ru   rv   rw   rx   r0   r1   )r   r-   r   r   r0   r-   )r>   r?   r@   r6   r   __classcell__r   s   @r5   rt   rt   v   sj         BF04, , , , , , ,(1 1 1 1 1 1 1 1 1 1r7   rt   c                      e Zd ZdZddZdS )	I18nTagszDummy tags module for I18nBuilder.

    To ensure that all text inside ``only`` nodes is translated,
    this class always returns ``True`` regardless the defined tags.
    	conditionr   r0   boolc                    dS )NTrD   )r4   r   s     r5   eval_conditionzI18nTags.eval_condition   s    tr7   N)r   r   r0   r   )r>   r?   r@   rA   r   rD   r7   r5   r   r      s2              r7   r   c                  R     e Zd ZdZdZdZdZd fdZdddZddZ	ddZ
ddZ xZS )I18nBuilderzGeneral i18n builder.i18nr*   Fr0   r1   c                   t                                                       | j                            | j        | j        j                   t                      x| _        | j	        _        t          t                    | _        d S r3   )r   initr   set_versioning_methodversioning_methodconfiggettext_uuidr   tagsappr   rF   catalogsr4   r   s    r5   r   zI18nBuilder.init   s[    &&t'=t{?WXXX$,JJ.	DHM3>w3G3Gr7   Ndocnamer-   typ
str | Nonec                    dS )NrP   rD   )r4   r   r   s      r5   get_target_urizI18nBuilder.get_target_uri   s    rr7   set[str]c                    | j         j        S r3   )r   
found_docsr:   s    r5   get_outdated_docszI18nBuilder.get_outdated_docs   s    x""r7   r   set[CatalogInfo]rc   c                    d S r3   rD   )r4   r   rc   s      r5   compile_catalogszI18nBuilder.compile_catalogs   s    r7   doctreenodes.documentc                >   | j         t          || j        j                           }| j        j        |                             t          j                  D ]4}t          |          D ]"\  }}d|_
        |                    ||           #5t          |          D ]*\  }}t          |          s|                    ||           +d| j        j        v rIt          |          D ];\  }}|D ]1\  }}	}
}}t          ||	          D ]}|                    ||           2:d S d S )NrP   index)r   r   r   gettext_compactr   tocsfindallr   toctreer   rN   rW   #_is_node_in_substitution_definitiongettext_additional_targetsr   r   )r4   r   r   catalogr   noderJ   entries
entry_typevalue
_target_id_main_category_keyms                 r5   	write_doczI18nBuilder.write_doc   sX   - 1'4;;V W WXx}W-55h6FGG 	' 	'G-g66 ' '	cC&&&&' *'22 	' 	'ID#6t<< 'C&&&dk<<<!<W!E!E - -gKR - -GJz5-,Z?? - -At,,,,-- =<- -r7   rh   r3   )r   r-   r   r   r0   r-   r0   r   )r   r   rc   r-   r0   r1   )r   r-   r   r   r0   r1   )r>   r?   r@   rA   namer   use_message_catalogr   r   r   r   r   r   r   s   @r5   r   r      s        DH H H H H H    # # # #   - - - - - - - -r7   r   SOURCE_DATE_EPOCHz%Y-%m-%d %H:%M%zfilepathr   new_contentr-   r0   r   c                   |                                  sdS 	 t          j        t          |           d          5 }|                                }d d d            n# 1 swxY w Y   |                    d          }|                    d          }|                    d          }|                    d          }|d |         |d |         k    p||d          ||d          k    S # t          $ r Y nw xY wdS )NTutf-8encodingz"POT-Creation-Date:z"PO-Revision-Date:)existscodecsopenr-   readr   
ValueError)r   r   oldpotold_contentold_header_indexnew_header_indexold_body_indexnew_body_indexs           r5   should_writer      sX   ?? t[X999 	(V ++--K	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(&,,-BCC&,,-BCC$**+?@@$**+?@@)))*k:K;K:K.LL L>??+{>??/KK	
     4s5   #C' AC' A  C' #A $BC' '
C43C4r   
nodes.Nodec                h    | j         r*t          | t          j                  rdS | j         } | j         *dS )z;Check "node" to test if it is in a substitution definition.TF)parent
isinstancer
   substitution_definition)r   s    r5   r   r      s@    
+ dE9:: 	4{ +  5r7   c                  l     e Zd ZdZdZ ed          Zd fdZddZdd	Z		 	 dd fdZ
d fdZ xZS )MessageCatalogBuilderz3Builds gettext-style message catalogs (.pot files).r&   z'The message catalogs are in %(outdir)s.r0   r1   c                    t                                                       |                                  | j                            |            d S r3   )r   r   create_template_bridger%   r   s    r5   r   zMessageCatalogBuilder.init   sB    ##%%%D!!!!!r7   r   c                ,   t                      }| j        j        D ]x}| j        j        |z  }t          |          D ]W\  }}}|D ]N}|                    d          r7t          ||                                          }|	                    |           OXy|S )Nz.html)
r^   r   templates_pathr   srcdirr   endswithr   as_posixrW   )	r4   template_filesru   tmpl_abs_pathdirpath_dirsfilesfnr   s	            r5   _collect_templatesz(MessageCatalogBuilder._collect_templates   s    ![7 	5 	5M HOm;M)-m)<)< 5 5% 5 5B{{7++ 5#'#4#4#=#=#?#?&**844455
 r7   c                H   t          |                                           }|                                 t                              t          t          d                    | j        d           t                              t          d          t          |                     | j	        j
        j        }t          |t          d          dt          |          | j        j                  D ]}	 t          j        |d          5 }|                                }d d d            n# 1 swxY w Y    ||          D ]8\  }}}t%          ||	          }	| j        d
                             ||	           9# t*          $ r}
| d|
}t-          |          |
d }
~
ww xY wd S )Nzbuilding [%s]: T)nonlztargets for %d template fileszreading templates... purpler   r   )rU   rS   sphinxz: )rb   r   sortloggerinfor   r   r   lenr%   environmentextract_translationsr   r   	verbosityr   r   r   rk   r   rW   	Exceptionr   )r4   r   r   templatefr   rS   _methrJ   rK   excs              r5   _extract_from_templatez,MessageCatalogBuilder._extract_from_template  s   T,,..//

D-..//FFFB677UDDD#~9N'2-..#e**dhFX
 
 	/ 	/H/[G<<< 'ffhhG' ' ' ' ' ' ' ' ' ' ' ' ' ' '(<(<W(E(E = =$D%&hTBBBFM(+//V<<<<=  / / /!,,S,, oo3./	/ 	/s=   2E9D)E9)D-	-E90D-	1AE99
FFFNupdatedocnamesIterable[str] | Nonesummaryr   method$Literal['all', 'specific', 'update']c                v    |                                   t                                          |||           d S r3   )r   r   build)r4   r  r  r  r   s       r5   r  zMessageCatalogBuilder.build  s7     	##%%%h00000r7   c           
         t                                                        j        j         j        j         j        j         j        j         j        j        t           j        j	         j        j
        d}t           j                                        t          d          dt           j                   j        j        t%          j        d                    D ]\  }}t)           j        t,          j                            |          z             t3          |          |d<    fd j        j        D             }t7          | j                  }|                    d|          } j        | d	z  }t;          ||          rQt=          j        tA          |          d
d          5 }|!                    |           d d d            n# 1 swxY w Y   d S )N)version	copyrightprojectlast_translatorlanguage_teamctimedisplay_locationdisplay_uuidzwriting message catalogs... 	darkgreenr   rg   c                .    g | ]}j         j        |z  S rD   )r   r   ).0rel_pathr4   s     r5   
<listcomp>z0MessageCatalogBuilder.finish.<locals>.<listcomp>=  s/       /7(*  r7   )rw   zmessage.pot.jinjaz.potwr   r   )"r   finishr   r	  r
  r  gettext_last_translatorgettext_language_teamr  gettext_locationr   r   r   r\   r   r   r   r   r`   ra   r   rw   ospathdirnamerb   r   rt   r   r   r   r   r-   write)
r4   r   
textdomainr   ru   renderercontentpofnpofiler   s
   `        r5   r  zMessageCatalogBuilder.finish$  s   {*.{*#{B![> $ < K4	
 	
 $3M!!-..H""$
 $
 	* 	*J dkBGOOJ$?$??@@@"&w--GJ   ;?;;U  M '}T[IIIHoo&97CCG;J!4!4!44DD'** *[TC'BBB *fLL)))* * * * * * * * * * * * * * *)	* 	*s   /GG	G	rh   r   )Nr   )r  r  r  r   r  r  r0   r1   )r>   r?   r@   rA   r   r   epilogr   r   r   r  r  r   r   s   @r5   r   r      s        ==DR9::F" " " " " "
	 	 	 	/ / / /0 #7?	1 1 1 1 1 1 1"* "* "* "* "* "* "* "* "* "*r7   r   r   r"   r$   c                   |                      t                     |                     dddt          t          t
          h                     |                     dddt          t          h                     |                     dddt          t          h                     |                     ddd	t          t          h                     |                     d
g d	t          t          t          t          t          h                     |                     dddt          t
          h                     |                     dddt          t
          h                     ddddS )Nr   Tr&   )typesr  r   Fgettext_auto_buildr   r   r  zFULL NAME <EMAIL@ADDRESS>r  zLANGUAGE <LL@li.org>builtin)r	  parallel_read_safeparallel_write_safe)	add_builderr   add_config_value	frozensetr   r-   rb   r^   tuple)r   s    r5   setupr/  I  s~   OO)***4)T3K2H2H     +T9ItfDUDUVVV	D6ARARSSS-tU)TFBSBSTTT$
D#u566	     !#	     	     "#  r7   )r   r   r   r-   r0   r   )r   r   r0   r   )r   r"   r0   r$   )UrA   
__future__r   r   r`   r  os.pathtimecollectionsr   r   r   pathlibr   typingr   uuidr	   docutilsr
   r   r   r   sphinx._cli.util.colourr   sphinx.buildersr   sphinx.errorsr   sphinx.localer   sphinx.utilr   sphinx.util.displayr   sphinx.util.i18nr   sphinx.util.index_entriesr   sphinx.util.nodesr   r   sphinx.util.osutilr   r   r   sphinx.util.tagsr   sphinx.util.templater   collections.abcr   r   r   r   r    docutils.nodesr!   sphinx.applicationr"   r#   sphinx.util.typingr$   joinpathr   	getLoggerr>   r   r(   rF   rk   rt   r   r   source_date_epochgmtimefloat	timestamp	localtimestrftimer  r   r   r   r/  rD   r7   r5   <module>rP     s?   & & " " " " " "   				   # # # # # #                                       ( ( ( ( ( ( ( ( ( ( ( ( ( ( # # # # # # $ $ $ $ $ $             / / / / / / . . . . . . 5 5 5 5 5 5 K K K K K K K K = = = = = = = = = = ! ! ! ! ! ! / / / / / / 5<<<<<<<<<<########&&&&&&)))))),,,,,,444444,,[)DD 		8	$	$
 
 
 
 
 
 
 
0# # # # # # # #:J J J J J J J J$1 1 1 1 1n 1 1 1:    t   (- (- (- (- (-' (- (- (-Z   3444AEE"34455II   I()44   (   V* V* V* V* V*K V* V* V*r           r7   