
    }cW,                     @   d 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
mZmZ ddlmZ ddlmZmZmZmZmZ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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-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>  e,j?        e@          ZA G d d          ZB G d d          ZC G d d          ZD G d de>          ZE G d  d!e<          ZF G d" d#e$          ZG e            ZH ejI        eH           ejJ        eH          z
  ZK e
d$          ZLeL eMeL          ZH ed          ZK G d& d'e          ZN eN            ZOd(ePd)ePd*eQfd+ZR G d, d-eG          ZSd.e"d*eePef         fd/ZTd%S )0z The MessageCatalogBuilder class.    )open)OrderedDictdefaultdict)datetime	timedeltatzinfo)getenvpathwalk)time)	AnyDefaultDictDict	GeneratorIterableListSetTupleUnion)uuid4)nodes)Element)addnodespackage_dir)Sphinx)Builder)pairindextypes)
ThemeError)__)loggingsplit_index_msgstatus_iterator)bold)CatalogInfodocname_to_domain)extract_messagestraverse_translatable_index)
canon_path	ensuredirrelpath)Tags)SphinxRendererc                   N    e Zd ZdZdedeeeef                  dee         fdZdS )Messagez!An entry of translatable message.text	locationsuuidsc                 0    || _         || _        || _        d S N)r/   r0   r1   )selfr/   r0   r1   s       7lib/python3.11/site-packages/sphinx/builders/gettext.py__init__zMessage.__init__!   s    	"


    N)	__name__
__module____qualname____doc__strr   r   intr6    r7   r5   r.   r.      sU        ++S T%S/-B 4PS9      r7   r.   c                   \    e Zd ZdZd
dZdedeedf         ddfdZde	e
ddf         fd	ZdS )Catalogz!Catalog of translatable messages.returnNc                 :    g | _         t                      | _        d S r3   )messagesr   metadatar4   s    r5   r6   zCatalog.__init__*   s    #% @K}}r7   msgorigin	MsgOriginc                     t          |d          sd S || j        vr$| j                            |           g | j        |<   |j        }|d}| j        |                             |j        ||j        f           d S )Nuid)hasattrrD   rC   appendlinesourcerJ   )r4   rF   rG   rN   s       r5   addzCatalog.add0   s    vu%% 	 Fdm# 	$M  %%%!#DM#{ 	Dc!!6=$
"CDDDDDr7   c              #      K   | j         D ]]}t          t          d | j        |         D                                 }d | j        |         D             }t	          |||          V  ^d S )Nc              3   &   K   | ]\  }}}||fV  d S r3   r>   .0rO   rN   uuids       r5   	<genexpr>z#Catalog.__iter__.<locals>.<genexpr>?   s=       #> #>6HfdDFD> #> #> #> #> #> #>r7   c                     g | ]\  }}}|	S r>   r>   rS   s       r5   
<listcomp>z$Catalog.__iter__.<locals>.<listcomp>A   s    KKK0fdDTKKKr7   )rC   sortedsetrD   r.   )r4   message	positionsr1   s       r5   __iter__zCatalog.__iter__=   s      } 	5 	5Gs #> #>&*mG&<#> #> #>  >  > ? ?IKKDM'4JKKKE'9e444444		5 	5r7   rA   N)r8   r9   r:   r;   r6   r<   r   r   rP   r   r.   r]   r>   r7   r5   r@   r@   '   s        ++M M M MEs EE';*>$? ED E E E E5)GT4$78 5 5 5 5 5 5r7   r@   c                   &    e Zd ZdZdededdfdZdS )rH   z3
    Origin holder for Catalog message origin.
    rO   rN   rA   Nc                 R    || _         || _        t                      j        | _        d S r3   )rO   rN   r   hexrJ   )r4   rO   rN   s      r5   r6   zMsgOrigin.__init__J   s!    	77;r7   )r8   r9   r:   r;   r<   r=   r6   r>   r7   r5   rH   rH   E   sG         s # $      r7   rH   c                   F     e Zd Zd	dededdf fdZdededef fdZ xZS )
