
    ~Ti)n                    :   d 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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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)m*Z*m+Z+ er,ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl m7Z7 ddl8m9Z9  ejt                  e;      Z<dZ=	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+dZ>d,dZ? G d de      Z@ G d  d!      ZA G d" d#e      ZB G d$ d%e      ZC G d& d'e      ZD G d( d)e      ZEd-d*ZFy).z:Docutils transforms used by Sphinx when reading documents.    )annotations)
attrgetter)DOTALLmatch)indent)TYPE_CHECKINGAnyN)nodes)addnodes)make_glossary_termsplit_term_classifiers)ConfigError)__)init)SphinxTransform)get_filetypelogging)LoggingReporter)docname_to_domain)split_index_msg)IMAGE_TYPE_NODESLITERAL_TYPE_NODESNodeMatcherextract_messagestraverse_translatable_index)CallableSequence)Sphinx)Config)BuildEnvironment)SphinxComponentRegistry)_DocutilsSettings)ExtensionMetadata)refexplicitc                  t        |j                  |      }t        j                  j	                  | d| d|      }t        j                  |j                        |_        |j                  }	d|_        	 |j                  |||      }
|
j                  | |       dx|_        |_        |	|_        	 |d   S # |	|_        w xY w# t        $ r |cY S w xY w)a(  Publish msgstr (single line) into docutils document

    :param str source: source text
    :param str source_path: source path for warning indication
    :param source_line: source line for warning indication
    :param sphinx.util.docutils._DocutilsSettings settings: docutils settings
    :param sphinx.config.Config config: sphinx config
    :param sphinx.environment.BuildEnvironment env: sphinx environment
    :param sphinx.registry.SphinxComponentRegistry registry: sphinx registry
    :return: document
    :rtype: docutils.nodes.document
    :z:<translated>N)configenvr   )r   source_suffixdocutilsutilsnew_documentr   from_reporterreporter
rst_prologcreate_source_parserparsecurrent_sourcecurrent_line
IndexError)sourcesource_pathsource_liner'   r(   registrysettingsfiletypedocr/   parsers              I/home/agent/.local/lib/python3.12/site-packages/sphinx/transforms/i18n.py_publish_msgstrr>   3   s    , F00+>H
..
%
%-q]3XC #00>CL ""JF'..xC.PVS!044S-&1v '  
s   54B6 1C 6	B?CCc                V    t        d| t              }|r|j                  d      dfS | dfS )Nz(.*)(?<!\\)#\s*noqa\s*$   TF)r   r   group)r5   ms     r=   
parse_noqarC   _   s1    (&&9Awwqz4u}    c                      e Zd ZdZdZddZy)PreserveTranslatableMessagesz:Preserve original translatable messages before translation
   c                    t        t        j                        }|j                  | j                        D ]  }|j                           y N)r   r   translatablefindalldocumentpreserve_original_messages)selfkwargsmatchernodes       r=   applyz"PreserveTranslatableMessages.applyl   s:    h334OODMM2 	.D++-	.rD   NrO   r	   returnNone__name__
__module____qualname____doc__default_priorityrR    rD   r=   rF   rF   g   s    D.rD   rF   c                      e Zd ZdZ	 	 	 	 	 	 	 	 	 	 ddZ ed      d	 	 	 	 	 	 	 	 	 ddZddZddZddZ	dd	Z
dd
ZddZddZy)_NodeUpdaterzAContains logic for updating one node with the translated content.c                <    || _         || _        || _        || _        y rI   )rQ   patchrL   noqa)rN   rQ   r`   rL   ra   s        r=   __init__z_NodeUpdater.__init__u   s      $(	$)
(0	rD   	rawsourcekey_funcc                  t        t        ||            }t        t        ||            }|j                  t               |j                  t               | j                  sl||k7  rf|D cg c]  }|j
                   }}|D cg c]  }|j
                   }	}t        j                  |j                  ||	      | j                  dd       yyyc c}w c c}w )a  Warn about mismatches between references in original and translated content.
        Ignores the order of references when comparing. This allows translators to
        reorder references while still catching missing or extra references.

        :param key_func: A function to extract the comparison key from each reference.
            Defaults to extracting the ``rawsource`` attribute.
        )keyi18ninconsistent_references)locationtypesubtypeN)
listmapsorthashra   rc   loggerwarningformatrQ   )
rN   old_refsnew_refswarning_msgre   old_ref_keysnew_ref_keysrefold_ref_rawsourcesnew_ref_rawsourcess
             r=   compare_referencesz_NodeUpdater.compare_references   s     C(34C(34 	d#d#yy\\9;C!DC#--!D!D;C!DC#--!D!DNN""#57IJ1	   :y!D!Ds   ,CCc                "   d}t        | j                  t        j                        rt        | j                  j                  t        j
                        r| j                  j                  }t        j                  | j                  j                               }t        j                  | j                  j                               }||k7  rB|j                  dg       }|j                  |       | j                  j                  j                  |d       }| j                  j                  j                  |d       }|r|sr| j                  j                  j                  |d        | j                  j                  j                  |d        | j                  j                   j                  |d        | j                  j#                  |       t%        t        j&                  |      }|j)                  | j                        D ]  }	||	d<   	 d}|S )NFnamesrefnamer   T)
isinstancerQ   r
   titleparentsectionfully_normalize_namer`   astext
