o $a@sdZddlmZmZmZmZmZmZddlm Z ddl m Z m Z ddl mZddlmZddlmZddlmZdd lmZmZdd lmZmZdd lmZdd lmZer\dd lm Z e!e"Z#GdddeZ$GdddeZ%GdddeZ&dddee'effddZ(dS)z sphinx.domains.index ~~~~~~~~~~~~~~~~~~~~ The index domain. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. ) TYPE_CHECKINGAnyDictIterableListTuple)nodes)Nodesystem_message) directives)addnodes)Domain)BuildEnvironment)loggingsplit_index_msg) ReferenceRoleSphinxDirective)process_index_entry) OptionSpec)Sphinxc @seZdZdZdZdZedeee e eeeeefffddZ deddfdd Z d e ed eddfd d ZdedededdfddZdS) IndexDomainzMathematics domain.indexreturncCs|jdiSNentries)data setdefault)selfr6/usr/lib/python3/dist-packages/sphinx/domains/index.pyr%szIndexDomain.entriesdocnameNcCs|j|ddS)N)rpop)rr rrr clear_doc)szIndexDomain.clear_docdocnames otherdatacCs |D] }|d||j|<qdSrr)rr#r$r rrrmerge_domaindata,szIndexDomain.merge_domaindataenvdocumentc Cs|j|jg}t|tjD]B}z|dD] }t|d|dqWn!tyE}zt j t ||d|j |WYd}~qd}~ww|dD]}||qJqdS)z7Process a document after it is read by the environment.rr)locationN)rrr listtraverser rr ValueErrorloggerwarningstrparentremoveappend)rr'r r(rnodeentryexcrrr process_doc0s   zIndexDomain.process_doc)__name__ __module__ __qualname____doc__namelabelpropertyrr0rrrr"rr&rr r7rrrrr s*rc@sFeZdZUdZdZdZdZdZdej iZ e e d<de efd d Zd S) IndexDirectivez0 Directive to add entries to the index. Fr)rTr< option_specrcCs|jdd}d|jvr|jd}tjdd|gd}nd|jd}tjdd|gd}|jj |t }g|d <d |d <| ||D]}|d  t||d dqG||gS) Nr r<)namesindex-%sridsrFinlinerF) argumentssplitoptionsrtargetr' new_serialnostater(note_explicit_targetr rset_source_infoextendr)rrH targetname targetnodetargetid indexnoder5rrrrunKs   zIndexDirective.runN)r8r9r:r; has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer unchangedr@r__annotations__rr rUrrrrr??s  r?c@s*eZdZdeeeeeffddZdS) IndexRolercCsd|jd}|jr|j}t|j|}n'|jdr0|jdd}d|jdd|ddfg}n |j}d|j|ddfg}tj|d}t jdd|gd }t ||}| ||||ggfS) NrDr!r)singlemainrBr%rE) r'rLhas_explicit_titletitlerrK startswithr rrTextrO)r target_idrarrrKtextrrrrU`s    z IndexRole.runN)r8r9r:rrr r rUrrrrr\_s"r\apprrcCs2|t|dt|dtdddddS)Nrbuiltinr)T)version env_versionparallel_read_safeparallel_write_safe) add_domainr add_directiver?add_roler\)rfrrrsetupvs  roN))r;typingrrrrrrdocutilsrdocutils.nodesr r docutils.parsers.rstr sphinxr sphinx.domainsr sphinx.environmentr sphinx.utilrrsphinx.util.docutilsrrsphinx.util.nodesrsphinx.util.typingrsphinx.applicationr getLoggerr8r.rr?r\r0rorrrrs&