
    }cf                        d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZ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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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlDmFZF 	 ddlGZGn# eH$ r dZGY nw xY werddlImJZJ  e(jK        eL          ZM G d d          ZNdS )z$Builder superclass for all builders.    N)path)TYPE_CHECKINGAnyDictIterableListOptionalSequenceSetTupleTypeUnion)nodes)Node)Config)CONFIG_CHANGED_REASON	CONFIG_OKBuildEnvironment)ImageAdapter)SphinxError)EventManager)__)UnicodeDecodeErrorHandlerget_filetypeimport_objectloggingprogress_messagerststatus_iterator)
BuildPhase)bold)sphinx_domains)CatalogInfoCatalogRepositorydocname_to_domain)SEP	ensuredirrelative_urirelpath)ParallelTasksSerialTasksmake_chunksparallel_available)Tags)NoneType)
directives)roles)Sphinxc            	       h   e Zd ZU dZdZdZdZdZee	j
                 ed<   dZdZdZdZg Zee         ed<   dZdZdAdZdeddfdZdedee	j
                 fdZdede	j
        fdZdBdZdBdZdCdededefdZdCdedededefdZdeee e         f         fdZ!dee         fdZ"de#ddfdZ$de%e&         deddfd Z'dBd!Z(d"ee         ddfd#Z)dBd$Z*dBd%Z+d&ee         ddfd'Z,dBd(Z-dDd*e e         d+ed,eddfd-Z.dee         fd.Z/d*ee         ddfd/Z0d*ee         d0e1ddfd1Z2deddfd2Z3dede	j4        ddfd3Z5dEd4e e         d5e6e         d,eddfd6Z7d*e6e         ddfd7Z8d*e6e         d0e1ddfd8Z9d*e%e         ddfd9Z:dede	j4        ddfd:Z;dede	j4        ddfd;Z<dBd<Z=dBd=Z>d>ed?edefd@Z?dS )FBuilderz6
    Builds target formats from the reST sources.
     Ndefault_translator_classnoneFTsupported_image_typesappr2   returnc                 <   |j         | _         |j        | _        |j        | _        |j        | _        t	          | j                   || _        d | _        |j        | _        |j        | _        |j	        | _	        | j	        
                    | j                   | j	        
                    | j                   | j	        
                    d| j        z             | j	        
                    d| j        z             i | _        d| _        d| _        d| _        d | _        d S )Nz	format_%sz
