
    FeW                       d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZmZ ej                  dk\  rddlmZ nddlmZ dd	lmZmZmZ dd
lmZ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$ ddl%m&Z& ddl'm(Z( ddl)m*Z* e
rVddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m#Z# ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZG  e(j                  eI      ZJdd iZK G d! d"      ZLd%d#ZMd&d$ZNy)'zSphinx component registry.    )annotationsN)import_module)
MethodType)TYPE_CHECKINGAnyCallable)   
   )entry_points)DomainIndexObjType)GenericObjectTarget)ExtensionErrorSphinxErrorVersionRequirementError)	Extension)create_publisher)__)Parser)XRefRole)logging)prefixed_warnings)IteratorSequence)nodes)	Publisher)ElementNodeTextElement)	Directive)	Transform)Sphinx)Builder)Config)BuildEnvironment)
Documenter)RoleFunctionTitleGetterzsphinxjp.themecorez1.2c                     e Zd Zd'dZd(d)dZd*dZd+dZd(d,dZd-dZd.dZ		 d(	 	 	 	 	 d/dZ
	 d(	 	 	 	 	 d0d	Z	 d(	 	 	 d1d
Z	 	 	 	 	 	 d2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d3dZ	 	 	 	 d4	 	 	 	 	 	 	 	 	 	 	 	 	 d5dZd(d6dZd(d7dZd8dZd9dZd:dZ	 d(	 	 	 d;dZ	 	 	 	 	 	 d<dZd=dZd>dZd?dZd@dZd?dZd@dZdAdZ	 	 	 	 dBdZdCdZdDdZdEdZ 	 d(	 	 	 	 	 	 	 dFd Z!	 dG	 	 	 	 	 	 	 	 	 dHd!Z"	 	 	 	 	 	 	 	 dId"Z#dJd#Z$dKd$Z%dLd%Z&dMd&Z'y)NSphinxComponentRegistryc                T   i | _         i | _        i | _        g | _        i | _        i | _        i | _        i | _        i | _        i | _	        i | _
        i | _        d| _        i | _        g | _        g | _        g | _        g | _        i | _        i | _        i | _        i | _        g | _        i | _        y )Nper_page)autodoc_attrgettrsbuildersdocumenters	css_filesdomainsdomain_directivesdomain_indicesdomain_object_typesdomain_rolesenumerable_nodeshtml_inline_math_renderershtml_block_math_renderershtml_assets_policyhtml_themesjs_fileslatex_packageslatex_packages_after_hyperrefpost_transformssource_parserssource_suffixtranslatorstranslation_handlers
transforms
publishersselfs    1/usr/lib/python3/dist-packages/sphinx/registry.py__init__z SphinxComponentRegistry.__init__6   s    NP 35 9; <> 13 IK =? CE  LN SU
 SU 	' RT 	& (2 ,. BD =?KM* 79 8: .0 @B ]_! 24 13    c                d   t         j                  d|       t        |d      st        t	        d      |z        |j
                  | j                  v rF|sDt        t	        d      |j
                  | j                  |j
                     j                  fz        || j                  |j
                  <   y )Nz[app] adding builder: %rnamez(Builder class %s has no "name" attributez(Builder %r already exists (in module %s))loggerdebughasattrr   r   rM   r0   
__module__)rH   builderoverrides      rI   add_builderz#SphinxComponentRegistry.add_builder   s    /9w' $N!ORY!YZZ<<4==( $N!O"),,gll0K0V0V!W"X Y Y&-gll#rK   c                    |y || j                   vr/t        d      }	 ||   }| j                  ||j                         y y # t        $ r}t        t	        d      |z        |d }~ww xY w)Nzsphinx.builders)groupz?Builder name %s not registered or available through entry point)r0   r   KeyErrorr   r   load_extensionmodule)rH   apprM   builder_entry_pointsentry_pointexcs         rI   preload_builderz'SphinxComponentRegistry.preload_builder   s    <t}}$#/6G#H N248
 [%7%78 %  N!" &< #=?C#D EJMNNs   A 	A(A##A(c                x    || j                   vrt        t        d      |z         | j                   |   ||      S )NzBuilder name %s not registered)r0   r   r   )rH   rZ   rM   envs       rI   create_builderz&SphinxComponentRegistry.create_builder   s<    t}}$b!ABTIJJ"t}}T"3,,rK   c                    t         j                  d|       |j                  | j                  v r#|s!t	        t        d      |j                  z        || j                  |j                  <   y )Nz[app] adding domain: %rzdomain %s already registered)rN   rO   rM   r3   r   r   )rH   domainrS   s      rI   
add_domainz"SphinxComponentRegistry.add_domain   sO    .7;;$,,&x $B!Cfkk!QRR$*V[[!rK   c                    || j                   v S N)r3   )rH   rc   s     rI   
has_domainz"SphinxComponentRegistry.has_domain   s    %%rK   c              #  |  K   | j                   j                         D ]  } ||      }|j                  j                  | j                  j                  |j                  i              |j                  j                  | j                  j                  |j                  i              |j                  j                  | j                  j                  |j                  g              | j                  j                  |j                  i       j                         D ]  \  }}|j                  ||        |  y wrf   )r3   values
directivesupdater4   getrM   rolesr7   indicesextendr5   r6   itemsadd_object_type)rH   r`   DomainClassrc   rM   objtypes         rI   create_domainsz&SphinxComponentRegistry.create_domains   s     <<..0 
	K %F $$T%;%;%?%?R%PQLL 1 1 5 5fkk2 FGNN!!$"5"5"9"9&++r"JK!%!9!9!=!=fkk2!N!T!T!V 6g&&tW56 L
	s   D:D<c                    t         j                  d|||f       || j                  vrt        t	        d      |z        | j
                  j                  |i       }||v r|st        t	        d      ||fz        |||<   y )Nz$[app] adding directive to domain: %rdomain %s not yet registeredz3The %r directive is already registered to domain %s)rN   rO   r3   r   r   r4   
setdefault)rH   rc   rM   clsrS   rj   s         rI   add_directive_to_domainz/SphinxComponentRegistry.add_directive_to_domain   s    ;fdC=PQ% $B!Cf!LMM151G1G1R1RSY[]1^
:h $Y!Z"&"0 1 1
4rK   c                    t         j                  d|||f       || j                  vrt        t	        d      |z        | j
                  j                  |i       }||v r|st        t	        d      ||fz        |||<   y )Nz[app] adding role to domain: %rrv   z.The %r role is already registered to domain %s)rN   rO   r3   r   r   r7   rw   )rH   rc   rM   rolerS   rm   s         rI   add_role_to_domainz*SphinxComponentRegistry.add_role_to_domain   s     	6t8LM% $B!Cf!LMM!!,,VR85= $T!U"&"0 1 1drK   c                *   t         j                  d||f       || j                  vrt        t	        d      |z        | j
                  j                  |g       }||v r%|s#t        t	        d      |j                  |fz        |j                  |       y )Nz [app] adding index to domain: %rrv   z/The %r index is already registered to domain %s)	rN   rO   r3   r   r   r5   rw   rM   append)rH   rc   indexrS   rn   s        rI   add_index_to_domainz+SphinxComponentRegistry.add_index_to_domain   s    7&%I% $B!Cf!LMM%%00<GH $U!V"'**f!5"6 7 7urK   Nc	           
        t         j                  d|||||||f       t        |t        t        f||xr t        |      |d      }	| j                  d||	       | j                  d|t        |             | j                  j                  di       }
||
v r|st        t        d      |z        t        |xs ||      |
|<   y )Nz[app] adding object type: %r)indextemplate
parse_nodedoc_field_typesstdinnernodeclassz(The %r object_type is already registered)rN   rO   typer   objectstaticmethodry   r|   r   r6   rw   r   r   r   )rH   directivenamerolenamer   r   ref_nodeclassobjnamer   rS   	directiveobject_typess              rI   rq   z'SphinxComponentRegistry.add_object_type   s     	3#X}j#Wo?	@
 '0+8(2(O|J7O-<>?	 	$$UM9Ex1WX//::5"EL( $N!O!."/ 0 0&-g.F&Q]#rK   c                d   t         j                  d|||||f       t        |t        t        fd|i      }| j                  d||       | j                  d|t        |             | j                  j                  di       }||v r|st        t        d      |z        t        |xs ||      ||<   y )Nz[app] adding crossref type: %rr   r   r   z*The %r crossref_type is already registered)rN   rO   r   r   r   ry   r|   r   r6   rw   r   r   r   )	rH   r   r   r   r   r   rS   r   r   s	            rI   add_crossref_typez)SphinxComponentRegistry.add_crossref_type   s     	5#X}mWU	W  &))=9;	 	$$UM9Ex1WX//::5"EL( $P!Q!."/ 0 0&-g.F&Q]#rK   c                    t         j                  d||       || j                  v r|st        t	        d      |z        || j                  |<   y )Nz"[app] adding source_suffix: %r, %rz&source_suffix %r is already registered)rN   rO   rB   r   r   )rH   suffixfiletyperS   s       rI   add_source_suffixz)SphinxComponentRegistry.add_source_suffix  sJ    968LT''' $L!MPV!VWW%-6"rK   c                    t         j                  d|       |j                  D ]8  }|| j                  v r|st	        t        d      |z        || j                  |<   : y )Nz%[app] adding search source_parser: %rz*source_parser for %r is already registered)rN   rO   	supportedrA   r   r   )rH   parserrS   r   s       rI   add_source_parserz)SphinxComponentRegistry.add_source_parser  se    <fE (( 	3H4...x$R(T%U%-&. / /,2D)		3rK   c                t    	 | j                   |   S # t        $ r}t        t        d      |z        |d }~ww xY w)Nz#Source parser for %s not registered)rA   rW   r   r   )rH   r   r]   s      rI   get_source_parserz)SphinxComponentRegistry.get_source_parser$  sD    	]&&x00 	]b!FG(RSY\\	]s    	727c                    | j                   S rf   )rA   rG   s    rI   get_source_parsersz*SphinxComponentRegistry.get_source_parsers*  s    """rK   c                x    | j                  |      } |       }t        |t              r|j                  |       |S rf   )r   
isinstanceSphinxParserset_application)rH   rZ   filenameparser_classr   s        rI   create_source_parserz,SphinxComponentRegistry.create_source_parser-  s6    --h7fl+""3'rK   c                    t         j                  d|       || j                  v r|st        t	        d      |z        || j                  |<   y )Nz.[app] Change of translator for the %s builder.z Translator for %r already exists)rN   rO   rC   r   r   )rH   rM   
translatorrS   s       rI   add_translatorz&SphinxComponentRegistry.add_translator4  sG    EtL4###H $F!G$!NOO!+rK   c                   t         j                  d||       |j                         D ]8  \  }}| j                  j	                  |i       }	 |\  }}||f||j
                  <   : y # t        $ r}t        t        d      ||fz        |d }~ww xY w)Nz)[app] adding translation_handlers: %r, %rzEkwargs for add_node() must be a (visit, depart) function tuple: %r=%r)	rN   rO   rp   rD   rw   __name__
ValueErrorr   r   )	rH   nodekwargsbuilder_namehandlersrD   visitdepartr]   s	            rI   add_translation_handlersz0SphinxComponentRegistry.add_translation_handlers;  s    
 	@$O&,lln 		"L(#'#<#<#G#GVX#Y  (v7<fo$T]]3			
  $ / 03?2JK s   A$$	B-BBc                    	 | j                   |j                     S # t        $ r< 	 |j                  cY S # t        $ r }d|j                   }t	        |      |d }~ww xY ww xY w)Nztranslator not found for )rC   rM   rW   default_translator_classAttributeError)rH   rR   errmsgs       rI   get_translator_classz,SphinxComponentRegistry.get_translator_classL  si    	3##GLL11 	33777! 31',,@$S)s23	3s(    	A 3A 	AAAA c           	     r   | j                  |      } || }| j                  j                  |j                  d       }|&| j                  j                  |j                  i       }|j                         D ]?  \  }\  }}t        |d|z   t        ||             |s&t        |d|z   t        ||             A |S )Nvisit_depart_)r   rD   rl   rM   formatrp   setattrr   )	rH   rR   argstranslator_classr   r   rM   r   r   s	            rI   create_translatorz)SphinxComponentRegistry.create_translatorV  s    44W=%t,
 ,,00tD0044W^^RHH%-^^%5 	V!D/5&J4E:1NO
I$4j6TU	V
 rK   c                f    t         j                  d|       | j                  j                  |       y )Nz[app] adding transform: %r)rN   rO   rE   r~   rH   	transforms     rI   add_transformz%SphinxComponentRegistry.add_transformg  s#    19=y)rK   c                    | j                   S rf   )rE   rG   s    rI   get_transformsz&SphinxComponentRegistry.get_transformsk  s    rK   c                f    t         j                  d|       | j                  j                  |       y )Nz[app] adding post transform: %r)rN   rO   r@   r~   r   s     rI   add_post_transformz*SphinxComponentRegistry.add_post_transformn  s%    6	B##I.rK   c                    | j                   S rf   )r@   rG   s    rI   get_post_transformsz+SphinxComponentRegistry.get_post_transformsr  s    ###rK   c                "    || j                   |<   y rf   )r1   )rH   rs   
documenters      rI   add_documenterz&SphinxComponentRegistry.add_documenteru  s    $.!rK   c                "    || j                   |<   y rf   )r/   )rH   typ
attrgetters      rI   add_autodoc_attrgetterz.SphinxComponentRegistry.add_autodoc_attrgetterx  s    '1$rK   c                >    | j                   j                  ||f       y rf   )r2   r~   rH   r   
attributess      rI   add_css_filesz%SphinxComponentRegistry.add_css_files|  s    x45rK   c                l    t         j                  d||       | j                  j                  ||f       y )Nz[app] adding js_file: %r, %r)rN   rO   r=   r~   r   s      rI   add_js_filez#SphinxComponentRegistry.add_js_file  s*    3XzJh
34rK   c                    | j                   | j                  z   }t        |D cg c]  }|d   |k(  s| c}      S c c}w )Nr   )r>   r?   bool)rH   rM   packagesxs       rI   has_latex_packagez)SphinxComponentRegistry.has_latex_package  s;    &&)K)KK91AaDDLQ9::9s   <<c                    | j                  |      rt        j                  d|       t        j                  d|       |r| j                  j                  ||f       y | j                  j                  ||f       y )Nz#latex package '%s' already includedz[app] adding latex package: %r)r   rN   warningrO   r?   r~   r>   )rH   rM   optionsafter_hyperrefs       rI   add_latex_packagez)SphinxComponentRegistry.add_latex_package  sc     !!$'NN@$G5t<..55tWoF&&g7rK   c                    t         j                  d|||       || j                  v r|st        t	        d      |z        ||f| j                  |<   y )Nz*[app] adding enumerable node: (%r, %r, %r)z%enumerable_node %r already registered)rN   rO   r8   r   r   )rH   r   figtypetitle_getterrS   s        rI   add_enumerable_nodez+SphinxComponentRegistry.add_enumerable_node  sS     	A4R^_4((( $K!Lt!STT'.&=d#rK   c                    t         j                  d|||       || j                  v rt        t	        d      |z        ||| j                  |<   ||| j
                  |<   y y )Nz+[app] adding html_math_renderer: %s, %r, %rz&math renderer %s is already registered)rN   rO   r9   r   r   r:   )rH   rM   inline_renderersblock_rendererss       rI   add_html_math_rendererz.SphinxComponentRegistry.add_html_math_renderer  sq     	B+_	>4222 $L!MPT!TUU'4DD++D1&3BD**40 'rK   c                "    || j                   |<   y rf   )r<   )rH   rM   
theme_paths      rI   add_html_themez&SphinxComponentRegistry.add_html_theme  s    !+rK   c                   ||j                   v ry|t        v r(t        j                  t	        d      |t        |          yt	        d      |z  }t        |      5  	 t        |      }t        |dd      }|"t        j                  t	        d      |       i }n		  ||      }|i }n1t        |t              s!t        j                  t	        d	      |       i }t!        ||fi ||j                   |<   ddd       y# t        $ rQ}t        j                  t	        d      t        j                         z          t        t	        d      |z  |      |d}~ww xY w# t        $ r}t        t	        d      ||fz        |d}~ww xY w# 1 sw Y   yxY w)
zLoad a Sphinx extension.Nz\the extension %r was already merged with Sphinx since version %s; this extension is ignored.zwhile setting up extension %s:zOriginal exception:
zCould not import extension %ssetupzMextension %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)
extensionsEXTENSION_BLACKLISTrN   r   r   r   r   ImportErrorverbose	traceback
format_excr   getattrr   r   dictr   )rH   rZ   extnameprefixmodr   r   metadatas           rI   rX   z&SphinxComponentRegistry.load_extension  s   cnn$))NN2 G H"$7$@B  45?v&  	J3#G, C$/E}r #?  @AHJ+-$SzH $/r #8  9:AC &/&I&ICNN7#A 	J  	J  3r"9:Y=Q=Q=SST$R(G%H7%R%(*/233 / 1 & '*138 	! 	J  	JsV   FC9&1FE AF9	EAEEF	E>E99E>>FF
c                    ddl m} |j                  j                         D ci c]7  }|j                  j                  d      r|j                  |j                  d   9 }}||d<   |S c c}w )Nr   )ENV_VERSIONenv_versionsphinx)sphinx.environmentr   r   ri   r   rl   rM   )rH   rZ   r   ext
envversions        rI   get_envversionz&SphinxComponentRegistry.get_envversion  sg    2GJ~~G\G\G^ :))-8 hh] ;; :
 :*
8:s   <A(c                z    	 | j                   |   S # t        $ r Y nw xY wt        ||      }|| j                   |<   |S rf   )rF   rW   r   )rH   rZ   r   	publishers       rI   get_publisherz%SphinxComponentRegistry.get_publisher  sH    	??8,, 		$S(3	$-!s    	)returnNone)F)rR   ztype[Builder]rS   r   r  r  )rZ   r$   rM   strr  r  )rZ   r$   rM   r  r`   r'   r  r%   )rc   ztype[Domain]rS   r   r  r  )rc   r  r  r   )r`   r'   r  zIterator[Domain])
rc   r  rM   r  rx   ztype[Directive]rS   r   r  r  )
rc   r  rM   r  r{   zRoleFunction | XRefRolerS   r   r  r  )rc   r  r   ztype[Index]rS   r   r  r  ) NNr	   F)r   r  r   r  r   r  r   zCallable | Noner   type[TextElement] | Noner   r  r   r   rS   r   r  r  )r	  Nr	  F)r   r  r   r  r   r  r   r  r   r  rS   r   r  r  )r   r  r   r  rS   r   r  r  )r   type[Parser]rS   r   r  r  )r   r  r  r  )r  zdict[str, type[Parser]])rZ   r$   r   r  r  r   )rM   r  r   type[nodes.NodeVisitor]rS   r   r  r  )r   ztype[Element]r   z tuple[Callable, Callable | None]r  r  )rR   r%   r  r  )rR   r%   r   r   r  znodes.NodeVisitor)r   ztype[Transform]r  r  )r  zlist[type[Transform]])rs   r  r   ztype[Documenter]r  r  )r   r   r   zCallable[[Any, str, Any], Any]r  r  )r   r  r   r   r  r  )r   
str | Noner   r   r  r  )rM   r  r  r   )rM   r  r   r  r   r   r  r  )NF)
r   z
type[Node]r   r  r   zTitleGetter | NonerS   r   r  r  )rM   r  r   'tuple[Callable, Callable | None] | Noner   r  r  r  )rM   r  r   r  r  r  )rZ   r$   r   r  r  r  )rZ   r$   r  zdict[str, str])rZ   r$   r   r  r  r   )(r   rQ   __qualname__rJ   rT   r^   ra   rd   rg   rt   ry   r|   r   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   r  r  r
  rK   rI   r,   r,   5   s   M3^.9-+& HM
