
    zif                    0   d Z ddlm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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!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. ddl/m0Z0 ddl1m2Z2  e"j3        e4          Z5dZ6 edej7                  Z8d8d'Z9d9d)Z: G d* d+e          Z; G d, d-          Z< G d. d/e          Z= G d0 d1e          Z> G d2 d3e          Z? G d4 d5e          Z@d:d7ZAdS );z:Docutils transforms used by Sphinx when reading documents.    )annotationsN)path)DOTALLmatch)indent)TYPE_CHECKINGAnyTypeVar)nodes)StringInput)addnodes)make_glossary_termsplit_term_classifiers)ConfigError)__)init)SphinxTransform)get_filetypelogging)docname_to_domain)split_index_msg)IMAGE_TYPE_NODESLITERAL_TYPE_NODESNodeMatcherextract_messagestraverse_translatable_index)Sequence)Sphinx)Config)refexplicitN)boundappr   sourcestrsource_pathsource_lineintconfigr   settingsr	   returnnodes.Elementc           	        	 |j         }d|_         ddlm}  |            }|                    |            t	          |j        |          }	| j                            | |	          }
|                    t          || d| d          |
|          }t          j        t                    5  |d         cddd           ||_         S # 1 swxY w Y   |||_         S # ||_         w xY w)a  Publish msgstr (single line) into docutils document

    :param sphinx.application.Sphinx app: sphinx application
    :param str source: source text
    :param str source_path: source path for warning indication
    :param source_line: source line for warning indication
    :param sphinx.config.Config config: sphinx config
    :param docutils.frontend.Values settings: docutils settings
    :return: document
    :rtype: docutils.nodes.document
    Nr   )SphinxI18nReader:z:<translated>)r$   r&   )r$   parserr*   )
rst_prolog	sphinx.ior.   setupr   source_suffixregistrycreate_source_parserreadr   
contextlibsuppress
IndexError)r#   r$   r&   r'   r)   r*   r1   r.   readerfiletyper0   docs               a/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/transforms/i18n.pypublish_msgstrr?   2   sY   '&
 ......!!##S 4kBB223AAkkf.9+V+VK+V+V+VX X X	  
 
  ,, 	 	q6	 	 	 	 	 	 	 '		 	 	 	 	 	 	 	&J&&&&s0   B)C +C3C CC CC 	C$tuple[str, bool]c                h    t          d| t                    }|r|                    d          dfS | dfS )Nz(.*)(?<!\\)#\s*noqa\s*$   TF)r   r   group)r$   ms     r>   
parse_noqarE   V   s;    (&&99A wwqzz4u}    c                      e Zd ZdZdZd	dZdS )
PreserveTranslatableMessageszD
    Preserve original translatable messages before translation
    
   kwargsr	   r+   Nonec                |    | j                             t          j                  D ]}|                                 d S N)documentfindallr   translatablepreserve_original_messages)selfrJ   nodes      r>   applyz"PreserveTranslatableMessages.applyd   sC    M))(*?@@ 	. 	.D++----	. 	.rF   NrJ   r	   r+   rK   __name__