setdefaultappendrL   nameidsget	nametypespopidsnote_implicit_targetr   targetrK   )
rN   	processedsection_nodenew_nameold_namer~   _idexplicitrP   
old_targets
             r=   update_title_mappingz!_NodeUpdater.update_title_mapping   s   	 tyy%++.499++U]];99++L11$**2C2C2EFH11$))2B2B2DEH8# $0#:#:7B#GX& mm++//$?==2266xF" # --11(DA//33HdC))--c48 MM66|D &ellHE")//$--"@ 5J,4Jy)5 !	rD   c                    d        }t        t        j                  t              }t	        |j                  | j                              }t	        |j                  | j                              }| j                  ||t        d             i }|D ]2  }|j                  |j                  d      g       j                  |       4 |D ](  }|j                  d      }|j                  |g       }	|	s|j                  j                  |       E|	j                  d      }
|
d   |d<   |d   D ]  }|| j                   j"                  |<    |d   dk(  r || j                   j$                  |
|       n || j                   j&                  |
|       |s| j                   j(                  j                  |g       } |||
|       | j                   j*                  j                  |g       } |||
|       + y )	Nc                     d d x}fddcS )Nc                 "    t         j                  S rI   )r
   Noder\   rD   r=   r   z6_NodeUpdater.update_autofootnote_references.<locals>.N   s
    ejj=rD   c                X    || v r|| | j                  |      <   y | j                  |       y rI   )indexr   )lstoldnews      r=   list_replace_or_appendzK_NodeUpdater.update_autofootnote_references.<locals>.list_replace_or_append   s&    cz&)CIIcN#

3rD   )r   zlist[N]r   r   r   r   rT   rU   r\   )	.defaultsr   s     r=   z.<generic parameters of list_replace_or_append>zc_NodeUpdater.update_autofootnote_references.<locals>.<generic parameters of list_replace_or_append>   s	    = 	 rD   )autoVinconsistent footnote references in translated message. original: {0}, translated: {1}r   r   r   r   r@   )r   r
   footnote_referencer	   rm   rK   rQ   r`   r|   r   r   r   r   r   remover   rL   r   autofootnote_refssymbol_footnote_refsfootnote_refsrefnames)rN   r   is_autofootnote_refold_foot_refsnew_foot_refsold_foot_namerefsrnewfr   refsoldfidr   r   s                 r=   update_autofootnote_referencesz+_NodeUpdater.update_autofootnote_references   s   	  *%*B*BM088CD088DE2	
 HJ 	IA((y)92>EEaH	I! 	=Dhhy)G$(("5D""4(88A;Du+DK5k -(,!!"%- F|q &t}}'F'FdS 't}}'I'I4QUV $ ; ; F FwPR S&}dDA==11<<WbI&xt<1	=rD   c                ,   t        t        j                  t              }t	        |j                  | j                              }t	        |j                  | j                              }| j                  ||t        d             |D cg c]  }|d   	 }}|D cg c]  }|d   	 }}g h |h |z
  }|D ]S  }| j                  j                  |d         s|r|j                  d      |d<   n	 | j                  j                  |       U y c c}w c c}w )Nr   zMinconsistent references in translated message. original: {0}, translated: {1}r   r   )r   r
   	referencer	   rm   rK   rQ   r`   r|   r   rL   has_namer   note_refname)	rN   is_refnamed_refrt   ru   r   old_ref_namesnew_ref_namesorphansnewrs	            r=   update_refnamed_referencesz'_NodeUpdater.update_refnamed_references  s   
 &eoosC//		:;//

