o $aZ@sdZddlmZddlmZddlmZmZmZm Z m Z m Z m Z m Z ddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZmZdd lmZdd lmZ ddl!m"Z"ddl#m$Z$m%Z%m&Z&ddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/erddl0m1Z1e%2e3Z4dZ5e dej6dZ7ddde8de8de9dededefddZ:Gd d!d!e"Z;Gd"d#d#e"Zd(S))z sphinx.transforms.i18n ~~~~~~~~~~~~~~~~~~~~~~ Docutils transforms used by Sphinx when reading documents. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. )path)indent) TYPE_CHECKINGAnyDictListOptionalTupleTypeTypeVar)nodes) StringInput)Element) relative_path)addnodes)Config)make_glossary_termsplit_term_classifiers)__)init)SphinxTransform) get_filetypeloggingsplit_index_msg)docname_to_domain)IMAGE_TYPE_NODESLITERAL_TYPE_NODES NodeMatcherextract_messagesis_pending_metatraverse_translatable_index)Sphinx) refexplicitN)boundappr!source source_path source_lineconfigsettingsreturnc CszG|j}d|_ddlm}|}||t|j|} |j|| } |jt |d||fd| |d} z| d} Wn t yAYnw| W||_S||_w)aPublish 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)SphinxI18nReaderz%s:%s:)r&r')r&parserr*) rst_prolog sphinx.ior,setupr source_suffixregistrycreate_source_parserreadr IndexError) r%r&r'r(r)r*r.r,readerfiletyper-docr98/usr/lib/python3/dist-packages/sphinx/transforms/i18n.pypublish_msgstr/s,       r;c@&eZdZdZdZdeddfddZdS)PreserveTranslatableMessageszD Preserve original translatable messages before translation kwargsr+NcKs |jtjD]}|qdSN)documenttraverser translatablepreserve_original_messages)selfr?noder9r9r:apply[s z"PreserveTranslatableMessages.apply__name__ __module__ __qualname____doc__default_priorityrrGr9r9r9r:r=Ur=c@r<)LocalezC Replace translatable nodes with their translated doctree. r?r+NcO s0 jjjd}}d}|jjsJtttjjd|d}t |j j }fddj j D}t |j j|\}} | sEdStjD]\} } || }|r]|| ks]|s^qJ|dri|d7}t| trud t|d }tj||| jj |} t| tjsqJd } t| tjrt| jtjr| j}t| }t| }||kr| d g}|!|jj"#|d}jj$#|d}|r|sjj"%|djj$%|djj&%|dj'|t(tj)|d }j*|D]}||d<qd} t| tj+r1| dD]&}t,|}tj|d|| jj |} t-j| |d|| j|j} d} q | rF| j.D]}| |_q7| j.| _.d| d<qJtjD]f\} } | #dd rZqL|| }|rg|| kriqLt| t/j0rx| 1| |qLt| tj2rt3| r|| j4ddd<qLt| tj5r| #d| kr|| d<qL|dr|d7}t| trd t|d }t| tjr|ddt6|d}tj||| jj |} t| tjr| 7} tjtjf}|t7}|t87}t| |sqLdt9t:dt:dt:ddfdd}t(tj;tj?t@d"A||| d#i}|D]} | | #dg!| qI|D]i}!|!#d}"|#|"g}#|#ss|!jB|!q[|#%d}$|$d|!d<|!dD] }%|!jj&|%<q|!d$dkr|jjC|$|!n|jjD|$|!|"rÈjjE |"g}&||&|$|!jjF |"g}'||'|$|!q[t(tjGtj?t@d'A|+|,| d#d(d|)D}-d)d|*D}.t=tH|-tH|.}/|*D]}0jI|0ds/|/r.|/%d|0d<n jJ|0qt(tj;tj?t@d"A||| d#|D]}$|2 |$dg!|$dqt|D]}!|!d}"|2#|"r|2|"%d|!d<qt(tjKtj?t@d.A|6|7| d#|4D]}8|2 |8dg!|8dq|5D]}9|9d}"|2#|"r|2|"%|9d<qt=| *t/jL}:t=| *t/jL};i}t>j?t@d1A|=|>| d#d2t/jLdtMtNtOtOtOffd3d4}?|:D]}@|?|@}A|Ar[|@jP|<|A<qM|;D]}B|?|B}A|<#|AiQD]\}C}D|CtRvrz|D|B|C<qmq_| j.D]}| |_q| j.| _.t| tr| | _St| tj5r| #d| kr| d5| d5<qLd| d<qLd6j jTvrtUjD]C\} }Eg}F|ED]1\}G} }H}I}JtV|G| }Kg}L|KD]}M||M}|s|M}|L!|q|F!|Gd7|L|H|Idfq|E| d8<|F| d9<qj*t(tqsz Locale.apply..z::z dummy literalz:: z Fnamesrefnamer\Tids translatedr contentalt =lstoldnewr+cSs(||vr ||||<dS||dSr@)indexappend)rerfrgr9r9r:list_replace_or_append$sz,Locale.apply..list_replace_or_append)autocSg|]}|jqSr9 rawsourcerVrefr9r9r:rY.cSrlr9rmror9r9r:rY/rqzVinconsistent footnote references in translated message. original: {0}, translated: {1})locationrkcSrlr9rmror9r9r:rYYrqcSrlr9rmror9r9r:rYZrqzMinconsistent references in translated message. original: {0}, translated: {1}cSg|]}|dqSr[r9rVrr9r9r:rY_cSrsr[r9rtr9r9r:rY`rvcSrlr9rmror9r9r:rYurqcSrlr9rmror9r9r:rYvrqcSrlr9rmror9r9r:rYrqcSrlr9rmror9r9r:rYrqzVinconsistent citation references in translated message. original: {0}, translated: {1}cSrlr9rmrVxrefr9r9r:rYrqcSrlr9rmrwr9r9r:rYrqzRinconsistent term references in translated message. original: {0}, translated: {1}rFcSs2|d|df}|dkrdS|d|d|dfS)N refdomainreftype)stdterm reftargetr9)rFcaser9r9r: get_ref_keysz!Locale.apply..get_ref_keyurirh; raw_entriesentries)r_)XrAr* startswithrTrUrsplitextrrSrr)gettext_compact locale_dirs init_localelanguagergettextstripendswith isinstancerrr;r%liner paragraphtitleparentsectionfully_normalize_nameastext setdefaultrinameidsget nametypespopr]note_implicit_targetrtargetrBr|rrchildrenrrCapply_translated_messagependingrdetailsimagelen next_noderrr#footnote_referencerlistloggerwarningrformatremoveautofootnote_refssymbol_footnote_refs footnote_refsrefnames referencesethas_name note_refnamecitation_reference pending_xrefrr str attributesitems EXCLUDED_PENDING_XREF_ATTRIBUTESrngettext_additional_targetsr rdelattr)OrEr?r*r&msgstrdocname textdomaindirscatalog has_catalogrFmsgpatch processed section_nodenew_nameold_namerZ_idexplicitmatcher old_targetpartschild unexpectedrjis_autofootnote_ref old_foot_refs new_foot_refsold_foot_ref_rawsourcesnew_foot_ref_rawsourcesold_foot_namerefsrunewfr\refsoldfidrris_refnamed_refold_refsnew_refsold_ref_rawsourcesnew_ref_rawsources old_ref_names new_ref_namesorphansnewris_refnamed_footnote_refrefname_ids_mapis_citation_ref old_cite_refs new_cite_refsold_cite_ref_rawsourcesnew_cite_ref_rawsourcesoldcnewc old_xrefs new_xrefsxref_reftarget_mapold_xref_rawsourcesnew_xref_rawsourcesrrfkeyrgkvr new_entriestypetidmainkey_ msg_parts msgstr_partspartr_r9rXr:rGfs                                   "            z Locale.applyrHr9r9r9r:rO`rNrOc@r<)RemoveTranslatableInlinezC Remove inline nodes used for translation as placeholders. ir?r+NcKsbddlm}t|jj|rdSttjtd}t |j |D]}|j ||j |j7_ qdS)Nr)MessageCatalogBuilder)rC)sphinx.builders.gettextrrr%builderrr inlinerrrArBrrr)rEr?rrrr9r9r:rGs  zRemoveTranslatableInline.applyrHr9r9r9r:rrNrcCs*|t|t|tddddS)NbuiltinT)versionparallel_read_safeparallel_write_safe) add_transformr=rOr)r%r9r9r:r0s   r0N)?rLosrtextwraprtypingrrrrrr r r docutilsr docutils.ior docutils.nodesrdocutils.utilsrsphinxr sphinx.configrsphinx.domains.stdrr sphinx.localerrrsphinx.transformsr sphinx.utilrrrsphinx.util.i18nrsphinx.util.nodesrrrrrr sphinx.applicationr! getLoggerrIrrNoder#rintr;r=rOrr0r9r9r9r:sH (              &