o $a|V@sdZddlZddlZddlmZddlmZddlmZm Z m Z m Z m Z m Z mZmZmZmZddlmZddlmZddlmZmZmZdd lmZdd lmZdd lmZdd l m!Z!dd l"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)m*Z*m+Z+ddl,m-Z-m.Z.ddl/m0Z0ddl1m2Z2m3Z3m4Z4ddl5m6Z6ddl7m8Z8dd l9mZ:ddl;mZ>ddl?m@Z@ddlAmBZBmCZCerddlDmEZEddlFmGZGe>HeIZJddiZKGdddZLd d!d"e%d#dfd$d%ZMd d!d#e eNe ffd&d'ZOdS)(z sphinx.registry ~~~~~~~~~~~~~~~ Sphinx component registry. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N) import_module) MethodType) TYPE_CHECKINGAnyCallableDictIteratorListOptionalTupleTypeUnion)nodes)Input)ElementNode TextElement)Parser) Directive) Transform)iter_entry_points)Builder)Config)RemovedInSphinx60Warning)DomainIndexObjType) GenericObjectTarget)BuildEnvironment)ExtensionError SphinxErrorVersionRequirementError) Extension)__)XRefRole)logging)prefixed_warnings) RoleFunction TitleGetter)Sphinx) Documenterzsphinxjp.themecorez1.2c@seZdZdwddZdxdeededdfdd Zd d d eddfd dZ d d d edefddZ dxdee deddfddZ dedefddZ dedee fddZ dxded edeededdf ddZ dxded edeeefdeddf ddZ dxdedeededdfd d!Zd"ddd"gdfd#ed$ed%ed&ed'eed(ed)ededdfd*d+Z " " dyd#ed$ed%ed'eed(ededdfd,d-Zdxd.ed/ededdfd0d1Zdxd2eededdfd3d4Z d/edeefd5d6Z!de"eeeffd7d8Z#d d d9edefd:d;Z$d/ede%ee&fdee(j)deddfd?d@Z*dAee+dBe,eefddfdCdDZ-dedee(j)fdEdFZ.dedGe/de(j)fdHdIZ0dJee1ddfdKdLZ2deee1fdMdNZ3dJee1ddfdOdPZ4deee1fdQdRZ5dSedTedUddfdVdWZ6dXedYee/ee/ge/fddfdZd[Z7d9ed\e/ddfd]d^Z8d9ed\e/ddfd_d`Z9d edefdadbZ:dxd edceddeddfdedfZ; dzdAee<dgedhe=deddf didjZ>d edke,eefdle,eefddfdmdnZ?d edoeddfdpdqZ@d d dreddfdsdtZAd d de"eeffdudvZBdS){SphinxComponentRegistryreturnNcCsi|_i|_i|_g|_i|_i|_i|_i|_i|_i|_ i|_ i|_ d|_ i|_ g|_g|_g|_g|_i|_i|_i|_i|_i|_g|_dS)Nper_page)autodoc_attrgettrsbuilders documenters css_filesdomainsdomain_directivesdomain_indicesdomain_object_types domain_rolesenumerable_nodeshtml_inline_math_renderershtml_block_math_renderershtml_assets_policy html_themesjs_fileslatex_packageslatex_packages_after_hyperrefpost_transformssource_parsers source_inputs source_suffix translatorstranslation_handlers transformsselfrI1/usr/lib/python3/dist-packages/sphinx/registry.py__init__7s0 z SphinxComponentRegistry.__init__FbuilderoverridecCsftd|t|dsttd||j|jvr+|s+ttd|j|j|jjf||j|j<dS)Nz[app] adding builder: %rnamez(Builder class %s has no "name" attributez(Builder %r already exists (in module %s))loggerdebughasattrr r$rNr0 __module__)rHrLrMrIrIrJ add_builders  z#SphinxComponentRegistry.add_builderappr*rNc Csn|durdS||jvr5td|}zt|}Wnty+}z ttd||d}~ww|||jdSdS)Nzsphinx.buildersz?Builder name %s not registered or available through entry point)r0rnext StopIterationr!r$load_extension module_name)rHrTrN entry_points entry_pointexcrIrIrJpreload_builders    z'SphinxComponentRegistry.preload_buildercCs(||jvr ttd||j||S)NzBuilder name %s not registered)r0r!r$)rHrTrNrIrIrJcreate_builders z&SphinxComponentRegistry.create_builderdomaincCs>td||j|jvr|sttd|j||j|j<dS)Nz[app] adding domain: %rzdomain %s already registered)rOrPrNr3r r$)rHr^rMrIrIrJ add_domains z"SphinxComponentRegistry.add_domaincCs ||jvSN)r3)rHr^rIrIrJ has_domains z"SphinxComponentRegistry.has_domainenvccs|jD]B}||}|j|j|ji|j|j|ji|j |j |jg|j |ji D] \}}|||q:|VqdSr`)r3values directivesupdater4getrNrolesr7indicesextendr5r6itemsadd_object_type)rHrb DomainClassr^rNobjtyperIrIrJcreate_domainssz&SphinxComponentRegistry.create_domainsclscCftd|||f||jvrttd||j|i}||vr-|s-ttd||f|||<dS)Nz$[app] adding directive to domain: %rdomain %s not yet registeredz3The %r directive is already registered to domain %s)rOrPr3r r$r4 setdefault)rHr^rNrorMrdrIrIrJadd_directive_to_domains   z/SphinxComponentRegistry.add_directive_to_domainrolecCrp)Nz[app] adding role to domain: %rrqz.The %r role is already registered to domain %s)rOrPr3r r$r7rr)rHr^rNrtrMrgrIrIrJadd_role_to_domains   z*SphinxComponentRegistry.add_role_to_domainindexcCshtd||f||jvrttd||j|g}||vr-|s-ttd|j|f||dS)Nz [app] adding index to domain: %rrqz/The %r index is already registered to domain %s) rOrPr3r r$r5rrrNappend)rHr^rvrMrhrIrIrJadd_index_to_domains  z+SphinxComponentRegistry.add_index_to_domain directivenamerolename indextemplate parse_node ref_nodeclassobjnamedoc_field_typesc Cstd|||||||ft|ttf|t||d} |d|| |d|t|d|j di} || vrA|sAt t d|t |pE||| |<dS)Nz[app] adding object type: %r)r|r}rstdinnernodeclassz(The %r object_type is already registered)rOrPtyperobject staticmethodrsrur%r6rrr r$r) rHrzr{r|r}r~rrrM directive object_typesrIrIrJrks( z'SphinxComponentRegistry.add_object_typec Cstd|||||ft|ttfd|i}|d|||d|t|d|j di}||vr;|s;t t d|t |p?||||<dS)Nz[app] adding crossref type: %rr|rrz*The %r crossref_type is already registered) rOrPrrrrsrur%r6rrr r$r) rHrzr{r|r~rrMrrrIrIrJadd_crossref_types  z)SphinxComponentRegistry.add_crossref_typesuffixfiletypecCs:td||||jvr|sttd|||j|<dS)Nz"[app] adding source_suffix: %r, %rz&source_suffix %r is already registered)rOrPrCr r$)rHrrrMrIrIrJadd_source_suffixsz)SphinxComponentRegistry.add_source_suffixparsercCsDtd||jD]}||jvr|sttd|||j|<q dS)Nz%[app] adding search source_parser: %rz*source_parser for %r is already registered)rOrP supportedrAr r$)rHrrMrrIrIrJadd_source_parser s   z)SphinxComponentRegistry.add_source_parserc Cs8z|j|WSty}z ttd||d}~ww)Nz#Source parser for %s not registered)rAKeyErrorr!r$)rHrr[rIrIrJget_source_parsers  z)SphinxComponentRegistry.get_source_parsercC|jSr`)rArGrIrIrJget_source_parsersz*SphinxComponentRegistry.get_source_parsersfilenamecCs(||}|}t|tr|||Sr`)r isinstance SphinxParserset_application)rHrTr parser_classrrIrIrJcreate_source_parser!s   z,SphinxComponentRegistry.create_source_parserc CsPtdtz|j|WSty'z|jdWYSty&YYdSww)Nz9SphinxComponentRegistry.get_source_input() is deprecated.*)warningswarnrrBr)rHrrIrIrJget_source_input(s   z(SphinxComponentRegistry.get_source_input translatorcCs8td|||jvr|sttd|||j|<dS)Nz.[app] Change of translator for the %s builder.z Translator for %r already exists)rOrPrDr r$)rHrNrrMrIrIrJadd_translator5s z&SphinxComponentRegistry.add_translatornodekwargsc Ksztd|||D]/\}}|j|i}z |\}}||f||j<Wq ty:}z ttd||f|d}~wwdS)Nz)[app] adding translation_handlers: %r, %rzEkwargs for add_node() must be a (visit, depart) function tuple: %r=%r) rOrPrjrErr__name__ ValueErrorr r$) rHrr builder_namehandlersrEvisitdepartr[rIrIrJadd_translation_handlers<s"z0SphinxComponentRegistry.add_translation_handlerscCs|j|j|jSr`)rDrfrNdefault_translator_class)rHrLrIrIrJget_translator_classJs z,SphinxComponentRegistry.get_translator_classargsc Gs||}|sJd|j||}|j|jd}|dur&|j|ji}|D]\}\}}t|d|t|||rHt|d|t||q*|S)Nztranslator not found for %svisit_depart_)rrNrErfformatrjsetattrr) rHrLrtranslator_classrrrNrrrIrIrJcreate_translatorNs z)SphinxComponentRegistry.create_translator transformcCtd||j|dS)Nz[app] adding transform: %r)rOrPrFrwrHrrIrIrJ add_transform` z%SphinxComponentRegistry.add_transformcCrr`)rFrGrIrIrJget_transformsdrz&SphinxComponentRegistry.get_transformscCr)Nz[app] adding post transform: %r)rOrPr@rwrrIrIrJadd_post_transformgrz*SphinxComponentRegistry.add_post_transformcCrr`)r@rGrIrIrJget_post_transformskrz+SphinxComponentRegistry.get_post_transformsrm documenterr+cC||j|<dSr`)r1)rHrmrrIrIrJadd_documenternz&SphinxComponentRegistry.add_documentertyp attrgettercCrr`)r/)rHrrrIrIrJadd_autodoc_attrgetterqsz.SphinxComponentRegistry.add_autodoc_attrgetter attributescKs|j||fdSr`)r2rwrHrrrIrIrJ add_css_filesusz%SphinxComponentRegistry.add_css_filescKs"td|||j||fdS)Nz[app] adding js_file: %r, %r)rOrPr=rwrrIrIrJ add_js_filexsz#SphinxComponentRegistry.add_js_filecs"|j|j}tfdd|DS)Ncsg|] }|dkr|qS)rrI).0xrNrIrJ ~sz=SphinxComponentRegistry.has_latex_package..)r>r?bool)rHrNpackagesrIrrJhas_latex_package|s z)SphinxComponentRegistry.has_latex_packageoptionsafter_hyperrefcCsP||r td|td||r|j||fdS|j||fdS)Nz#latex package '%s' already includedz[app] adding latex package: %r)rrOrrPr?rwr>)rHrNrrrIrIrJadd_latex_packages  z)SphinxComponentRegistry.add_latex_packagefigtype title_gettercCs@td|||||jvr|sttd|||f|j|<dS)Nz*[app] adding enumerable node: (%r, %r, %r)z%enumerable_node %r already registered)rOrPr8r r$)rHrrrrMrIrIrJadd_enumerable_nodesz+SphinxComponentRegistry.add_enumerable_nodeinline_renderersblock_rendererscCsBtd|||||jvrttd|||j|<||j|<dS)Nz+[app] adding html_math_renderer: %s, %r, %rz&math renderer %s is already registered)rOrPr9r r$r:)rHrNrrrIrIrJadd_html_math_renderers  z.SphinxComponentRegistry.add_html_math_renderer theme_pathcCrr`)r<)rHrNrrIrIrJadd_html_themerz&SphinxComponentRegistry.add_html_themeextnamec Csd||jvrdS|tvrttd|t|dStd|}t|zt|}Wn!tyJ}zttdt t td|||d}~wwt |dd}|dur`ttd|i}nz||}Wnt y}}z t td||f|d}~ww|duri}nt|tsttd |i}t||fi||j|<WddS1swYdS) zLoad a Sphinx extension.Nz\the extension %r was already merged with Sphinx since version %s; this extension is ignored.zwhile setting up extension %s:zOriginal exception: zCould not import extension %ssetupzMextension %r has no setup() function; is it really a Sphinx extension module?zpThe %s extension used by this project needs at least Sphinx v%s; it therefore cannot be built with this version.zuextension %r returned an unsupported object from its setup() function; it should return None or a metadata dictionary) extensionsEXTENSION_BLACKLISTrOwarningr$r'r ImportErrorverbose traceback format_excr getattrr"rdictr#)rHrTrprefixmoderrrmetadatarIrIrJrWs^           "z&SphinxComponentRegistry.load_extensioncCs,ddlm}dd|jD}||d<|S)Nr) ENV_VERSIONcSs&i|]}|jdr|j|jdqS) env_version)rrfrN)rextrIrIrJ s z:SphinxComponentRegistry.get_envversion..sphinx)sphinx.environmentrrrc)rHrTr envversionrIrIrJget_envversions z&SphinxComponentRegistry.get_envversion)r-N)F)ryNryF)NF)CrrR __qualname__rKr rrrSstrr\r]rr_rarrrnrrsr r(r%rurrxrrr rkrrrrrrrrr rrr NodeVisitorrrr rrrrrrrrrrrrrrrrr)rrrrWrrIrIrIrJr,6s M                     .r,rTr*configr-cCs\|jjD]\}}||jjvr||jj|<q|jj|dur%||jj|<q|jj|j_dS)zDMerge any user-specified source_suffix with any added by extensions.N)registryrCrjr)rTrrrrIrIrJmerge_source_suffixs  rcCs|jdtddddddS)Nz config-initedi )prioritybuiltinT)versionparallel_read_safeparallel_write_safe)connectr)rTrIrIrJrs r)P__doc__rr importlibrtypesrtypingrrrrrr r r r r docutilsr docutils.iordocutils.nodesrrrdocutils.parsersrdocutils.parsers.rstrdocutils.transformsr pkg_resourcesrsphinx.buildersr sphinx.configrsphinx.deprecationrsphinx.domainsrrrsphinx.domains.stdrrrr sphinx.errorsr r!r"sphinx.extensionr# sphinx.localer$sphinx.parsersr sphinx.rolesr% sphinx.utilr&sphinx.util.loggingr'sphinx.util.typingr(r)sphinx.applicationr*sphinx.ext.autodocr+ getLoggerrrOrr,rrrrIrIrIrJsN   0                   "