builder_%sr5   F)srcdirconfdiroutdir
doctreedirr'   r9   enveventsconfigtagsaddformatnameimagesimagedirimgpathparallel_okfinish_tasks)selfr9   s     8lib/python3.11/site-packages/sphinx/builders/__init__.py__init__zBuilder.__init__N   s    j{j.$/"""/3$'J!j(		dk"""	di   	kDK/000	lTY./// ') !!%    r@   c                 ^    || _         | j                             | j        | j                   dS )zStore BuildEnvironment object.N)r@   set_versioning_methodversioning_methodversioning_compare)rL   r@   s     rM   set_environmentzBuilder.set_environmentj   s=    &&t'='+'>	@ 	@ 	@ 	@ 	@rO   argsc                 @    | j         j                            |           S )zReturn a class of translator.)r9   registryget_translator_classrL   rU   s     rM   rX   zBuilder.get_translator_classp   s    x 55d;;;rO   c                 2     | j         j        j        | g|R  S )zReturn an instance of translator.

        This method returns an instance of ``default_translator_class`` by default.
        Users can replace the translator class with ``app.set_translator()`` API.
        )r9   rW   create_translatorrY   s     rM   r[   zBuilder.create_translatort   s$     3tx 24?$????rO   c                     dS )zoLoad necessary templates and perform initialization.  The default
        implementation does nothing.
        N rL   s    rM   initzBuilder.init}   	     	rO   c                     | j         j        r) t          | j         j        d                      | _        dS ddlm}  |            | _        dS )z&Return the template bridge configured.ztemplate_bridge settingr   )BuiltinTemplateLoaderN)rB   template_bridger   	templatessphinx.jinja2gluerb   )rL   rb   s     rM   create_template_bridgezBuilder.create_template_bridge   sj    ;& 	5F]4;+F+DF F H HDNNN @?????2244DNNNrO   docnametypc                     t           )zReturn the target URI for a document name.

        *typ* can be used to qualify the link characteristic for individual
        builders.
        NotImplementedError)rL   rg   rh   s      rM   get_target_urizBuilder.get_target_uri   s
     "!rO   from_toc                 p    t          |                     |          |                     ||                    S )zReturn a relative URI between two source filenames.

        May raise environment.NoUri if there's no way to return a sensible URI.
        )r(   rl   )rL   rm   rn   rh   s       rM   get_relative_urizBuilder.get_relative_uri   s9    
 D//66 //C88: : 	:rO   c                     t           )aD  Return an iterable of output files that are outdated, or a string
        describing what an update build will build.

        If the builder does not output individual files corresponding to
        source files, return a string here.  If it does, return an iterable
        of those files that need to be written.
        rj   r^   s    rM   get_outdated_docszBuilder.get_outdated_docs   s
     "!rO   c                     g S )z;Return list of paths for assets (ex. templates, CSS, etc.).r]   r^   s    rM   get_asset_pathszBuilder.get_asset_paths   s    	rO   doctreec                    t          | j                  }|                    t          j                  D ]}d|d         v rd|d         vr| j        D ]"}|d                             |d          }|r n#t          |d                   }|                    |d                   }|r2t          
                    t          d          | j        |||           n0t          
                    t          d          | j        ||           ||d<   n|d         }|| j        j        vr| j        j        |         d	         | j        |<   dS )
z+Pick the best candidate for all image URIs.?
candidates*Nuriz2a suitable image for %s builder not found: %s (%s))locationz-a suitable image for %s builder not found: %s   )r   r@   findallr   imager8   getsortedget_original_image_uriloggerwarningr   rF   rG   )rL   ru   rG   nodeimgtype	candidate	mimetypes	image_uris           rM   post_process_imageszBuilder.post_process_images   s   dh''OOEK00 	C 	CDd<(( $|,, (#9  G $\ 2 6 6w E EI   !'tL'9 : :I & = =d5k J JI  Lr +4 (5 (5'+y)YQU ' W W W W r*Y'Z'Z'+y)d ' L L L'U K	/ %)X_Y%?%BDK	""5	C 	CrO   catalogsmessagec                      j         j        sd S dt          dt          f fd}t                              t          t          d                    |z              t          |t          d          dt          |           j
        j        |          D ],}|                     j         j         j         j                   -d S )Ncatr:   c                     t          | j        j        j                                      t
          j        t                    S N)r)   mo_pathr@   r<   replacer   sepr&   )r   rL   s    rM   cat2relpathz-Builder.compile_catalogs.<locals>.cat2relpath   s+    3;88@@3OOOrO   zbuilding [mo]: writing output... 	darkgreen)stringify_func)rB   gettext_auto_buildr#   strr   infor!   r   r   lenr9   	verbositywrite_molanguage gettext_allow_fuzzy_translations)rL   r   r   r   catalogs   `    rM   compile_catalogszBuilder.compile_catalogs   s    {- 	F	P[ 	PS 	P 	P 	P 	P 	P 	P 	D-..//'9:::&x4H1I1I;'*8}}dh6H6AC C C 	K 	KG T[1![IK K K K	K 	KrO   c                 "   t          | j        | j        j        | j        j        | j        j                  }t          d          t          t          |j	                            z  }| 
                    t          |j	                  |           d S )Nzall of %d po files)r$   r<   rB   locale_dirsr   source_encodingr   r   listr   r   set)rL   repor   s      rM   compile_all_catalogszBuilder.compile_all_catalogs   sx     dk.E!%!5t{7RT T)**Sdm1D1D-E-EEc$-00':::::rO   specified_filesc                     dt           dt          t                    f fd}t                      }t          t          ||                    }t	           j         j        j         j        j         j        j	                  }|j
        D ]4}|j        |v r)|                                r|                    |           5t          d          t          |          z  }                     ||           d S )Nfpathr:   c                     j                             t          j        |                     }|rt	          |j        j                  S d S r   )r@   path2docr   abspathr%   rB   gettext_compact)r   rg   rL   s     rM   	to_domainz4Builder.compile_specific_catalogs.<locals>.to_domain   sD    h''U(;(;<<G ($+2MNNNtrO   z*targets for %d po files that are specified)r   r	   r   mapr$   r<   rB   r   r   r   r   domainis_outdatedrD   r   r   r   )rL   r   r   r   domainsr   r   r   s   `       rM   compile_specific_catalogsz!Builder.compile_specific_catalogs   s    	S 	Xc] 	 	 	 	 	 	 55c)_5566 dk.E!%!5t{7RT T} 	& 	&G~( &W-@-@-B-B &W%%%ABBS]]Rh00000rO   c                     t          | j        | j        j        | j        j        | j        j                  }d |j        D             }t          d          t          |          z  }| 	                    ||           d S )Nc                 :    h | ]}|                                 |S r]   )r   ).0cs     rM   	<setcomp>z2Builder.compile_update_catalogs.<locals>.<setcomp>   s%    @@@!@A@@@rO   z,targets for %d po files that are out of date)
r$   r<   rB   r   r   r   r   r   r   r   )rL   r   r   r   s       rM   compile_update_catalogszBuilder.compile_update_catalogs   sw     dk.E!%!5t{7RT T@@t}@@@CDDs8}}Th00000rO   c                 P    |                      dt          d          d           dS )zBuild all source files.Nzall source filesall)summarymethod)buildr   r^   s    rM   	build_allzBuilder.build_all   s)    

4$6!7!7
FFFFFrO   	filenamesc                    t          | j                  dz   }g }t          | j        j                  }|D ]!}t          j        t          j        |                    }|                    | j                  s)t          
                    t          d          |           lt          j        |          s)t          
                    t          d          |           ||d         }|D ]1}|                    |          r|dt          |                    } n2|                    t
          j        t                     }|                    |           #|                     |dt          d          t          |          z             dS )z>Only rebuild as much as needed for changes in the *filenames*.r|   zIfile %r given on command line is not under the source directory, ignoringz6file %r given on command line does not exist, ignoringNspecificz%%d source files given on command line)r   r   )r   r<   tuplerB   source_suffixr   normpathr   
startswithr   r   r   isfileendswithr   r   r&   appendr   )rL   r   dirlento_writesuffixesfilenamesuffixs          rM   build_specificzBuilder.build_specific   s    T[!!A%$T[%>??! 	& 	&H}T\(%;%;<<H&&t{33 r #?  @  @AIK K K;x(( r #-  .  ./79 9 9(H"  $$V,, '#f++6HE  ''#66HOOH%%%%

8JEFFXV 	 	X 	X 	X 	X 	XrO   c                    |                                  }t          |t                    r|                     dg|           dS t	          |          }|                     |t          d          t          |          z             dS )z8Only rebuild what was changed or added since last build.__all__z0targets for %d source files that are out of date)r   N)rr   
isinstancer   r   r   r   r   )rL   to_builds     rM   build_updatezBuilder.build_update  s    ))++h$$ 	&JJ	{H-----H~~HJJx!"TUU8}} %  & & & & &rO   updatedocnamesr   r   c                 2   |r?t                               t          t          d          | j        z            |z              t          j                    5  t          |                                           }ddd           n# 1 swxY w Y   t          |          }t                               t          t          d                    d           | j
                            | j        |          D ]}|                    |           t          |          |z
  }|r)t                               t          d          |           n't                               t          d                     |rdd	lm} t!          t          d
                    5  t#          t%          j        | j        |          d          5 }	t+          j        | j
        |	t*          j                   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t0          j        | j        _        t!          t          d                    5  | j
                                         ddd           n# 1 swxY w Y   n>|dk    r8|s6t                               t          t          d                               dS t0          j        | j        _        |r#|dgk    rt          |          | j
        j        z  }t<          r7| j        j        dk    r'| j         r | j        !                    d          | _"        nd| _"        tG                      | _$        | %                    |tM          |          |           | '                                 | j$                                         dS )zaMain build method.

        First updates the environment, and then calls :meth:`write`.
        zbuilding [%s]: Nz"looking for now-outdated files... Tnonlz%d foundz
none foundr   )ENV_PICKLE_FILENAMEzpickling environmentwbzchecking consistencyr   zno targets are out of date.r   r|   writeF)(r   r   r!   r   rF   r   pending_warningsr   readr   r@   check_dependentsr9   rD   sphinx.applicationr   r   openr   joinr?   pickledumpHIGHEST_PROTOCOLr    CONSISTENCY_CHECKphasecheck_consistency	RESOLVING
found_docsr-   parallelallow_parallelis_parallel_allowedrJ   r+   rK   r   r   finish)
rL   r   r   r   updated_docnamesdoccountrg   outdatedr   fs
             rM   r   zBuilder.build$  sW   
  	KKKR 122TY>??'IJJJ %'' 	0 	0"499;;//	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 '((D@AABBNNNx00;KLL 	* 	*G  ))))'((83 	*KK:1111KK<(())) 	>>>>>>!"%;"<"<== F F$)DO5HII4PP FTUK!V-DEEEF F F F F F F F F F F F F F FF F F F F F F F F F F F F F F
 (9DHN!"%;"<"<== - -**,,,- - - - - - - - - - - - - - - ! ( D$A!B!BCCDDD#-
  	;YK/ 	;8}}tx'::H  	%$("3a"7 	%D<O 	%#x;;GDDD$D (MM 	

8T"233V<<< 	 	     sZ   "BB
B)H=&G/#H/G3	3H6G3	7HH
H
I))I-0I-c                    t                               t          t          d                    d           | j                            | j        |            | j        j        t          k    }| j        	                    |          \  }}}| j
                            d| j        |||          D ]1}|                    t          |          | j        j        z             2|s|r,|                    | j        j        | j        j        z             |rKt!          j        | j        j        d          | j        j        pdz   }t                               d|d           t                               t          d          t'          |          t'          |          t'          |                     |D ]=}| j
                            d| j        |           | j                            |           >t+          ||z            }| j
                            d	| j        |           t,          r>t'          |          d
k    r+| j        j        dk    r| j                            d          }	nd}	|	r"|                     || j        j                   n|                     |           | j        j        | j        j        vr4t=          d| j                            | j        j                  z            | j
                            d| j                  D ]}
|
|                     |
           t          | j        _        t+          |          S )z(Re-)read all files new or changed since last update.

        Store all environment docnames in the canonical format (ie using SEP as
        a separator in place of os.path.sep).
        zupdating environment: Tr   zenv-get-outdatedr5   z[%s] z %s added, %s changed, %s removedenv-purge-doczenv-before-read-docs   r|   r   Fnproczroot file %s not foundzenv-updated)!r   r   r!   r   r@   
find_filesrB   config_statusr   get_outdated_filesrA   emitr   r   r   glob_toctreesr   r   config_status_extrar   	clear_docr   r-   r9   r   r   _read_parallel_read_serialroot_docall_docsr   doc2pathextend)rL   updatedaddedchangedremoveddocsreasonrg   r   par_okretvals              rM   r   zBuilder.readh  s    	D45566TBBBDK...8)Y6"&("="=g"F"Fw K$$%75'SZ[[ 	< 	<DNN3t99tx'::;;;;  	IG 	INN481DH4GGHHH 	4+/0FKKx39r;FKKdK333B9::JJGc'll	< 	< 	<  	( 	(GK_dh@@@Hw'''' %'/**/8DDD  	#h--!"3 	8IA8M 	X11&99FFF 	(0ABBBBh''';tx'88 	G6"h//0DEEF G G G k&&}dh?? 	( 	(F (''' "+hrO   c                    t          |t          d          dt          |          | j        j                  D ]R}| j                            d| j        |           | j                            |           | 	                    |           Sd S )Nreading sources... purpler   )
r   r   r   r9   r   rA   r   r@   r   read_doc)rL   r   rg   s      rM   r  zBuilder._read_serial  s    &x4I1J1JH'*8}}dh6HJ J 	# 	#G K_dh@@@Hw'''MM'""""	# 	#rO   r   c                 L   	 t          ||          }t          |t          d          dt          |           j        j                  	|D ]=} j                            d j        |            j        	                    |           >dt          t                   dt          f fd}dt          t                   dt          dd f	 fd}t          |          }|D ]}|                    |||           |                                 t                               d	           d S )
Nr  r  r   r
  r:   c                     j         j        _         | D ]}                    |           t          j        j        t          j                  S r   )r9   r@   r  r   dumpsr   )r
  rg   rL   s     rM   read_processz,Builder._read_parallel.<locals>.read_process  sI    8DHL ' 'g&&&&<&*ABBBrO   otherenvc                     t          j        |          }j                            | |j                   t                     d S r   )r   loadsr@   merge_info_fromr9   next)r
  r  r@   progressrL   s      rM   mergez%Builder._read_parallel.<locals>.merge  s=    ,x((CH$$T3999NNNNNrO   r5   )r,   r   r   r   r9   r   rA   r   r@   r   r   r   bytesr*   add_taskr   r   r   )
