
    QjfAX                       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
rZd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lEmFZFmGZGmHZHmIZI  e(j                  eK      ZLdd d!ZM G d" d#      ZNd&d$ZOd'd%ZPy)(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)ExtensionMetadataRoleFunctionTitleGetter_ExtensionSetupFuncz1.2z2.0.0)zsphinxjp.themecoresphinxprettysearchresultsc                     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    /lib/python3.12/site-packages/sphinx/registry.py__init__z SphinxComponentRegistry.__init__<   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   rP   r3   
__module__)rK   builderoverrides      rL   add_builderz#SphinxComponentRegistry.add_builder   s    /9w' $N!ORY!YZZ<<4==( $N!O"),,gll0K0V0V!W"X Y Y&-gll#rN   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)r3   r   KeyErrorr   r   load_extensionmodule)rK   apprP   builder_entry_pointsentry_pointexcs         rL   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)r3   r   r   )rK   r]   rP   envs       rL   create_builderz&SphinxComponentRegistry.create_builder   s<    t}}$b!ABTIJJ"t}}T"3,,rN   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)rQ   rR   rP   r6   r   r   )rK   domainrV   s      rL   
add_domainz"SphinxComponentRegistry.add_domain   sO    .7;;$,,&x $B!Cfkk!QRR$*V[[!rN   c                    || j                   v S N)r6   )rK   rf   s     rL   
has_domainz"SphinxComponentRegistry.has_domain   s    %%rN   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ri   )r6   values
directivesupdater7   getrP   rolesr:   indicesextendr8   r9   itemsadd_object_type)rK   rc   DomainClassrf   rP   objtypes         rL   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)rQ   rR   r6   r   r   r7   
setdefault)rK   rf   rP   clsrV   rm   s         rL   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rN   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: %rry   z.The %r role is already registered to domain %s)rQ   rR   r6   r   r   r:   rz   )rK   rf   rP   rolerV   rp   s         rL   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rN   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: %rry   z/The %r index is already registered to domain %s)	rQ   rR   r6   r   r   r8   rz   rP   append)rK   rf   indexrV   rq   s        rL   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rN   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)rQ   rR   typer   objectstaticmethodr|   r   r   r9   rz   r   r   r   )rK   directivenamerolenamer   r   ref_nodeclassobjnamer   rV   	directiveobject_typess              rL   rt   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]#rN   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)rQ   rR   r   r   r   r|   r   r   r9   rz   r   r   r   )	rK   r   r   r   r   r   rV   r   r   s	            rL   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]#rN   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)rQ   rR   rE   r   r   )rK   suffixfiletyperV   s       rL   add_source_suffixz)SphinxComponentRegistry.add_source_suffix  sJ    968LT''' $L!MPV!VWW%-6"rN   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)rQ   rR   	supportedrD   r   r   )rK   parserrV   r   s       rL   add_source_parserz)SphinxComponentRegistry.add_source_parser   se    <fE (( 	3H4...x$R(T%U%-&. / /,2D)		3rN   c                t    	 | j                   |   S # t        $ r}t        t        d      |z        |d }~ww xY w)Nz#Source parser for %s not registered)rD   rZ   r   r   )rK   r   r`   s      rL   get_source_parserz)SphinxComponentRegistry.get_source_parser*  sD    	]&&x00 	]b!FG(RSY\\	]s    	727c                    | j                   S ri   )rD   rJ   s    rL   get_source_parsersz*SphinxComponentRegistry.get_source_parsers0  s    """rN   c                x    | j                  |      } |       }t        |t              r|j                  |       |S ri   )r   
isinstanceSphinxParserset_application)rK   r]   filenameparser_classr   s        rL   create_source_parserz,SphinxComponentRegistry.create_source_parser3  s6    --h7fl+""3'rN   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)rQ   rR   rF   r   r   )rK   rP   
translatorrV   s       rL   add_translatorz&SphinxComponentRegistry.add_translator:  sG    EtL4###H $F!G$!NOO!+rN   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)	rQ   rR   rs   rG   rz   __name__
ValueErrorr   r   )	rK   nodekwargsbuilder_namehandlersrG   visitdepartr`   s	            rL   add_translation_handlersz0SphinxComponentRegistry.add_translation_handlersA  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 )rF   rP   rZ   default_translator_classAttributeError)rK   rU   errmsgs       rL   get_translator_classz,SphinxComponentRegistry.get_translator_classR  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   rG   ro   rP   formatrs   setattrr   )	rK   rU   argstranslator_classr   r   rP   r   r   s	            rL   create_translatorz)SphinxComponentRegistry.create_translator\  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
 rN   c                f    t         j                  d|       | j                  j                  |       y )Nz[app] adding transform: %r)rQ   rR   rH   r   rK   	transforms     rL   add_transformz%SphinxComponentRegistry.add_transformm  s#    19=y)rN   c                    | j                   S ri   )rH   rJ   s    rL   get_transformsz&SphinxComponentRegistry.get_transformsq  s    rN   c                f    t         j                  d|       | j                  j                  |       y )Nz[app] adding post transform: %r)rQ   rR   rC   r   r   s     rL   add_post_transformz*SphinxComponentRegistry.add_post_transformt  s%    6	B##I.rN   c                    | j                   S ri   )rC   rJ   s    rL   get_post_transformsz+SphinxComponentRegistry.get_post_transformsx  s    ###rN   c                "    || j                   |<   y ri   )r4   )rK   rv   
documenters      rL   add_documenterz&SphinxComponentRegistry.add_documenter{  s    $.!rN   c                "    || j                   |<   y ri   )r2   )rK   typ
attrgetters      rL   add_autodoc_attrgetterz.SphinxComponentRegistry.add_autodoc_attrgetter~  s    '1$rN   c                >    | j                   j                  ||f       y ri   )r5   r   rK   r   
attributess      rL   add_css_filesz%SphinxComponentRegistry.add_css_files  s    x45rN   c                l    t         j                  d||       | j                  j                  ||f       y )Nz[app] adding js_file: %r, %r)rQ   rR   r@   r   r   s      rL   add_js_filez#SphinxComponentRegistry.add_js_file  s*    3XzJh
34rN   c                    | j                   | j                  z   }t        |D cg c]  }|d   |k(  s| c}      S c c}w )Nr   )rA   rB   bool)rK   rP   packagesxs       rL   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   rQ   warningrR   rB   r   rA   )rK   rP   optionsafter_hyperrefs       rL   add_latex_packagez)SphinxComponentRegistry.add_latex_package  sc     !!$'NN@$G5t<..55tWoF&&g7rN   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)rQ   rR   r;   r   r   )rK   r   figtypetitle_getterrV   s        rL   add_enumerable_nodez+SphinxComponentRegistry.add_enumerable_node  sS     	A4R^_4((( $K!Lt!STT'.&=d#rN   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)rQ   rR   r<   r   r   r=   )rK   rP   inline_renderersblock_rendererss       rL   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 'rN   c                "    || j                   |<   y ri   )r?   )rK   rP   
theme_paths      rL   add_html_themez&SphinxComponentRegistry.add_html_theme  s    !+rN   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_BLACKLISTrQ   r   r   r   r   ImportErrorverbose	traceback
format_excr   getattrr   r   dictr   )rK   r]   extnameprefixmodr   r   metadatas           rL   r[   z&SphinxComponentRegistry.load_extension  s   cnn$))NN2 G H"$7$@B  45?v&  	J3#G, 18Wd0KE}r #?  @AHJ.0$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   rl   r   ro   rP   )rK   r]   r   ext
envversions        rL   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 ri   )rI   rZ   r   )rK   r]   r   	publishers       rL   get_publisherz%SphinxComponentRegistry.get_publisher  sH    	??8,, 		$S(3	$-!s    	)returnNone)F)rU   ztype[Builder]rV   r   r	  r
  )r]   r$   rP   strr	  r
  )r]   r$   rP   r  rc   r'   r	  r%   )rf   ztype[Domain]rV   r   r	  r
  )rf   r  r	  r   )rc   r'   r	  zIterator[Domain])
rf   r  rP   r  r{   ztype[Directive]rV   r   r	  r
  )
rf   r  rP   r  r~   zRoleFunction | XRefRolerV   r   r	  r
  )rf   r  r   ztype[Index]rV   r   r	  r
  ) NNr   F)r   r  r   r  r   r  r   zCallable | Noner   type[TextElement] | Noner   r  r   r   rV   r   r	  r
  )r  Nr  F)r   r  r   r  r   r  r   r  r   r  rV   r   r	  r
  )r   r  r   r  rV   r   r	  r
  )r   type[Parser]rV   r   r	  r
  )r   r  r	  r  )r	  zdict[str, type[Parser]])r]   r$   r   r  r	  r   )rP   r  r   type[nodes.NodeVisitor]rV   r   r	  r
  )r   ztype[Element]r   z tuple[Callable, Callable | None]r	  r
  )rU   r%   r	  r  )rU   r%   r   r   r	  znodes.NodeVisitor)r   ztype[Transform]r	  r
  )r	  zlist[type[Transform]])rv   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
  )rP   r  r	  r   )rP   r  r   r  r   r   r	  r
  )NF)
r   z
type[Node]r   r  r   zTitleGetter | NonerV   r   r	  r
  )rP   r  r   'tuple[Callable, Callable | None] | Noner   r  r	  r
  )rP   r  r   r  r	  r
  )r]   r$   r   r  r	  r
  )r]   r$   r	  zdict[str, int])r]   r$   r   r  r	  r   )(r   rT   __qualname__rM   rW   ra   rd   rg   rj   rw   r|   r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r  r  r  rN   rL   r/   r/   ;   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\rN   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)registryrE   rs   config)r]   r  r   r   s       rL   merge_source_suffixr    s    LL66<<> 8111/7CJJ$$V,ZZ%%f-5 08CJJ$$V,8 "%!9!9CLLrN   c                >    | j                  dt        d       ddddS )Nzconfig-initedi   )prioritybuiltinT)versionparallel_read_safeparallel_write_safe)connectr  )r]   s    rL   r   r     s*    KK!4sKC "# rN   )r]   r$   r  r&   r	  r
  )r]   r$   r	  r)   )Q__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*   r+   r,   	getLoggerr   rQ   r   r/   r  r   r  rN   rL   <module>r?     s      " 
  #  / /w// 1 1 4 N N & &  1 !  12'99'.-)'$3-  
		8	$
  !( x xv:rN   