__module____qualname____doc__default_priorityrT    rF   r>   rH   rH   ^   s:          . . . . . .rF   rH   c                  Z    e Zd ZdZddZddZddZddZddZddZ	ddZ
ddZddZdS )_NodeUpdaterzAContains logic for updating one node with the translated content.rS   r,   patchrN   nodes.documentnoqaboolr+   rK   c                >    || _         || _        || _        || _        d S rM   )rS   r_   rN   ra   )rR   rS   r_   rN   ra   s        r>   __init__z_NodeUpdater.__init__l   s$     $(	$)
(0			rF   old_refsSequence[nodes.Element]new_refswarning_msgr%   c                    | j         sqt          |          t          |          k    rSd |D             }d |D             }t                              |                    ||          | j        dd           dS dS dS )zLWarn about mismatches between references in original and translated content.c                    g | ]	}|j         
S r\   	rawsource.0refs     r>   
<listcomp>z3_NodeUpdater.compare_references.<locals>.<listcomp>z       !D!D!DC#-!D!D!DrF   c                    g | ]	}|j         
S r\   rk   rm   s     r>   rp   z3_NodeUpdater.compare_references.<locals>.<listcomp>{   rq   rF   i18ninconsistent_references)locationtypesubtypeN)ra   lenloggerwarningformatrS   )rR   re   rg   rh   old_ref_rawsourcesnew_ref_rawsourcess         r>   compare_referencesz_NodeUpdater.compare_referencest   s    
 y 	_S]]c(mm;;!D!D8!D!D!D!D!D8!D!D!DNN;--.@BTUU$(IFD]  _ _ _ _ _	_ 	_;;rF   c                   d}t          | j        t          j                  rt          | j        j        t          j                  r| j        j        }t          j        | j                                                  }t          j        | j                                                  }||k    r(|	                    dg           }|
                    |           | j        j                            |d           }| j        j                            |d           }|r||s`| j        j                            |d            | j        j                            |d            | j        j                            |d            | j                            |           t%          t          j        |          }| j                            |          D ]}	||	d<   d}|S )NFnamesrefnamer   T)
isinstancerS   r   titleparentsectionfully_normalize_namer_   astext
setdefaultappendrN   nameidsget	nametypespopidsnote_implicit_targetr   targetrO   )
rR   	processedsection_nodenew_nameold_namer   _idexplicitmatcher
old_targets
             r>   update_title_mappingz!_NodeUpdater.update_title_mapping   s   	 di-- 8	!*TY=Mu}2]2] 8	!9+L1$*2C2C2E2EFFH1$)2B2B2D2DEEH8## %//<<X&&& m+//$??=266xFF"  E# 9 -11(DAAA/33HdCCC)--c4888 M66|DDD &elHEEE"&-"7"7"@"@ 5 5J,4Jy)) 	rF   c                   dd}t          t          j        t          	          }g | j                            |          }g | j                            |          }|                     ||t          d
                     i }|D ]>}|	                    |
                    d          g                               |           ?|D ]}|
                    d          }|
                    |g           }	|	s|j                            |           K|	                    d          }
|
d         |d<   |d         D ]}|| j        j        |<   |d         dk    r || j        j        |
|           n || j        j        |
|           |rZ| j        j        	                    |g           } |||
|           | j        j        	                    |g           } |||
|           d S )Nlstlist[N]oldr!   newr+   rK   c                l    || v r|| |                      |          <   d S |                     |           d S rM   )indexr   )r   r   r   s      r>   list_replace_or_appendzK_NodeUpdater.update_autofootnote_references.<locals>.list_replace_or_append   s8    czz&)CIIcNN###

3rF   )autoVinconsistent footnote references in translated message. original: {0}, translated: {1}r   r   r   r   rB   )r   r   r   r!   r   r!   r+   rK   )r   r   footnote_referencer	   rS   rO   r_   r~   r   r   r   r   r   remover   rN   r   autofootnote_refssymbol_footnote_refsfootnote_refsrefnames)rR   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   sB   	  	  	  	  *%*BMMM95Y2339596Z 34496} " $E !F !F	G 	G 	G HJ 	I 	IA((y)9)92>>EEaHHHH! 	= 	=Dhhy))G$(("55D ""4(((88A;;Du+DK5k - -(,!"%%F|q  &&t}'FdSSSS '&t}'I4QUVVV = $ ; F FwPR S S&&}dDAAA=1<<WbII&&xt<<<1	= 	=rF   c                   t          t          j        t                    }g | j                            |          }g | j                            |          }|                     ||t          d                     d |D             }d |D             }g h |h |z
  }|D ]X}| j	        
                    |d                   s|r|                    d          |d<   n	 | j	                            |           Yd S )Nr   zMinconsistent references in translated message. original: {0}, translated: {1}c                    g | ]
}|d          S r   r\   rn   r   s     r>   rp   z;_NodeUpdater.update_refnamed_references.<locals>.<listcomp>       888!9888rF   c                    g | ]
}|d          S r   r\   r   s     r>   rp   z;_NodeUpdater.update_refnamed_references.<locals>.<listcomp>   r   rF   r   r   )r   r   	referencer	   rS   rO   r_   r~   r   rN   has_namer   note_refname)rR   is_refnamed_refre   rg   old_ref_namesnew_ref_namesorphansnewrs           r>   update_refnamed_referencesz'_NodeUpdater.update_refnamed_references   s5   
 &eosCCC*ODI,=,=o,N,N*O*PDJ,>,>,O,O*P( " $E !F !F	G 	G 	G 98x88888x888:%}%(8-(88: 	- 	-D=))$y/::   &-kk!nnDOO M&&t,,,,	- 	-rF   c                   t          t          j        t                    }g | j                            |          }g | j                            |          }i }|                     ||t          d                     |D ]7}|	                    |d         g           
                    |d                    8|D ]=}|d         }|                    |          r||                             d          |d<   >d S )Nr   r   r   r   r   )r   r   r   r	   rS   rO   r_   r~   r   r   r   r   r   )rR   is_refnamed_footnote_refr   r   refname_ids_mapr   r   r   s           r>   #update_refnamed_footnote_referencesz0_NodeUpdater.update_refnamed_footnote_references  s/   #.u/GQT#U#U#U 9'$):K:K$;& ;& 9'9'$*:L:L$;& ;& 9'02} " $E !F !F	G 	G 	G " 	P 	PD&&tI;;BB4;OOOO! 	> 	>D9oG""7++ >-g6::1==U	> 	>rF   c                   t          t          j        t                    }g | j                            |          }g | j                            |          }|                     ||t          d                     i }|D ]7}|	                    |d         g           
                    |d                    8|D ]<}|d         }|                    |          r||                                         |d<   =d S )Nr   zVinconsistent citation references in translated message. original: {0}, translated: {1}r   r   )r   r   citation_referencer	   rS   rO   r_   r~   r   r   r   r   r   )rR   is_citation_refold_cite_refsnew_cite_refsr   oldcnewcr   s           r>   update_citation_referencesz'_NodeUpdater.update_citation_references  s   %e&>LLL8]$):K:KO:\:\8]8^$*:L:L_:]:]8^} " $E !F !F	G 	G 	G 13! 	P 	PD&&tI;;BB4;OOOO! 	= 	=D9oG""7++ =-g6::<<U	= 	=rF   c                   g | j                             t          j                  }g | j                            t          j                  }|                     ||t          d                     i }dd}|D ]} ||          }|r
|j        ||<   |D ]I} ||          }|                    |i           	                                D ]\  }}	|t          vr|	||<   Jd S )NzRinconsistent term references in translated message. original: {0}, translated: {1}rS   addnodes.pending_xrefr+   tuple[str, str, str] | Nonec                `    | d         | d         f}|dk    rd S | d         | d         | d         fS )N	refdomainreftype)stdterm	reftargetr\   )rS   cases     r>   get_ref_keyz6_NodeUpdater.update_pending_xrefs.<locals>.get_ref_key5  sH    $d9o5D&&t %O% rF   )rS   r   r+   r   )rS   rO   r   pending_xrefr_   r~   r   
attributesr   items EXCLUDED_PENDING_XREF_ATTRIBUTES)
rR   	old_xrefs	new_xrefsxref_reftarget_mapr   r   keyr   kvs
             r>   update_pending_xrefsz!_NodeUpdater.update_pending_xrefs)  s;    @di''(=>>?	@dj(()>??@		9 " $E !F !F	G 	G 	G QS		 		 		 		  	9 	9C+c""C 9*-."3' 	 	C+c""C +..sB77==??  1<<<CF		 	rF   c                h    | j         j        D ]}| j        |_        | j         j        | j        _        d S rM   )r_   childrenrS   r   )rR   childs     r>   update_leavesz_NodeUpdater.update_leavesL  s6    Z( 	% 	%E9ELL!Z0	rF   N)
rS   r,   r_   r,   rN   r`   ra   rb   r+   rK   )re   rf   rg   rf   rh   r%   r+   rK   )r+   rb   )r+   rK   )rW   rX   rY   rZ   rd   r~   r   r   r   r   r   r   r   r\   rF   r>   r^   r^   i   s        KK   	_ 	_ 	_ 	_> > > >@+= += += +=Z- - - -6> > > >$= = = = ! ! ! !F1 1 1 1 1 1rF   r^   c                      e Zd ZdZdZd	dZdS )
LocalezC
    Replace translatable nodes with their translated doctree.
       rJ   r	   r+   rK   c                     j         j         j         d         }}d}t           j        j         j        j                  } fd j        j        D             }t          | j        j	        |          \  }}|sd S t          |dd           g}	|j        x}-|	                    t          |dd                      |j        x}-i }
t          d t          |	                    D ]}|
|z  }
t           j                   D ]\  }}|
                    |d          }t#          |t$                    st'          |          \  }}|                                dk    rd|d<   a||k    rd|d<   m|                                                    d          r|d	z  }t#          |t$                    rd
t-          |d          z   }t/           j        |||j         j        |          }t#          |t4          j                  st9          || j         d          }|                                }t#          |t4          j                  rx|d         D ]o}t?          |          }t/           j        |d         pd||j         j        |          }tA           j        ||d         pd||j        | j                   |_!        d}p|r|"                                 d|d<   d|d<   t           j                   D ]\  }}|#                    dd          r|
                    |d          }d}t#          |t$                    st'          |          \  }}|r||k    rd|d<   jt#          |tH          j%                  r|&                    ||           t#          |t4          j'                  r||d<   d|d<   t#          |t4          j(                  r|                    d          |k    r||d<   |                                                    d          r|d	z  }t#          |t$                    rd
t-          |d          z   }t#          |t4          j)                  r|dz   dtU          |          z  dz  z   }t/           j        |||j         j        |          }t#          |t4          j)                  r|+                                }t4          j        t4          j)        f}|t$          z  }|tX          z  }t#          ||          st9          || j         |          }|-                                 |.                                 |/                                 |0                                 |1                                 |"                                 t#          |t$                    r|2                                |_3        t#          |t4          j(                  r+|                    d          |k    r|d         |d<   d|d<   d|d<   d j        j4        v rtk           j                   D ]\  }}g }|D ]}\  }}}}}tm          ||          }g }|D ]1}|
                    |d          }|s|}|                    |           2|d7                    |          ||d f} |                    |            ~||d<   ||d<   d S d S )Nr$    c                N    g | ]!}t          j        j        j        |          "S r\   )r   joinenvsrcdir)rn   	directoryrR   s     r>   rp   z Locale.apply.<locals>.<listcomp>_  s9     : : : 	$(/955 : : :rF   _catalogF
translatedTz::z

   dummy literalz::

z   )ra   r   r   rB   contentalt
=   urir   ;raw_entriesentries)8rN   r*   r   r   docnamer)   gettext_compactlocale_dirsinit_localelanguagegetattr	_fallbackr   filterreversedr   r   r   r   rE   stripendswithr   r?   r#   liner   	paragraphr^   r   r   r   r   r_   r   r   r   rP   apply_translated_messagemetaimager   rx   	next_noder   r   r   r   r   r   r   rl   gettext_additional_targetsr   r   r   )!rR   rJ   r*   r$   msgstr
textdomaindirscataloghas_catalog
cataloguesmerged	cataloguerS   msg_r_   updaterr   r   partsra   
unexpectedr   new_entries
entry_typevalue	target_idmain_category_key	msg_partsmsgstr_partspart	new_entrys!   `                                r>   rT   zLocale.applyX  sT   =14=3J&&tx'79TUU
: : : :!%!8: : :*41EzRR 	Fgz4889
!++w8ggz4@@AAA "++w8!#hz&:&:;; 	  	 IiFF *$-88 ;	+ ;	+ID#ZZR((F d$677 /&v..	||~~##%*\"}}%)\" ||~~&&t,, 100
 $ 233 <!F67$;$;;"48VV#'9dk8E EE eU_55 "4EJJJG4466I $
++ 	%; % %C26::E*%(.b&$)T[RZ E %7%qRCQUQ^% %GM !%II  +%%'''%)\""%*\"" *$-88 X	& X	&ID#|U33 ZZR((FD d$677 2)&11 Vs]]%*\" $ 566 --c6::: $
++ "(Y%)\"$,, %C1G1G$U ||~~&&t,, 100
 $ 233 <!F67$;$;;
 $,, ?$s6{{):Q)>>"48VV#'9dk8E EE $,, *)) ;J ,,J**JeZ00 "4tDDG22444..00077999..000((***!!### $ 233 /!%$,, %C1G1G#ElU%*\"!%Ddk<<<!<T]!K!K . .gKMIP 
2 
2EJy$ /
E B BI#%L ) 4 4!'D"!5!5% *%)F$++F3333 *CHH\,B,BItUY YI&&y1111&-]#"-Y# =<. .rF   NrU   rV   r\   rF   r>   r   r   R  s@          ~. ~. ~. ~. ~. ~.rF   r   c                      e Zd ZdZdZd	dZdS )
TranslationProgressTotaliserzD
    Calculate the number of translated and untranslated nodes.
       rJ   r	   r+   rK   c                    ddl m} t          | j        j        |          rd S dx}}| j                            t          t                              D ]}|dz  }|d         r|dz  }||d| j        d<   d S )Nr   MessageCatalogBuilderr   rB   r   )totalr   translation_progress)	sphinx.builders.gettextr,  r   r#   builderrN   rO   r   r	   )rR   rJ   r,  r.  r   rS   s         r>   rT   z"TranslationProgressTotaliser.apply  s    AAAAAAdh&(=>> 	F
M))+*E*E*EFF 	  	 DQJEL!  a
 $1
 1
,---rF   NrU   rV   r\   rF   r>   r(  r(    s:          
 
 
 
 
 
rF   r(  c                      e Zd ZdZdZd	dZdS )
AddTranslationClasseszX
    Add ``translated`` or ``untranslated`` classes to indicate translation status.
    i  rJ   r	   r+   rK   c                    ddl m} t          | j        j        |          rd S | j        j        sd S | j        j        du rdx}}n;| j        j        dk    rd}d}n&| j        j        dk    rd}d}nd}t          |          | j        	                    t          t                              D ]a}|d         r,|r)|                    d	g                               d           6|r)|                    d	g                               d           bd S )
Nr   r+  Tr   FuntranslatedzPtranslation_progress_classes must be True, False, "translated" or "untranslated"r-  classes)r0  r,  r   r#   r1  r)   translation_progress_classesr   rN   rO   r   r	   r   r   )rR   rJ   r,  add_translatedadd_untranslatedr  rS   s          r>   rT   zAddTranslationClasses.apply6  sQ   AAAAAAdh&(=>> 	F{7 	F;3t;;044N--[5EE!N$[5GG"N#ACc"""M))+*E*E*EFF 	J 	JDL! J! HOOIr2299,GGG# JOOIr2299.III	J 	JrF   NrU   rV   r\   rF   r>   r3  r3  0  s@          J J J J J JrF   r3  c                      e Zd ZdZdZd	dZdS )
RemoveTranslatableInlinezC
    Remove inline nodes used for translation as placeholders.
    i  rJ   r	   r+   rK   c                <   ddl m} t          | j        j        |          rd S t          t          j        t                    }t          | j
                            |                    D ]1}|j                            |           |xj        |j        z  c_        2d S )Nr   r+  )rP   )r0  r,  r   r#   r1  r   r   inliner	   listrN   rO   r   r   r   )rR   rJ   r,  r   r=  s        r>   rT   zRemoveTranslatableInline.applyZ  s    AAAAAAdh&(=>> 	Fel===4=0099:: 	- 	-FM  (((MMV_,MMM	- 	-rF   NrU   rV   r\   rF   r>   r;  r;  T  s:          - - - - - -rF   r;  dict[str, Any]c                   |                      t                     |                      t                     |                      t                     |                      t                     |                      t
                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_transformrH   r   r(  r3  r;  )r#   s    r>   r3   r3   e  s    2333f2333+,,,./// "#  rF   )r#   r   r$   r%   r&   r%   r'   r(   r)   r   r*   r	   r+   r,   )r$   r%   r+   r@   )r#   r   r+   r?  )BrZ   
__future__r   r8   osr   rer   r   textwrapr   typingr   r	   r
   docutilsr   docutils.ior   sphinxr   sphinx.domains.stdr   r   sphinx.errorsr   sphinx.localer   r   r  sphinx.transformsr   sphinx.utilr   r   sphinx.util.i18nr   sphinx.util.index_entriesr   sphinx.util.nodesr   r   r   r   r   collections.abcr   sphinx.applicationr   sphinx.configr   	getLoggerrW   ry   r   Noder!   r?   rE   rH   r^   r   r(  r3  r;  r3   r\   rF   r>   <module>r[     sk   @ @ " " " " " "                         . . . . . . . . . .       # # # # # #       I I I I I I I I % % % % % %       - - - - - - - - - - - - - - - - - - - - . . . . . . 5 5 5 5 5 5               %(((((())))))$$$$$$ 
	8	$	$ $4   GCuz"""!' !' !' !'H   . . . . .? . . .f1 f1 f1 f1 f1 f1 f1 f1RD. D. D. D. D._ D. D. D.N
 
 
 
 
? 
 
 
.!J !J !J !J !JO !J !J !JH- - - - - - - -"     rF   