rL   r   r   chunksrg   r  r  taskschunkr  s
   `        @rM   r   zBuilder._read_parallel  sX   Xu-- #62.C+D+Dh#&v;;0BD D   	( 	(GK_dh@@@Hw''''	CtCy 	CU 	C 	C 	C 	C 	C 	C	S	 	U 	t 	 	 	 	 	 	 	 e$$ 	7 	7ENN<6666 	

BrO   c                 F   | j                             |           t          j        | j        d          }t          j        |          r| j                             |           | j                             |          }t          | j	        j
        j        |          }| j	        j                            | j	        |          }t          | j                   5  t          j        || j
        j                  5  t#          j        dt'          |                     |                    |           |                                 |j        }ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t/          t1          j                    t          j        | j                             |                              | j         j        |<   | j         j                                         | j         j                                         |                     ||           dS )z>Parse a file and add/update inventory entries for the doctree.zdocutils.confsphinx)source_pathN)r@   prepare_settingsr   r   r=   r   note_dependencyr  r   r9   rB   r   rW   get_publisherr"   r   default_rolecodecsregister_errorr   
set_sourcepublishdocumentmaxtimegetmtimer  	temp_dataclearref_contextwrite_doctree)rL   rg   docutilsconfr   filetype	publisherru   s          rM   r  zBuilder.read_doc  sH   !!'*** y??;|$$ 	3H$$\2228$$W-- =xHHH%33DHhGG	DH%% 	) 	)s'7AY'Z'Z 	) 	)!(,Eg,N,NOOO  X 666(G	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) &))-tx7H7H7Q7Q)R)R&T &T'" 	  """""$$$7G,,,,,s7    E,5AE	E,E	E,E	E,,E03E0c                    d|_         d|_        |j                                        |_        d|j        _        d|j        _        d|j        _        t          j        | j	        |dz             }t          t          j        |                     t          |d          5 }t          j        ||t          j                   ddd           dS # 1 swxY w Y   dS )zWrite the doctree to a file.Nz.doctreer   )reportertransformersettingscopywarning_streamr@   record_dependenciesr   r   r?   r'   dirnamer   r   r   r   )rL   rg   ru   doctree_filenamer   s        rM   r4  zBuilder.write_doctree  s	     " #+0022*.'#/3,9T_g
6JKK$,/00111"D)) 	=QKF$;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   !CCCbuild_docnamesr   c                 z   ||dgk    r| j         j        }|dk    r t          |          t          |          z  }nt          |          }t                              t          d          d                    t          |                               t          |          D ]T}| j         j	        
                    |t                                D ]%}|| j         j        v r|                    |           &U|                    | j        j                   t          t          d                    5  |                     |           d d d            n# 1 swxY w Y   | j        r3|                     t          |          | j        j        dz
             d S |                     t          |                     d S )Nr   r   zdocnames to write: %sz, zpreparing documentsr|   r   )r@   r   r   r   debugr   r   r   r   files_to_rebuildr   rD   rB   r  r   prepare_writingrJ   _write_parallelr9   r   _write_serial)rL   rA  r   r   r   rg   
tocdocnames          rM   r   zBuilder.write  s    	1^	{%B 	1!X0NX 	+>**S1A-B-BBHH>**HR/00$))F8<L<L2M2MNNN H~~ 	- 	-G"h7;;GSUUKK - -
!44 -LL,,,- 	T[)***b!67788 	+ 	+  ***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  	1   !1!1'+x'81'< ! > > > > > vh//00000s   2EEEc           	         t          j                    5  t          |t          d          dt	          |          | j        j                  D ]u}t          j        | j        _	        | j
                            ||           }t          j        | j        _	        |                     ||           |                     ||           v	 d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   r   r   r   r9   r   r    r   r   r@   get_and_resolve_doctreeWRITINGwrite_doc_serialized	write_doc)rL   r   rg   ru   s       rM   rG  zBuilder._write_serial"  s   %'' 	1 	1*8R8L5M5M{+.x==$(:LN N 1 1!+!5(::7DII!+!3))'7;;;w00001	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   B.CCCc                     dt           t          t          t          j        f                  dd f fd}|d         |dd          }}t
          j         j        _         j	        
                    |           }t
          j         j        _                             ||                                ||           t          |          }t          ||          }t!          |t#          d          dt%          |           j        j                  dt           t          t          t(          f                  d	t(          dd ffd
}t
          j         j        _        |D ]h}	g }
|	D ]J} j	        
                    |           }                     ||           |
                    ||f           K|                    ||
|           i|                                 t0                              d           d S )Nr
  r:   c                 p    t           j        j        _        | D ]\  }}                    ||           d S r   )r    rK  r9   r   rM  )r
  rg   ru   rL   s      rM   write_processz.Builder._write_parallel.<locals>.write_process-  sD    '/DHN$( 1 1 w00001 1rO   r   r|   r   r   rU   resultc                 &    t                     d S r   )r  )rU   rQ  r  s     rM   on_chunk_donez.Builder._write_parallel.<locals>.on_chunk_doneB  s    NNNNNrO   r5   )r   r   r   r   r-  r    r   r9   r   r@   rJ  rK  rL  rM  r*   r,   r   r   r   r   r/   r   r  r   r   r   )rL   r   r   rP  	firstnameru   r   r  rS  r!  argrg   r  s   `           @rM   rF  zBuilder._write_parallel,  s   	1U3+>%? @ 	1T 	1 	1 	1 	1 	1 	1 'qk8ABB<8	#-(229dCC#+!!)W555y'***e$$Xu-- #62.B+C+C[#&v;;0BD D	U3=%9 : 	H 	QU 	 	 	 	 	 	 $- 	> 	>EC  / /(::7DII))'7;;;