GettextRendererNtemplate_pathoutdirrA   c                     || _         |t          j        t          dd          }t	                                          |           dt          dt          fd}|| j        j        d<   || j        j        d<   d S )N	templatesgettextsrA   c                     |                      dd          } |                      dd          } |                      dd          S )N\z\\"z\"
z\n"
")replace)ri   s    r5   escapez(GettextRenderer.__init__.<locals>.escapeW   s<    		$&&A		#u%%A99T9---r7   ero   )	re   r
   joinr   superr6   r<   envfilters)r4   rd   re   ro   	__class__s       r5   r6   zGettextRenderer.__init__Q   s     	K Ik;	JJM'''	.c 	.c 	. 	. 	. 	. !'%+"""r7   filenamecontextc                 |     dt           dt           f fd}||d<   t                                          ||          S )Nri   rA   c                 H    t          t          | j                            S r3   )r(   r*   re   )ri   r4   s    r5   _relpathz(GettextRenderer.render.<locals>._relpatha   s    ga55666r7   r*   )r<   rr   render)r4   rv   rw   rz   ru   s   `   r5   r{   zGettextRenderer.render`   sT    	7 	7 	7 	7 	7 	7 	7 	7 &	ww~~h000r7   )NN)r8   r9   r:   r<   r6   r   r{   __classcell__ru   s   @r5   rc   rc   P   s        , ,c ,# , , , , , , ,1s 1T 1c 1 1 1 1 1 1 1 1 1 1r7   rc   c                   "    e Zd ZdZdedefdZdS )I18nTagszDummy tags module for I18nBuilder.

    To translate all text inside of only nodes, this class
    always returns True value even if no tags are defined.
    	conditionrA   c                     dS )NTr>   )r4   r   s     r5   eval_conditionzI18nTags.eval_conditionn   s    tr7   N)r8   r9   r:   r;   r   boolr   r>   r7   r5   r   r   h   s@         
       r7   r   c                        e Zd ZU dZdZdZdZeed<   dZ	d fdZ
dd	ed
edefdZdee         fdZdee         ddfdZdee         deddfdZd	edej        ddfdZ xZS )I18nBuilderz
    General i18n builder.
    i18nr/   Nversioning_compareFrA   c                     t                                                       | j                            | j        | j        j        j                   t                      | _        t          t                    | _        d S r3   )rr   initrs   set_versioning_methodversioning_methodconfiggettext_uuidr   tagsr   r@   catalogsr4   ru   s    r5   r   zI18nBuilder.init{   s^    &&t'='+x'C	E 	E 	EJJ	3>w3G3Gr7   docnametypc                     dS )N r>   )r4   r   r   s      r5   get_target_urizI18nBuilder.get_target_uri   s    rr7   c                     | j         j        S r3   )rs   
found_docsrE   s    r5   get_outdated_docszI18nBuilder.get_outdated_docs   s    x""r7   docnamesc                     d S r3   r>   )r4   r   s     r5   prepare_writingzI18nBuilder.prepare_writing       r7   r   r[   c                     d S r3   r>   )r4   r   r[   s      r5   compile_catalogszI18nBuilder.compile_catalogs   r   r7   doctreec                 b   | j         t          || j        j                           }| j        j        |                             t          j                  D ]4}t          |          D ]"\  }}d|_
        |                    ||           #5t          |          D ]\  }}|                    ||           d| j        j        j        v ret          |          D ]W\  }}|D ]M\  }}}	}
}t          ||          D ]4}|dk    r|t          j                    v r|                    ||           5NVd S d S )Nr   indexpair)r   r%   r   gettext_compactrs   tocsfindallr   toctreer&   rJ   rP   gettext_additional_targetsr'   r!   r   values)r4   r   r   catalogr   noderF   entriesr   _tid_main_keyms                r5   	write_doczI18nBuilder.write_doc   sv   - 1'4;;V W WXx}W-55h6FGG 	' 	'G-g66 ' '	cC&&&&' *'22 	# 	#ID#KKT""""dho@@ 		-!<W!E!E - -g3: - -/CdE4,S#66 - -&= %Q.2G2I2I-I % %At,,,,--		- 		-- -r7   r^   r3   )r8   r9   r:   r;   namer   r   r   __annotations__use_message_catalogr   r<   r   r   r   r   r$   r   r   documentr   r|   r}   s   @r5   r   r   r   s?          D####H H H H H H c  s    #3s8 # # # #C T    [)9 C D    - -u~ -$ - - - - - - - -r7   r   SOURCE_DATE_EPOCHNc                   L     e Zd Zdededdf fdZdedefdZdedefdZ xZ	S )	LocalTimeZoneargskwargsrA   Nc                 R     t                      j        |i | t          | _        d S r3   )rr   r6   tzdelta)r4   r   r   ru   s      r5   r6   zLocalTimeZone.__init__   s*    $)&)))r7   dtc                     | j         S r3   )r   r4   r   s     r5   	utcoffsetzLocalTimeZone.utcoffset   s
    |r7   c                      t          d          S Nr   )r   r   s     r5   dstzLocalTimeZone.dst   s    ||r7   )
r8   r9   r:   r   r6   r   r   r   r   r|   r}   s   @r5   r   r      s        c S T      H     h 9        r7   r   filepathnew_contentrA   c                    t          j        |           sdS 	 t          | d          5 }|                                }|                    d          }|                    d          }|                    d          }|                    d          }|d |         |d |         k    p||d          ||d          k    cd d d            S # 1 swxY w Y   n# t
          $ r Y nw xY wdS )NTutf-8encodingz"POT-Creation-Date:z"PO-Revision-Date:)r
   existsr   readr   
ValueError)r   r   oldpotold_contentold_header_indexnew_header_indexold_body_indexnew_body_indexs           r5   should_writer      sg   ;x   t
(W--- 	T ++--K*001FGG*001FGG(../CDDN(../CDDN !2"2!23{CTDTCT7UU S 1[5QQ	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T     4s5   C BC
=C 
CC CC 
C#"C#c            	            e Zd ZdZdZ ed          Zd fdZdee	         fdZ
ddZdd
ee	         de	de	ddf fdZd fdZ xZS )MessageCatalogBuilderz=
    Builds gettext-style message catalogs (.pot files).
    rh   z'The message catalogs are in %(outdir)s.rA   Nc                     t                                                       |                                  | j                            |            d S r3   )rr   r   create_template_bridgerg   r   s    r5   r   zMessageCatalogBuilder.init   sB    ##%%%D!!!!!r7   c           	      L   t                      }| j        j        D ]}t          j        | j        j        |          }t          |          D ]W\  }}}|D ]N}|                    d          r7t          t          j        ||                    }|
                    |           OX|S )Nz.html)rZ   r   templates_pathr
   rq   appsrcdirr   endswithr(   rP   )	r4   template_filesrd   tmpl_abs_pathdirpath_dirsfilesfnrv   s	            r5   _collect_templatesz(MessageCatalogBuilder._collect_templates   s    ![7 	5 	5M Idho}EEM)-m)<)< 5 5% 5 5B{{7++ 5#-di.D.D#E#E&**844455
 r7   c                 <   t          |                                           }|                                 t                              t          t          d          | j        z            d           t                              t          d          t          |                     | j	        j
        j        }t          |t          d          dt          |          | j        j                  D ]}	 t          |d          5 }|                                }d d d            n# 1 swxY w Y    ||          D ]7\  }}}t#          ||          }	| j        d	                             ||	           8# t(          $ r}
t+          |d
|
          |
d }
~
ww xY wd S )Nzbuilding [%s]: T)nonlztargets for %d template fileszreading templates... purpler   r   sphinxz: )listr   sortloggerinfor#   r   r   lenrg   environmentextract_translationsr"   r   	verbosityr   r   rH   r   rP   	Exceptionr   )r4   r   r   templatefrw   rN   _methrF   rG   excs              r5   _extract_from_templatez,MessageCatalogBuilder._extract_from_template   s   T,,..//

D-..:;;$GGGB677UDDD#~9N'r2I/J/JH(+E

DH4FH H 		F 		FHF(W555 'ffhhG' ' ' ' ' ' ' ' ' ' ' ' ' ' '(<(<W(E(E = =$D%&x66FM(+//V<<<<=  F F F XXXss!;<<#EF		F 		Fs=   4E5D&E5&D*	*E5-D*	.AE55
F?FFupdater   summarymethodc                 v    |                                   t                                          |||           d S r3   )r   rr   build)r4   r   r   r   ru   s       r5   r   zMessageCatalogBuilder.build   s5    ##%%%h00000r7   c           	         t                                                       | j        j        | j        j        | j        j        | j        j        | j        j        t          j	        t          t                                        d          | j        j        | j        j        d}t          | j                                        t%          d          dt'          | j                  | j        j        d           D ]\  }}t-          t/          j        | j        t/          j        |                               t7          |          |d<   t9          | j                                      d|          }t/          j        | j        |d	z             }t=          ||          r?t?          |d
d          5 }|                     |           d d d            n# 1 swxY w Y   d S )Nz%Y-%m-%d %H:%M%z)version	copyrightprojectlast_translatorlanguage_teamctimedisplay_locationdisplay_uuidzwriting message catalogs... 	darkgreenc                     | d         S r   r>   )textdomain__s    r5   <lambda>z.MessageCatalogBuilder.finish.<locals>.<lambda>  s    UV r7   rC   )re   zmessage.pot_tz.potwr   r   )!rr   finishr   r   r   r   gettext_last_translatorgettext_language_teamr   fromtimestamp	timestampltzstrftimegettext_locationr   r"   r   itemsr   r   r   r   r)   r
   rq   re   dirnamer   rc   r{   r   r   write)r4   rw   
textdomainr   contentpofnpofileru   s          r5   r  zMessageCatalogBuilder.finish   s   {*.{*#{B![>+Is;;DDEWXX $ < K4	
 	
 $34=3F3F3H3H356T3U3U3>DM@R@R3783E3W3W	$Y $Y 	* 	*J diT\*-E-EFFGGG"&w--GJ%T[999@@RYZZG9T[*v*=>>DD'** *$g666 *&LL)))* * * * * * * * * * * * * * *	* 	*s   0GG	G	r^   )Nr   )r8   r9   r:   r;   r   r   epilogr   r   r<   r   r   r   r   r  r|   r}   s   @r5   r   r      s          DR9::F" " " " " "
	CH 	 	 	 	F F F F&1 1hsm 1c 1# 1]a 1 1 1 1 1 1* * * * * * * * * *r7   r   r   c                    |                      t                     |                     dddt          t          h           |                     ddd           |                     ddd           |                     ddd           |                     d	g d           |                     d
dd           |                     ddd           ddddS )Nr   Trh   r  r   Fgettext_auto_buildrs   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_valuer   r<   )r   s    r5   setupr    s    OO)****D)dC[III+T9===	:::-tU;;;5r5AAA24OQZ[[[02H)TTT "#  r7   )Ur;   codecsr   collectionsr   r   r   r   r   osr	   r
   r   r   typingr   r   r   r   r   r   r   r   r   rU   r   docutilsr   docutils.nodesr   r   r   r   sphinx.applicationr   sphinx.buildersr   sphinx.domains.pythonr   sphinx.errorsr   sphinx.localer   sphinx.utilr    r!   r"   sphinx.util.consoler#   sphinx.util.i18nr$   r%   sphinx.util.nodesr&   r'   sphinx.util.osutilr(   r)   r*   sphinx.util.tagsr+   sphinx.util.templater,   	getLoggerr8   r   r.   r@   rH   rc   r   r   r  r  utcfromtimestampr   source_date_epochfloatr   r  r<   r   r   r   r  r>   r7   r5   <module>r6     sK   & &       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! ! ! ! ! ! !       W W W W W W W W W W W W W W W W W W W W W W             " " " " " " ( ( ( ( ( ( ( ( % % % % % % # # # # # # 0 0 0 0 0 0 $ $ $ $ $ $       A A A A A A A A A A $ $ $ $ $ $ ; ; ; ; ; ; ; ; K K K K K K K K = = = = = = = = = = ! ! ! ! ! ! / / / / / /		8	$	$       5 5 5 5 5 5 5 5<       1 1 1 1 1n 1 1 10    t   0- 0- 0- 0- 0-' 0- 0- 0-h DFF	
 (
 
+
+Hi(() F.//  '((IillG	 	 	 	 	F 	 	 	 moo3 S T    $H* H* H* H* H*K H* H* H*Vv $sCx.      r7   