;<2	
 088!988/78!988:%}%(8-(88: 	-D==))$y/: &-kk!nDO MM&&t,	- 98s   DDc                   t        t        j                  t              }t	        |j                  | j                              }t	        |j                  | j                              }i }| j                  ||t        d             |D ])  }|j                  |d   g       j                  |d          + |D ]0  }|d   }|j                  |      s||   j                  d      |d<   2 y )Nr   r   r   r   r   )r   r
   r   r	   rm   rK   rQ   r`   r|   r   r   r   r   r   )rN   is_refnamed_footnote_refr   r   refname_ids_mapr   r   r   s           r=   #update_refnamed_footnote_referencesz0_NodeUpdater.update_refnamed_footnote_references5  s    #.u/G/GQT#U 5==diiHI5==djjIJ022	
 " 	PD&&tI;BB4;O	P! 	>D9oG""7+-g6::1=U	>rD   c                   t        t        j                  t              }t	        |j                  | j                              }t	        |j                  | j                              }| j                  ||t        d             i }|D ])  }|j                  |d   g       j                  |d          + |D ]/  }|d   }|j                  |      s||   j                         |d<   1 y )Nr   zVinconsistent citation references in translated message. original: {0}, translated: {1}r   r   )r   r
   citation_referencer	   rm   rK   rQ   r`   r|   r   r   r   r   r   )rN   is_citation_refold_cite_refsnew_cite_refsr   oldcnewcr   s           r=   update_citation_referencesz'_NodeUpdater.update_citation_referencesJ  s    %e&>&>L_44TYY?@_44TZZ@A2	
 13! 	PD&&tI;BB4;O	P! 	=D9oG""7+-g6::<U	=rD   c                   g | j                   j                  t        j                        }g | j                  j                  t        j                        }| j                  ||t        d      d        i }dd}|D ]  } ||      }|s|j                  ||<    |D ]@  } ||      }|j                  |i       j                         D ]  \  }}	|t        vs|	||<    B y )NzRinconsistent term references in translated message. original: {0}, translated: {1}c                $    | j                  d      S )N	reftarget)r   )ry   s    r=   <lambda>z3_NodeUpdater.update_pending_xrefs.<locals>.<lambda>m  s    !5 rD   rd   c                >    | d   | d   f}|dk(  ry | d   | d   | d   fS )N	refdomainreftype)stdtermr   r\   )rQ   cases     r=   get_ref_keyz6_NodeUpdater.update_pending_xrefs.<locals>.get_ref_keyr  sC    $d9o5D& %O% rD   )rQ   zaddnodes.pending_xrefrT   ztuple[str, str, str] | None)rQ   rK   r   pending_xrefr`   r|   r   
attributesr   items EXCLUDED_PENDING_XREF_ATTRIBUTES)
rN   	old_xrefs	new_xrefsxref_reftarget_mapr   r   rg   r   kvs
             r=   update_pending_xrefsz!_NodeUpdater.update_pending_xrefs_  s    @dii''(=(=>?	@djj(()>)>?@	2
 6 	  		
 QS		  	9Cc"C*-.."3'	9  	Cc"C +..sB7==? 1<<CF		rD   c                    | j                   j                  D ]  }| j                  |_         | j                   j                  | j                  _        y rI   )r`   childrenrQ   r   )rN   childs     r=   update_leavesz_NodeUpdater.update_leaves  s<    ZZ(( 	%E99EL	%!ZZ00		rD   N)
rQ   nodes.Elementr`   r   rL   znodes.documentra   boolrT   rU   )
rt   Sequence[nodes.Element]ru   r   rv   strre   zCallable[[nodes.Element], Any]rT   rU   )rT   r   )rT   rU   )rW   rX   rY   rZ   rb   r   r|   r   r   r   r   r   r   r   r\   rD   r=   r^   r^   r   s    K

 
 !	

 
 

$ 4>k3J) * 	 1 
BAF.=`-@>*=*(T1rD   r^   c                      e Zd ZdZdZddZy)Localez9Replace translatable nodes with their translated doctree.   c                   | j                   j                  | j                   d   }}d}t        | j                  j                  j
                  | j                  j                        }| j                  j                  }| j                  j                  D cg c]  }||z  	 }}t        || j                  j                  |      \  }	}