GW-....NN=#}==== 	

BrO   c                     t           )z?A place where you can add logic before :meth:`write_doc` is runrj   )rL   r   s     rM   rE  zBuilder.prepare_writingR      !!rO   c                     t           )z5Where you actually write something to the filesystem.rj   rL   rg   ru   s      rM   rM  zBuilder.write_docV  rW  rO   c                     dS )zoHandle parts of write_doc that must be called in the main process
        if parallel build is active.
        Nr]   rY  s      rM   rL  zBuilder.write_doc_serializedZ  r`   rO   c                     dS )zWFinish the building process.

        The default implementation does nothing.
        Nr]   r^   s    rM   r   zBuilder.finish`  	    
 	rO   c                     dS )zQCleanup any resources.

        The default implementation does nothing.
        Nr]   r^   s    rM   cleanupzBuilder.cleanupg  r\  rO   optiondefaultc                     	 | j         d|}t          | j        |          S # t          $ r |d|}t          | j        |          cY S w xY w)zReturn a builder specific option.

        This method allows customization of common builder settings by
        inserting the name of the current builder in the option key.
        If the key does not exist, use default as builder name.
        _)rF   getattrrB   AttributeError)rL   r_  r`  optnames       rM   get_builder_configzBuilder.get_builder_confign  sn    	1!%FF3G4;000 	1 	1 	1!(&&1G4;00000	1s    # &AA)r9   r2   r:   N)r:   Nr   )Nr   )r   )@__name__
__module____qualname____doc__rF   rE   epilogr6   r   r   NodeVisitor__annotations__rR   rS   r   use_message_catalogr8   r   r   supported_remote_imagessupported_data_uri_imagesrN   r   rT   r   rX   r[   r_   rf   rl   rp   r   r   rr   rt   r   r   r   r#   r   r   r   r   r   r   r   r   r   r  intr   r  r-  r4  r
   r   rG  rF  rE  rM  rL  r   r^  rf  r]   rO   rM   r4   r4   -   sW         
 DF F 9=d5#45<<<N (*49)))# %& & & &8@#3 @ @ @ @ @<# <$u7H2I < < < <@s @u/@ @ @ @ @   5 5 5 5" "c " "s " " " ": :c :s : : : : : :"5hsm);#< " " " "c    C4 CD C C C CBK[)9 KC KD K K K K; ; ; ;1c 1t 1 1 1 1$1 1 1 1G G G GXS	 Xd X X X X6	& 	& 	& 	&B! B!hsm B!c B!# B!]a B! B! B! B!H> d3i >  >  >  > @#T#Y #4 # # # # tCy            D- - - - - -B=S =5> =d = = = =$1 1HSM 1Xc] 1\_ 1os 1 1 1 1:1hsm 1 1 1 1 1$ $c $d $ $ $ $L"C "T " " " "" "u~ "$ " " " "C %. T          1 1s 1s 1 1 1 1 1 1rO   r4   )Orj  r)  r   r/  osr   typingr   r   r   r   r   r	   r
   r   r   r   r   docutilsr   docutils.nodesr   sphinx.configr   sphinx.environmentr   r   r   !sphinx.environment.adapters.assetr   sphinx.errorsr   sphinx.eventsr   sphinx.localer   sphinx.utilr   r   r   r   r   r   r   sphinx.util.build_phaser    sphinx.util.consoler!   sphinx.util.docutilsr"   sphinx.util.i18nr#   r$   r%   sphinx.util.osutilr&   r'   r(   r)   sphinx.util.parallelr*   r+   r,   r-   sphinx.util.tagsr.   sphinx.util.typingr/   r#  r0   r1   multiprocessingImportErrorr   r2   	getLoggerrg  r   r4   r]   rO   rM   <module>r     sN   * *         ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !                         Q Q Q Q Q Q Q Q Q Q : : : : : : % % % % % % & & & & & &      A A A A A A A A A A A A A A A A A A . . . . . . $ $ $ $ $ $ / / / / / / N N N N N N N N N N D D D D D D D D D D D D \ \ \ \ \ \ \ \ \ \ \ \ ! ! ! ! ! ! ' ' ' ' ' '               OOO  *)))))) 
	8	$	$O	1 O	1 O	1 O	1 O	1 O	1 O	1 O	1 O	1 O	1s   C CC