%4
@D
QU
 LQ
!8
DH
 $
 .3	&*	7;	  &*26$&RR R 	R
 $R 0R R "R R 
RF  26RR R 	R
 0R R R 
R4.3]# ).,!%,26, 3 
	"3"*/$/2+I2NR265;
 FK
8
8",
8>B
8	
8  CH		>	> 	> )		> <@		>
 
	>CC BC A	C
 
C ,,J\rK   r,   c                p   | j                   j                  j                         D ]j  \  }}|| j                  j                  vr|| j                  j                  |<   8| j                  j                  |   R|| j                  j                  |<   l | j                  j                  | j                   _        y)zDMerge any user-specified source_suffix with any added by extensions.N)registryrB   rp   config)rZ   r  r   r   s       rI   merge_source_suffixr    s    LL66<<> 8111/7CJJ$$V,ZZ%%f-5 08CJJ$$V,8 "%!9!9CLLrK   c                >    | j                  dt        d       ddddS )Nzconfig-initedi   )prioritybuiltinT)versionparallel_read_safeparallel_write_safe)connectr  )rZ   s    rI   r   r     s*    KK!4sKC "# rK   )rZ   r$   r  r&   r  r  )rZ   r$   r  zdict[str, Any])O__doc__
__future__r   sysr   	importlibr   typesr   typingr   r   r   version_infoimportlib.metadatar   importlib_metadatasphinx.domainsr   r   r   sphinx.domains.stdr   r   sphinx.errorsr   r   r   sphinx.extensionr   	sphinx.ior   sphinx.localer   sphinx.parsersr   r   sphinx.rolesr   sphinx.utilr   sphinx.util.loggingr   collections.abcr   r   docutilsr   docutils.corer   docutils.nodesr   r    r!   docutils.parsersdocutils.parsers.rstr"   docutils.transformsr#   sphinx.applicationr$   sphinx.buildersr%   sphinx.configr&   r   r'   sphinx.ext.autodocr(   sphinx.util.typingr)   r*   	getLoggerr   rN   r   r,   r  r   r
  rK   rI   <module>r<     s      " 
  #  / /w// 1 1 4 N N & &  1 !  12'99'.-)'$3-<			8	$
 % 
x xv:rK   