|
sy t        |	dd       g}|	j                  x}	+|j                  t        |	dd              |	j                  x}	+i }t        d t!        |            D ]  }||z  }	 t#        | j                         D ]  \  }}|j%                  |d      }t'        |t(              st+        |      \  }}|j-                         sd|d<   M||k(  rd|d<   X|j-                         j/                  d      r|dz  }t'        |t(              rd	t1        |d
      z   }t3        |||j4                  | j                  | j                  | j                  j6                  |      }t'        |t8        j:                        st=        ||| j                   d      }|j?                         }t'        |t8        j@                        r|d   D ]  }tC        |      \  }}t3        |xs d||j4                  | j                  | j                  | j                  j6                  |      }tE        | j                  ||||j4                  || j                         |_#        d} |r|jI                          d|d<   d|d<    t#        | j                         D ]  \  }}|jK                  dd      r|j%                  |d      }d}t'        |t(              st+        |      \  }}|r||k(  rd|d<   Yt'        |tL        jN                        r|jQ                  ||       t'        |t8        jR                        r||d<   d|d<   t'        |t8        jT                        r|j%                  d      |k(  r||d<   |j-                         j/                  d      r|dz  }t'        |t(              rd	t1        |d
      z   }t'        |t8        jV                        r|dz   dtY        |      z  dz  z   }t3        |||j4                  | j                  | j                  | j                  j6                  |      }t'        |t8        jV                        r|j[                         }t8        j:                  t8        jV                  f}|t(        z  }|t\        z  }t'        ||      st=        ||| j                   |      }|j_                          |ja                          |jc                          |je                          |jg                          |jI                          t'        |t(              r|ji                         |_5        t'        |t8        jT                        r#|j%                  d      |k7  r|d   |d<   d|d<   d|d<    d| j                  jl                  v rto        | j                         D ]  \  }}g }|D ]k  \  }}}}}tq        ||      } g }!| D ])  }"|j%                  |"d      }|s|"}|!j                  |       + |djs                  |!      ||d f}#|j                  |#       m ||d<   ||d<    y y c c}w )Nr5    _catalogF
translatedTz::z

   dummy literalz::

z   )r'   r(   r8   r9   )ra   r   contentalt
=   urir   ;raw_entriesentries):rL   r9   r   r(   current_documentdocnamer'   gettext_compactsrcdirlocale_dirsinit_localelanguagegetattr	_fallbackr   filterreversedr   r   r   r   rC   stripendswithr   r>   line	_registryr
   	paragraphr^   r   r   r   r   r`   r   r   r   rJ   apply_translated_messagemetaimager   len	next_noder   r   r   r   r   r   r   rc   gettext_additional_targetsr   r   join)$rN   rO   r9   r5   msgstr
textdomainr   	directorydirscataloghas_catalog
cataloguesmerged	cataloguerQ   msg_r`   updaterr   r   r   first_classifierra   
unexpectedr   new_entries
entry_typevalue	target_idmain_category_key	msg_partsmsgstr_partspart	new_entrys$                                       r=   rR   zLocale.apply  s   ==114==3J&&HH%%--t{{/J/J


 48KK4K4KLy"LL*41E1EzRgz489
!+++w8ggz4@A "+++w8!#hz&:; 	 IiF	  *$--8 N	+ID#ZZR(F d$67&v.	<<>%*\"}%)\" ||~&&t,00
 $ 23!F67$;;#		{{HH++!E eU__5"4EJG446I $

+; %C-CF-K*D*+
		#{{ HH!%!3!3!)E %7(		%GM !%I)%. %%'%)\"%*\"]N	+b *$--8 _	&ID#|U3ZZR(FD d$67)&1Vs]%*\" $ 5 56--c6: $

+"(Y%)\"$,%C1G$U ||~&&t,00
 $ 23!F67$;;
 $,$s6{):Q)>>#		{{HH++!E $,) ;J ,,J**JeZ0"4tDG224..0779..0((*!!# $ 23!%$,%C1G#ElU%*\"!%D_	&B dkk<<<!<T]]!K .gKMIP 2EJy$ /
E BI#%L ) 4!'D"!5%%)F$++F3	4 #.!!I  &&y1!2$ '.]#"-Y+. = Ms   [%NrS   rV   r\   rD   r=   r   r     s    C`.rD   r   c                      e Zd ZdZdZddZy)TranslationProgressTotaliserz:Calculate the number of translated and untranslated nodes.   c                   ddl m} t        | j                  j                  |      ry dx}}t        t        j                  t              j                  | j                        D ]  }|dz  }|d   s|dz  } ||d| j                  d<   y )Nr   MessageCatalogBuilderr   r@   r   )totalr   translation_progress)sphinx.builders.gettextr-  
issubclassr(   _builder_clsr   r
   Elementr	   rK   rL   )rN   rO   r-  r/  r   rQ   s         r=   rR   z"TranslationProgressTotaliser.apply|  s    Adhh++-BC
#>FFt}}U 	 DQJEL!a
	  $1
,-rD   NrS   rV   r\   rD   r=   r)  r)  w  s    D
rD   r)  c                      e Zd ZdZdZddZy)AddTranslationClasseszNAdd ``translated`` or ``untranslated`` classes to indicate translation status.i  c                b   ddl m} t        | j                  j                  |      ry | j
                  j                  sy | j
                  j                  du rdx}}nI| j
                  j                  dk(  rd}d}n+| j
                  j                  dk(  rd}d}nd}t        |      t        t        j                  t              j                  | j                        D ]P  }|d   r%|s|j                  d	g       j                  d       -|s0|j                  d	g       j                  d       R y )
