o $a+(@sdZddlZddlmZmZmZmZmZmZm Z ddl m Z ddl m Z ddlmZddlmZmZddlmZdd lmZdd lmZdd lmZmZdd lmZdd lmZm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&m'Z'ddl(m)Z)e$*e+Z,e-dZ.Gdddee/Z0de/dee/e/ffddZ1Gddde0Z2Gddde0Z3Gddde0Z4Gdd d eZ5d!edee/effd"d#Z6dS)$z sphinx.domains.rst ~~~~~~~~~~~~~~~~~~ The reStructuredText domain. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)AnyDictIteratorListOptionalTuplecast)Element) directives)addnodes)desc_signature pending_xref)Sphinx)Builder)ObjectDescription)DomainObjType)BuildEnvironment)___)XRefRole)logging)make_id make_refnode) OptionSpecz\.\. (.+?)::(.*)$c@sReZdZdZdedededdfddZd ededefd d Zdedefd d ZdS) ReSTMarkupz- Description of generic reST markup. namesigsignodereturnNcCst|j|jj|j|}|d|||}||jjjvr+||dvr+|d||jj|t t |j d}|j |j|||d| |j|}|r]|jdd||ddfdSdS)Nidsrstlocationentriessingle)renvstatedocumentobjtypeappend make_old_idr note_explicit_targetr ReSTDomain get_domain note_objectget_index_text indexnode)selfrrrnode_id old_node_iddomain indextextr84/usr/lib/python3/dist-packages/sphinx/domains/rst.pyadd_target_and_index(s zReSTMarkup.add_target_and_index objectnamecCsdS)Nr&r8r3r;rr8r8r9r1;szReSTMarkup.get_index_textcCs|jd|S)zGenerate old styled node_id for reST markups. .. note:: Old Styled node_id was used until Sphinx-3.0. This will be removed in Sphinx-5.0. -)r*r3rr8r8r9r,>szReSTMarkup.make_old_id) __name__ __module__ __qualname____doc__strr r:r1r,r8r8r8r9r#s rdrcCsd|}|ds |dfSt|}|s|dfS|\}}|r,|d|fS|dfS)zParse a directive signature. Returns (directive, arguments) string tuple. If no arguments are given, returns (directive, ''). .r& )strip startswith dir_sig_rematchgroups)rDdirm parsed_dir parsed_argsr8r8r9parse_directiveGs    rPc@sPeZdZdZdededefddZdededefd d Zdd d ZdddZ d S) ReSTDirectivez* Description of a reST directive. rrrcCsDt|\}}d|}|t||7}t|dkr |t||7}|S)Nz.. %s::r)rPr desc_namelen desc_addname)r3rrrargsrRr8r8r9handle_signature_s  zReSTDirective.handle_signaturer;rcC td|S)N%s (directive)rr<r8r8r9r1g zReSTDirective.get_index_textNcCs.|jr|jjdg}||jddSdS)Nrst:directivesr)namesr' ref_context setdefaultr+r3r r8r8r9before_contentjszReSTDirective.before_contentcCs$|jjdg}|r|dSdS)Nr[)r'r]r^popr_r8r8r9 after_contentos zReSTDirective.after_content)rN) r?r@rArBrCr rVr1r`rbr8r8r8r9rQ[s  rQc@seZdZUdZejZeed<e de j ide de de fddZd e de de dd fd d Zede fd dZd e de fddZd S)ReSTDirectiveOptionz6 Description of an option for reST directive. option_spectyperrrcCsz td|d\}}Wnty|d}}Ynw|td|d|7}|r6|td|d|7}|jdrKd|jd}|t||7}|S)Nz\s*:\s+:%s:rFrez (%s)) resplitrG ValueErrorr rRdesc_annotationoptionsget)r3rrrargumenttextr8r8r9rV~s  z$ReSTDirectiveOption.handle_signaturerNc Cs>tt|jd}|j}|rd|j|g}d||g}n|j}|}t|j|jj ||}|d || |} | |jj j vrM| |dvrM|d | |jj ||j|j|||d|r|d} td|td|g} |jd  d d | |d | fdS|d} td|} |jd  d | |d | fdS)Nr!r=:r r"rrXz:%s: (directive option)r$pairz; r&r%)rr.r'r/current_directivejoinr*rr(r)r+r,r r-r0upperrr2) r3rrrr6directive_nameprefixobjnamer4r5keyrqror8r8r9r:s.    $  z(ReSTDirectiveOption.add_target_and_indexcCs|jjd}|r |dSdS)Nr[r&)r'r]rmr_r8r8r9rrsz%ReSTDirectiveOption.current_directivecCsd|j|j|gS)zGenerate old styled node_id for directive options. .. note:: Old Styled node_id was used until Sphinx-3.0. This will be removed in Sphinx-5.0. r=)rsr*rrr>r8r8r9r,szReSTDirectiveOption.make_old_id)r?r@rArBrrdcopyr__annotations__updater unchangedrCr rVr:propertyrrr,r8r8r8r9rcus !rcc@s<eZdZdZdededefddZdededefd d Zd S) ReSTRolez% Description of a reST role. rrrcCs|td|d|7}|S)Nrg)r rR)r3rrr8r8r9rVszReSTRole.handle_signaturer;rcCrW)Nz %s (role)rYr<r8r8r9r1rZzReSTRole.get_index_textN)r?r@rArBrCr rVr1r8r8r8r9rsrc@s~eZdZUdZdZdZeeddeeddeedddZe e e dZ e e d Zd iiZeeeeeefeffed <ed eeeefeeefffd dZd*dedededed df ddZded dfddZdeeded dfddZdededed ed!ed"ed#ed eefd$d%Z dededed!ed"ed#ed eeeeffd&d'Z!d e"eeeeeee#ffd(d)Z$dS)+r.zReStructuredText domain.r!reStructuredText directiverLzdirective-optionrole)rzdirective:optionr)rLrobjects initial_datarcCs|jdiSNr)datar^)r3r8r8r9rszReSTDomain.objectsNr*rr4r#cCsV||f|jvr|j||f\}}tjtd|||f|d|jj|f|j||f<dS)Nz4duplicate description of %s %s, other instance in %sr")rloggerwarningrr'docname)r3r*rr4r#rr8r8r9r0s zReSTDomain.note_objectrcCs8t|jD]\\}}\}}||kr|j||f=qdSN)listritems)r3rtyprdocr4r8r8r9 clear_docs  zReSTDomain.clear_docdocnames otherdatacCs<|dD]\\}}\}}||vr||f|j||f<qdSr)rr)r3rrrrrr4r8r8r9merge_domaindatas zReSTDomain.merge_domaindatar' fromdocnamebuilderrtargetnodecontnodec CsP||}|D]} |j| |fd\} } | r%t||| | ||d| SqdS)NNNrF)objtypes_for_rolerrmr) r3r'rrrrrrobjtypesr* todocnamer4r8r8r9 resolve_xrefs   zReSTDomain.resolve_xrefc Cs\g}|jD]&}|j||fd\} } | r+|d||t||| | ||d|fq|S)Nrzrst:rF) object_typesrrmr+role_for_objtyper) r3r'rrrrrresultsr*rr4r8r8r9resolve_any_xrefs   zReSTDomain.resolve_any_xrefccs8|jdD]\\}}\}}|||||dfVqdS)Nrrf)rr)r3rrrr4r8r8r9 get_objectsszReSTDomain.get_objectsr)%r?r@rArBrlabelrrrrQrcrr rrolesrrrCrr{r~rrr0rrrrrr r rrrrintrr8r8r8r9r.sV    $(    & r.appcCs|tdddddS)NbuiltinT)version env_versionparallel_read_safeparallel_write_safe) add_domainr.)rr8r8r9setups r)7rBrhtypingrrrrrrrdocutils.nodesr docutils.parsers.rstr sphinxr sphinx.addnodesr r sphinx.applicationrsphinx.buildersrsphinx.directivesrsphinx.domainsrrsphinx.environmentr sphinx.localerr sphinx.rolesr sphinx.utilrsphinx.util.nodesrrsphinx.util.typingr getLoggerr?rcompilerIrCrrPrQrcrr.rr8r8r8r9s4 $            $I J