Nr   r,  Tr   FuntranslatedzPtranslation_progress_classes must be True, False, "translated" or "untranslated"r.  classes)r1  r-  r2  r(   r3  r'   translation_progress_classesr   r   r
   r4  r	   rK   rL   r   r   )rN   rO   r-  add_translatedadd_untranslatedr  rQ   s          r=   rR   zAddTranslationClasses.apply  s   Adhh++-BC{{77;;33t;044N-[[55E!N$[[55G"N#>  c""#>FFt}}U 	JDL!!OOIr299,G#OOIr299.I	JrD   NrS   rV   r\   rD   r=   r6  r6    s    XJrD   r6  c                      e Zd ZdZdZddZy)RemoveTranslatableInlinez9Remove inline nodes used for translation as placeholders.i  c                D   ddl m} t        | j                  j                  |      ry t        t        j                  t              }|j                  | j                        D ]<  }|j                  j                  |       |xj                  |j                  z  c_        > y )Nr   r,  )rJ   )r1  r-  r2  r(   r3  r   r
   inliner	   rK   rL   r   r   r   )rN   rO   r-  rP   r@  s        r=   rR   zRemoveTranslatableInline.apply  sm    Adhh++-BCell=oodmm4 	-FMM  (MMV__,M	-rD   NrS   rV   r\   rD   r=   r>  r>    s    C	-rD   r>  c                    | j                  t               | j                  t               | j                  t               | j                  t               | j                  t
               ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_transformrF   r   r)  r6  r>  )apps    r=   setuprH    sa    23f23+,./ "# rD   )r5   r   r6   r   r7   intr'   r   r(   r    r8   r!   r9   r"   rT   r   )r5   r   rT   ztuple[str, bool])rG  r   rT   r#   )GrZ   
__future__r   operatorr   rer   r   textwrapr   typingr   r	   docutils.utilsr*   r
   sphinxr   sphinx.domains.stdr   r   sphinx.errorsr   sphinx.localer   r   r   sphinx.transformsr   sphinx.utilr   r   sphinx.util.docutilsr   sphinx.util.i18nr   sphinx.util.index_entriesr   sphinx.util.nodesr   r   r   r   r   collections.abcr   r   sphinx.applicationr   sphinx.configr   sphinx.environmentr    sphinx.registryr!   r"   sphinx.util.typingr#   	getLoggerrW   rq   r   r>   rC   rF   r^   r   r)  r6  r>  rH  r\   rD   r=   <module>ra     s&   @ "    %    I %  - - - 0 . 5  2)$3764 
		8	$ $4  ))) )
 ) 
) &)  ) )X.? .Z1 Z1ze._ e.P
? 
.#JO #JL- -"rD   