
    -Ph¥                       U d Z ddlmZ ddlZddlZddl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 ddl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" ddl#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. ddl/m0Z0 ddl1m2Z2m3Z3 erjddl4m5Z5m6Z6m7Z7m8Z8 ddlm9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZG ddlHmIZI dd lJmKZL dd lMmKZN dd!lOmPZP dd"lQmRZR dd#lSmTZT dd$lUmVZV dd%lWmXZX  ejY        eZ          Z[d&d'd(d)d*dd+dd,d(d(d(d-d)g d.Z\d/e]d0<   d1Z^d2Z_d3Z`d4Zad5Zbd6Zcea ed7          eb ed8          ec ed9          iZdd(e0d:Zed;e]d<<    G d= d>          ZfdWdCZgdXdHZhdYdRZidZdTZj G dU dV          ZkdS )[zGlobal creation environment.    )annotationsN)defaultdict)deepcopy)Path)TYPE_CHECKING)addnodes)_DomainsContainer)toctree)BuildEnvironmentErrorDocumentErrorExtensionErrorSphinxError)__)SphinxTransformer)logging)DownloadFilesFilenameUniqDict)_StrPath_StrPathProperty
stable_str)_format_rfc3339_microseconds)LoggingReporter)CatalogRepositorydocname_to_domain)is_translatable)_last_modified_time_relative_path)CallableIterableIteratorMapping)AnyFinalLiteral)nodes)Node)Parser)Sphinx)Builder)Config)Domain)Symbol)EventManager)	Extension)Project)SphinxComponentRegistry)TagsidlinkFTzhttps://peps.python.org/z&https://datatracker.ietf.org/doc/html/z	utf-8-sig   )auto_id_prefiximage_loadingembed_stylesheetcloak_email_addressespep_base_urlpep_referencesrfc_base_urlrfc_referencesinput_encodingdoctitle_xformsectsubtitle_xformsection_self_link
halt_levelfile_insertion_enabledsmartquotes_localesdict[str, Any]default_settingsA               z
new configzconfig changedzextensions changed)nonetextz2dict[str, Literal[False] | Callable[[Node], bool]]versioning_conditionsc                     e Zd ZdZ e            Z e            ZdedZdfdZdgd
Z	dedZ
edhd            Zedid            Zedjd            ZdkdZdldZdmd!Zdnd%Zdod)Zdpdqd-Z	 drdsd1Zedtd3            Zdud6Zdvd9Zdwd<Zdmd=Zedxd?            Zedyd@            ZedzdB            Zd{d|dEZd.dFd}dGZ d~dHZ!ddIZ"ddLZ#ddNZ$e%j&        ddO            Z'	 	 	 dddUZ(	 	 	 	 	 ddd^Z)dd`Z*ddaZ+ddcZ,dddZ-d.S )BuildEnvironmentzThe environment in which the ReST files are translated.
    Stores an inventory of cross-file targets and provides doctree
    transformations to resolve links to them.
    appr)   returnNonec                b   || _         |j        | _        |j        | _        d | _        t          | _        d| _        |j        | _        |j        | _        t          |j
                  | _        d | _        d | _        t                                          | _        | | j        d<   i | _        t%          t&                    | _        t%          t&                    | _        t'                      | _        i | _        	 i | _        	 t%          t2                    | _        i | _        i | _        i | _        i | _        i | _        i | _         i | _!        i | _"        t'                      | _#        t'                      | _$        i | _%        tM                      | _'        tQ                      | _)        i | _*        tW                      | _,        i | _-        i | _.        i | _/        i | _0        i | _1        i | _2        i | _3        i | _4        i | _5        tm          j7        | |j8                  | _9        | :                    |           d S )N envregistry);rR   
doctreedirsrcdirconfigCONFIG_UNSETconfig_statusconfig_status_extraeventsproject_get_env_version
extensionsversionversioning_conditionversioning_comparerF   copysettingsall_docsr   setdependenciesincludedreread_always_pickled_doctree_cache_write_doc_doctree_cachedictmetadatatitles
longtitlestocstoc_num_entriestoc_secnumberstoc_fignumberstoctree_includesfiles_to_rebuildglob_toctreesnumbered_toctrees
domaindatar   imagesr   dlfilesoriginal_image_uri_CurrentDocumentcurrent_documentref_context_search_index_titles_search_index_filenames_search_index_mapping_search_index_title_mapping_search_index_all_titles_search_index_index_entries_search_index_objtypes_search_index_objnamesr	   _from_environmentrY   domainssetupselfrR   s     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/environment/__init__.py__init__zBuildEnvironment.__init__m   s   .j"".(* $'J #*:3>*J*J UY!/3 )9(=(=(?(?#e )+ 7B#6F6F .9-=-='*uu8:#	 DF%	 4?t3D3D /1 3524	/1
 FHPR 7957'*uu+.55 68 )9(:(:&3oo 8: 3C2D2D ,.
 <>!79$:<"@B(QS%RT(BD#GI# +<*M3<+
 +
 +

 	

3    rE   c                    | j                                         }|                    ddd           |                    i i            |S )z'Obtains serializable data for pickling.N)rR   r   r`   )rn   ro   )__dict__rg   update)r   r   s     r   __getstate__zBuildEnvironment.__getstate__   sJ    =%%''D$t<<< 	rBOOOr   statec                :    | j                             |           d S N)r   r   )r   r   s     r   __setstate__zBuildEnvironment.__setstate__   s    U#####r   c                   | j         r9| j         t          |j                  k    rt          t	          d                    | j        r,| j        |j        k    rt          t	          d                    | j        r|j                            | j                   || _        |j	        | _	        |j
        | _
        |j        | _        |j        | _        t          |j                  | _         | j         t          j        | |j                  | _        | j                                         |                     | j        |j        |j                  \  | _        | _        |j        | _        |                     |j                   dS )zSet up BuildEnvironment object.z%build environment version not currentzsource directory has changedNrX   )
old_config
new_config	verbosity)rd   rb   rc   r   r   r[   ra   restorerR   rZ   r`   r   r	   r   rY   _setup_config_statusr\   r   r^   r_   _update_settingsr   s     r   r   zBuildEnvironment.setup   sg   < 	UDL,<S^,L,LLL'+R(S(STTT; 	L4;#*44'+I(J(JKKK< 	.K---.jj{'77 <,>s|  DL 	
 8<7J7J{szS] 8K 8
 8
4D4 j 	cj)))))r   r1   c                    | j         j        S r   )rR   rY   r   s    r   	_registryzBuildEnvironment._registry  s    x  r   r2   c                    | j         j        S r   )rR   tagsr   s    r   _tagszBuildEnvironment._tags#  s    x}r   r   Config | Noner   r+   r   inttuple[int, str]c                >   | 	t           dfS | j        |j        k    rrt          | j                  }t          |j                  }||z  }t          |          dk    r|                                }nt          |           }t
          d|dfS t          | |          x}r%t          |          }|dk    rCt                              t          d          t          t          |                               n|dk    s|dk    r]t                              t          d          |d	                    t          t          t          |                                         ndt                              t          d
          |d	                    t          t          t          |          dd                                        |                    t#          dh                    D ],}	| |	j                 |	j        k    rt(          d|	j        dfc S -t*          dfS )zReport the differences between two Config objects.

        Returns a triple of:

        1. The new configuration
        2. A status code indicating how the configuration has changed.
        3. A status message indicating what has changed.
        NrV   rI   z ()z,The configuration has changed (1 option: %r)r5   z.The configuration has changed (%d options: %s)z, z3The configuration has changed (%d options: %s, ...)rW   )
CONFIG_NEWrc   rj   lenpopCONFIG_EXTENSIONS_CHANGED_differing_config_keysloggerinfor   nextiterjoinmapreprsortedfilter	frozensetnamevalueCONFIG_CHANGED	CONFIG_OK)
r   r   r   old_extensionsnew_extensionsrc   	extensionchanged_keyschanged_numitems
             r   r   zBuildEnvironment._config_status'  s    r>! J$999 !677N !677N'.8J:!##&NN,,		":0	,.A9.A.A.AAA 2*jIII< 	l++KaEFFl++,,    !!Y!^^GHHIIc$|(<(<==>>    LMMIIc$|(<(<RaR(@AABB   %%i&8&899 	; 	;D$)$
22%':DI':':'::::: 3 "}r   r\   c                    |j         | j        d<   |j        | j        d<   |j        | j        d<   | j                            dd           dS )zUpdate settings by new config.r>   trim_footnote_reference_spacelanguage_codesmart_quotesTN)source_encodingrh   r   language
setdefault)r   r\   s     r   r   z!BuildEnvironment._update_settings\  sU    *0*@&'0 	56 *0o& 	  66666r   methodstr | Callable[[Node], bool]compareboolc                    t          |          r|}n(|t          vrt          d|z            t          |         }| j        d|hvrt	          d          }t          |          || _        || _        dS )aR  Set the doctree versioning method for this environment.

        Versioning methods are a builder property; only builders with the same
        versioning method can share the same doctree directory.  Therefore, we
        raise an exception if the user tries to use an environment with an
        incompatible versioning method.
        zinvalid versioning method: %rNzdThis environment is incompatible with the selected builder, please choose another doctree directory.)callablerO   
ValueErrorre   r   r   rf   )r   r   r   	conditionmsgs        r   set_versioning_methodz&BuildEnvironment.set_versioning_methodg  s     F 	6II222 !@6!IJJJ-f5I$T9,===% C
 c"""$-!")r   docnamestrc                    || j         v rP| j                             |d           | j                            |d           | j                            |           | j                            |           dS )z4Remove all traces of a source file in the inventory.N)ri   r   rl   rm   discardr   
_clear_docr   r   s     r   	clear_doczBuildEnvironment.clear_doc  sr    dm##Mgt,,,Mgt,,,&&w///(((((r   docnamesIterable[str]otherc                B   t          |          }|D ]O}|j        |         | j        |<   |j        |         | j        |<   ||j        v r| j                            |           P| j                            ||j                   | j        	                    d| ||           dS )zMerge global information gathered about *docnames* while reading them
        from the *other* environment.

        This possibly comes from a parallel build process.
        zenv-merge-infoN)
r   ri   rl   rm   addr   _merge_domain_datar|   r`   emit)r   r   r   rR   r   s        r   merge_info_fromz BuildEnvironment.merge_info_from  s     X&& 	0 	0G%*^G%<DM'"%*^G%<DM'"%---"&&w///''%2BCCC)45AAAAAr   filenamestr | os.PathLike[str]
str | Nonec                6    | j                             |          S )zReturn the docname for the filename if the file is document.

        *filename* should be absolute or relative to the source directory.
        )ra   path2doc)r   r   s     r   r   zBuildEnvironment.path2doc  s    
 |$$X...r   Tbaser   c                :    | j                             ||          S )zReturn the filename for the document name.

        If *base* is True, return absolute path under self.srcdir.
        If *base* is False, return relative path to self.srcdir.
        )absolute)ra   doc2path)r   r   r   s      r   r   zBuildEnvironment.doc2path  s     |$$Wt$<<<r   N
str | Pathtuple[str, str]c                   t          |          }|j        dd         dv r/ | j        j        |j        dd                                          }nk|s | j        r| j        }nd}t          |          |                     |d          j        }| j                            ||                                          }t          || j                  }|
                                t          j        |          fS )a+  Return paths to a file referenced from a document, relative to
        documentation root and absolute.

        In the input "filename", absolute filenames are taken as relative to the
        source dir, while relative filenames are relative to the dir of the
        containing document.
        NrI   >   /\r   F)r   )r   partsr[   joinpathresolver   KeyErrorr   parentr   as_posixosfspath)r   r   r   	file_nameabs_fnr   doc_dirrel_fns           r   
relfn2pathzBuildEnvironment.relfn2path  s     NN	?2A2"333)T[)9?122+>?GGIIFF (< ("lGG#C"3--'mmG%m88?G[))'9==EEGGF44  ")F"3"333r   set[str]c                    | j         j        S )zContains all existing docnames.)ra   r   r   s    r   
found_docszBuildEnvironment.found_docs  s     |$$r   builderr*   c                H   	 | j         j        | j         j        z   |                                z   }| j                            || j         j                   |j        rt          | j	        | j         j
        | j         j        | j         j                  }d |j        D             }| j        D ]?}t          || j         j                  }||v r|                     ||         |           >dS dS # t$          $ r,}t'          t)          d          | j	        |fz            |d}~ww xY w)zYFind all source files in the source dir and put them in
        self.found_docs.
        c                (    i | ]}|j         |j        S  )domainmo_path.0cs     r   
<dictcomp>z/BuildEnvironment.find_files.<locals>.<dictcomp>  s    GGGAAHaiGGGr   r   z"Failed to scan documents in %s: %rN)r\   exclude_patternstemplates_pathget_asset_pathsra   discoverinclude_patternsuse_message_catalogr   r[   locale_dirsr   r   catalogsr  r   gettext_compactnote_dependencyOSErrorr   r   )	r   r\   r  exclude_pathsrepomo_pathsr   r  excs	            r   
find_fileszBuildEnvironment.find_files  s]   	,+,-))++, 
 L!!-1MNNN * P(KK+K(K/	  HGGGG# P PG.w8STTF)),,Xf-=w,OOOP PP P  	 	 	788DK;MM 	s   C%C+ +
D!5'DD!config_changed#tuple[set[str], set[str], set[str]]c                *   t          | j                  | j        z
  }t                      }t                      }|r	| j        }nL| j        D ]C}|| j        vr1t                              d|           |                    |           =| j        | dz  }|                                s1t                              d|           |                    |           || j        v r1t                              d|           |                    |           | j        |         }t          | 
                    |                    }||k    rNt                              d|t          |          t          |                     |                    |           L|| j        vrW| j        |         D ]}		 | j        |	z  }
|
                                s3t                              d||
           |                    |            nt          |
          }||k    rOt                              d||
t          |          t          |                     |                    |            n'# t          $ r |                    |           Y  nw xY wE|||fS )z&Return (added, changed, removed) sets.z[build target] added %r.doctreez[build target] changed %rz$[build target] outdated %r: %s -> %sz/[build target] changed %r missing dependency %rz7[build target] outdated %r from dependency %r: %s -> %s)rj   ri   r  r   debugr   rZ   is_filerm   r   r   r   rk   r[   r  )r   r"  removedaddedchangedr   r   mtimenewmtimedepdep_pathdepmtimes               r   get_outdated_filesz#BuildEnvironment.get_outdated_files  s   
 dm$$t6%%EE =	OEE? 9 9$-//LL!:GDDDIIg&&&?-A-A-AA'')) LL!<gFFFKK(((d000LL!<gFFFKK(((g..t}}W/E/EFFe##LL>4U;;4X>>	   KK((($"333,W5  C#';#4'//11 ""LL Q ' (  
 $KK000!E#6x#@#@#e++"LL Y ' ( <U C C <X F F   $KK000!E , #   G,,,
 gw&&s   2AI(A"I((J
JalreadyIterator[str]c              #     K   g }| j                             d|           D ]}|                    |           t          |          D ]
}||vr|V  d S )Nzenv-get-updated)r`   r   extendrj   )r   rR   r1  
to_rewriter   r   s         r   check_dependentsz!BuildEnvironment.check_dependents;  sx       "
(():DAA 	( 	(Hh'''': 	 	Gg%%	 	r   c                    t          || j        j        | j                            | j        j                            | _        dS )z*Prepare to set up environment for reading.r   default_roledefault_domainN)r   r\   r9  r   getprimary_domainr   r   s     r   prepare_settingsz!BuildEnvironment.prepare_settingsE  sB     01<++DK,FGG	!
 !
 !
r   r   c                    | j         S )zpReturns the temporary data storage for the current document.

        Kept for backwards compatibility.
        )r   r   s    r   	temp_datazBuildEnvironment.temp_dataP  s     $$r   c                    | j         j        S )z;Returns the docname of the document currently being parsed.)r   r   r   s    r   r   zBuildEnvironment.docnameX  s     $,,r   r(   c                D    | j         j        x}|S d}t          |          )z@Returns the parser being used for to parse the current document.Nparser)r   _parserr   )r   rB  r   s      r   rB  zBuildEnvironment.parser]  s+     +33F@Msmmr   rV   categoryc                6    | j                             |          S )zReturn a serial number, e.g. for index entry targets.

        The number is guaranteed to be unique in the current document.
        )r   new_serial_number)r   rD  s     r   new_serialnozBuildEnvironment.new_serialnoe  s    
 $66x@@@r   r  c                   || j         }| j                            |t                                                    t          |                     dS )zAdd *filename* as a dependency of the current document.

        This means that the document will be rebuilt if this file changes.

        *filename* should be absolute or relative to the source directory.
        N)r   rk   r   rj   r   r   )r   r   r   s      r   r  z BuildEnvironment.note_dependencyl  sI     ?lG$$Wcee4488(9K9KLLLLLr   c                    |                      |          }|rA| j                            | j        t	                                                    |           dS dS )zAdd *filename* as a included from other document.

        This means the document is not orphaned.

        *filename* should be absolute or relative to the source directory.
        N)r   rl   r   r   rj   r   )r   r   docs      r   note_includedzBuildEnvironment.note_includedy  s\     mmH%% 	CM$$T\35599==cBBBBB	C 	Cr   c                D    | j                             | j                   dS )zxAdd the current document to the list of documents that will
        automatically be re-read at the next build.
        N)rm   r   r   r   s    r   note_rereadzBuildEnvironment.note_reread  s#     	t|,,,,,r   
domainnamer,   c                    	 | j         |         S # t          $ r'}t          d          |z  }t          |          |d}~ww xY w)zReturn the domain instance with the specified name.

        Raises an ExtensionError if the domain is not registered.
        zDomain %r is not registeredN)r   r   r   r   )r   rN  r   r   s       r   
get_domainzBuildEnvironment.get_domain  sV    
	/<
++ 	/ 	/ 	/233j@C %%3.	/s    
A ";A nodes.documentc                   	 | j         |         }nc# t          $ rV | j        | dz  }t          |d          5 }|                                x}| j         |<   ddd           n# 1 swxY w Y   Y nw xY wt          j        |          }| |j        _        t          t          |                     |                              |_        |S )z:Read the doctree for a file from the pickle and return it.r%  rbN)rn   r   rZ   openreadpickleloadsrh   rW   r   r   r   reporter)r   r   
serialisedr   fdoctrees         r   get_doctreezBuildEnvironment.get_doctree  s   	M4W=JJ 	M 	M 	MG)=)=)==Hh%% MDEFFHHL
T8AM M M M M M M M M M M M M M M	M
 ,z**#*3t}}W/E/E+F+FGGs2    'A0A"A0"A&	&A0)A&	*A0/A0c                @    |                      | j        j                  S r   )r\  r\   root_docr   s    r   master_doctreezBuildEnvironment.master_doctree  s     4555r   Fr[  nodes.document | Noneprune_toctreesincludehiddenc           
     "   |	 | j                             |          }| |j        _        t	          t          |                     |                              |_        n%# t          $ r | 	                    |          }Y nw xY w| 
                    ||           |                    t          j                  D ]U}t          j        | ||||||j                  }||j                            |g            @|                    |           V|S )zgRead the doctree from the pickle, resolve cross-references and
        toctrees and return it.
        N)prunerb  r   )ro   r   rh   rW   r   r   r   rX  r   r\  apply_post_transformsfindallr   r
   toctree_adapters_resolve_toctreer   r   replacereplace_self)r   r   r  r[  ra  rb  toctreenoderesults           r   get_and_resolve_doctreez(BuildEnvironment.get_and_resolve_doctree  s-    ?47;;GDD'+ $#23t}}W7M7M3N3N#O#O   4 4 4**7334 	""7G444 #??8+;<< 	1 	1K%6$+\  F ~"**;;;;;((0000s   AA B Br   r
   addnodes.toctreerd  maxdepthtitles_onlycollapseNode | Nonec	                H    t          j        | |||||||||j        
  
        S )a   Resolve a *toctree* node into individual bullet lists with titles
        as items, returning None (if no containing titles are found) or
        a new node.

        If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0,
        to the value of the *maxdepth* option on the *toctree* node.
        If *titles_only* is True, only toplevel document titles will be in the
        resulting tree.
        If *collapse* is True, all branches not containing docname will
        be collapsed.
        )rd  ro  rp  rq  rb  r   )rg  rh  r   )	r   r   r  r
   rd  ro  rp  rq  rb  s	            r   resolve_toctreez BuildEnvironment.resolve_toctree  s>    ,  0#'
 
 
 	
r   fromdocnamec                2    |                      ||           d S r   )re  )r   r[  ru  r  s       r   resolve_referencesz#BuildEnvironment.resolve_references  s      	""7K88888r   c                x   | j         }t          |          }||_        	 || _         t          |          }|                    |            |                    | j                                                   |                                 || _         n# || _         w xY w| j	        
                    d||           dS )zApply all post-transforms.zdoctree-resolvedN)r   r   r   r   set_environmentadd_transformsr   get_post_transformsapply_transformsr`   r   )r   r[  r   backupnewtransformers         r   re  z&BuildEnvironment.apply_post_transforms  s    &v		+$'D!+G44K''---&&t~'I'I'K'KLLL((***$*D!!FD!**** 	+Wg>>>>>s   A+B 	Bdict[str, list[str | None]]c                    t                      }i }t          |d | j        j        | j                  }d }t          |          \  }}|D ]\  }}|||g||<   |}|}|}||d g||<   |S r   )rj   _traverse_toctreer\   r^  rx   r   )	r   	traversed	relationsr   prev_docr   r   next_parentnext_docs	            r   collect_relationsz"BuildEnvironment.collect_relations  s    !ee		$tT[143H
 
 x..%- 	! 	!!K"((H!=IgHG FF$h5	'r   c                    t                      j        | j                                         }t	          | j                  D ]\}|| j        vrQ|| j        j        k    r||v r!d| j	        |         v r1t                              t          d          |dd           ]t          | j                   | j                                         | j                            d|            dS )zDo consistency checks.orphanz&document isn't included in any toctreetocnot_includedlocationtypesubtypezenv-check-consistencyN)rj   unionrl   valuesr   ri   ry   r\   r^  rq   r   warningr   _check_toc_parentsrx   r   _check_consistencyr`   r   )r   rl   r   s      r   check_consistencyz"BuildEnvironment.check_consistency  s    355; 4 4 6 67dm,, 	 	Gd333dk222h&&t}W555?@@$*	     	40111 	'')))0$77777r   )rR   r)   rS   rT   )rS   rE   )r   rE   rS   rT   )rS   r1   )rS   r2   )r   r   r   r+   r   r   rS   r   )r\   r+   rS   rT   )r   r   r   r   rS   rT   )r   r   rS   rT   )r   r   r   rQ   rR   r)   rS   rT   )r   r   rS   r   )T)r   r   r   r   rS   r   r   )r   r   r   r   rS   r   )rS   r  )r\   r+   r  r*   rS   rT   )r"  r   rS   r#  )rR   r)   r1  r  rS   r2  )rS   r   )rS   r   )rS   r(   rV   rD  r   rS   r   )r   r   r   r   rS   rT   )r   r   rS   rT   rS   rT   )rN  r   rS   r,   )r   r   rS   rQ  )rS   rQ  )NTF)r   r   r  r*   r[  r`  ra  r   rb  r   rS   rQ  )Tr   FFF)r   r   r  r*   r
   rn  rd  r   ro  r   rp  r   rq  r   rb  r   rS   rr  )r[  rQ  ru  r   r  r*   rS   rT   )r[  rQ  r   r   rS   rT   )rS   r  ).__name__
__module____qualname____doc__r   r[   rZ   r   r   r   r   propertyr   r   staticmethodr   r   r   r   r   r   r   r  r  r!  r0  r6  r=  r?  r   rB  rG  r  rK  rM  rP  r\  	functoolscached_propertyr_  rm  rt  rw  re  r  r  r
  r   r   rQ   rQ   b   s         F!!##J} } } }~	 	 	 	$ $ $ $#* #* #* #*J ! ! ! X!    X 2 2 2 \2h	7 	7 	7 	7* * * *8) ) ) )B B B B$/ / / /= = = = = ;?4 4 4 4 44 % % % X%" " " "HI' I' I' I'V   
 
 
 
 % % % X% - - - X-    XA A A A A JNM M M M M M	C 	C 	C 	C- - - -	/ 	/ 	/ 	/    6 6 6 6 *.##& & & & &Z !#!
 !
 !
 !
 !
F9 9 9 9
? ? ? ?&   &8 8 8 8 8 8r   rQ   rc   Mapping[str, Extension]rS   Mapping[str, int]c                \    fd|                                  D             }t          |d<   |S )Nc                X    i | ]&}|j                             d           x|j        'S )env_version)rq   r;  r   )r  extext_env_versions     r   r  z$_get_env_version.<locals>.<dictcomp>=  sH       "|//>>>O/  r   sphinx)r  ENV_VERSION)rc   r  r  s     @r   rb   rb   <  sI       $$&&  K
 (Kr   oldr+   r~  frozenset[str]c                   d | D             d |D                                                                               z  }fd                                                                  z  D             }t          ||z            S )z<Return a set of keys that differ between two config objects.c                (    i | ]}|j         |j        S r
  r   r   r  s     r   r  z*_differing_config_keys.<locals>.<dictcomp>H      ---A---r   c                (    i | ]}|j         |j        S r
  r  r  s     r   r  z*_differing_config_keys.<locals>.<dictcomp>I  r  r   c                l    h | ]0}t          |                   t          |                   k    .|1S r
  r   )r  keynew_valsold_valss     r   	<setcomp>z)_differing_config_keys.<locals>.<setcomp>K  sF       hsm$$
8C=(A(AAA 	AAAr   )keysr   )r  r~  not_in_bothdifferent_valuesr  r  s       @@r   r   r   F  s    -----H-----H--//HMMOO3K    ==??X]]__4  
 [#33444r   r  r  r   r   r   r   rx   dict[str, list[str]] Iterator[tuple[str | None, str]]c              #  F  K   ||k    r-t                               t          d          |dd           d S ||fV  |                     |           |                    |d          D ]9}t          | |||          D ]$\  }}|| vr||fV  |                     |           %:d S )Nz'self referenced toctree found. Ignored.r  circularr  r
  )r   r  r   r   r;  r  )r  r   r   rx   child
sub_parentsub_docnames          r   r  r  S  s       899	 	 	
 	
 	
 	 '/MM'!%%gr22 + +'8w'7(
 (
 	+ 	+#J )++ +----k***	++ +r   rT   c           
        i }|                                  D ]3\  }}|D ]+}|                    |g                               |           ,4t          |                                           D ]S\  }}t	          |          dk    r;t
                              t          d          |t          |          ||dd           Td S )NrI   zDdocument is referenced in multiple toctrees: %s, selecting: %s <- %sr  multiple_toc_parentsr  )	itemsr   appendr   r   r   r   r   max)rx   toc_parentsr   childrenr  rJ  parentss          r   r  r  o  s    (*K,2244 = = 	= 	=E""5"--44V<<<<	= {002233  Ww<<!KKZ  G.  
 
 
 r   c                  Z   e Zd ZU dZdZi dddddddd	d
dddddddddddddddddddddddddZd ed!<    eh d"          Zd ed#<   d$d$d%d&dKd+Z	dLdMd.Z
dNd1ZdOd4ZdPd5ZdQd7ZdRd9ZdSd:ZdTd<ZdUd>ZdVd@ZdWdXdCZ e            ZefdXdDZdWdXdEZdYdFZdZd[dJZd%S )\r   zTemporary data storage while reading a document.

    This class is only for internal use. Please don't use this in your extensions.
    It will be removed or changed without notice.
    The only stable API is via ``env.current_document``.
    )rC  _serial_numbers_extension_dataautodoc_annotationsautodoc_classautodoc_modulec_last_symbolc_namespace_stackc_parent_symbolcpp_domain_namecpp_last_symbolcpp_namespace_stackcpp_parent_symbolr:  r9  r   highlight_languageobj_desc_namereading_started_atrC  r   r  zautodoc:classr  zautodoc:moduler  c:last_symbolr  zc:namespace_stackr  c:parent_symbolr  zcpp:domain_namer  cpp:last_symbolr  zcpp:namespace_stackr  cpp:parent_symbolr  r:  r9  r   r  objectr  
started_atr  r$   _CurrentDocument__attr_map>   rC  r:  r  r  r  r  #_CurrentDocument__attr_default_nonerV   Nr8  r   Domain | NonerS   rT   c                  || _         || _        || _        d | _        d| _        d| _        i | _        d| _        d| _        d | _	        g | _
        d | _        d| _        d | _        g | _        d | _        d| _        i | _        i | _        d S )NrV   r
  g        )r   r9  r:  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r   r   r9  r:  s       r   r   z_CurrentDocument.__init__  s     $ ". .< '+
 (* #%
 ?A  #% $& .2
 13 04
 13 26
 57  48 *- 02 02r   rD  r   c               V    | j                             |d          }|dz   | j         |<   |S )zReturn a serial number, e.g. for index entry targets.

        The number is guaranteed to be unique in the current document & category.
        r   rI   )r  r;  )r   rD  currents      r   rF  z"_CurrentDocument.new_serial_number  s2    
 &**8Q77)01X&r   r   r#   c                d    || j         v rt          | | j         |                   S | j        |         S r   )r  getattrr  r   r   s     r   __getitem__z_CurrentDocument.__getitem__   s4    4?""4!6777#D))r   r  r   c                h    || j         v rt          | | j         |         |           d S || j        |<   d S r   )r  setattrr  )r   r  r   s      r   __setitem__z_CurrentDocument.__setitem__%  sA    $/!!D$/#.66666(-D %%%r   c                4    |                      |d            d S )N)default)r   r   r  s     r   __delitem__z_CurrentDocument.__delitem__+  s    d#####r   r   c                h    |dv rt          | | j        |                   d uS || j        v p|| j        v S )N>   r  r  )r  r  r  r  s     r   __contains__z_CurrentDocument.__contains__.  sD    ;;;4!677tCCt&F$$2F*FFr   r2  c                D    t          |                                           S r   )r   r  r   s    r   __iter__z_CurrentDocument.__iter__3  s    DIIKK   r   c                T    t          | j                  t          | j                  z   S r   )r   r  r  r   s    r   __len__z_CurrentDocument.__len__6  s"    4?##c$*>&?&???r   r   c                    t          | j                                        | j                                        z            S r   )r   r  r  r  r   s    r   r  z_CurrentDocument.keys9  s2    --//$2F2K2K2M2MMNNNr   Iterable[tuple[str, Any]]c              #  P   K   |                                  D ]}|| |         fV  d S r   r  r  s     r   r  z_CurrentDocument.items<  s>      99;; 	! 	!CtCy.    	! 	!r   Iterable[Any]c              #  L   K   |                                  D ]}| |         V  d S r   r  r  s     r   r  z_CurrentDocument.values@  s6      99;; 	 	Cs)OOOO	 	r   r  
Any | Nonec                8    	 | |         S # t           $ r |cY S w xY wr   )r   r   r  r  s      r   r;  z_CurrentDocument.getD  s5    	9 	 	 	NNN	s   
 c                H   || j         v r\t          | | j         |                   }|| j        v rd }n t          |                      }t	          | | j         |         |           |S || j        u r| j                            |          S | j                            ||          S r   )r  r  r  r  r  _CurrentDocument__sentinelr  r   )r   r  r  r   s       r   r   z_CurrentDocument.popL  s    $/!!D$/#"677Ed...%$u++--D$/#.888Ldo%%'++C000#''W555r   c                8    | j                             ||          S r   )r  r   r  s      r   r   z_CurrentDocument.setdefaultZ  s    #..sG<<<r   c                :    t                               |            d S r   )r   r   r   s    r   clearz_CurrentDocument.clear]  s    !!$'''''r   r
  r   kwargsc                   t          |t                    st          |          n|}||fD ]!}|                                D ]
\  }}|| |<   "d S r   )
isinstancerp   r  )r   r   r  
other_dictdctr  r   s          r   r   z_CurrentDocument.update`  si    (25$(?(?JT%[[[U
v% 	" 	"C!iikk " "
U!S		"	" 	"r   )r   r   r9  r   r:  r  rS   rT   r  r  )r   r   rS   r#   )r  r   r   r#   rS   rT   )r  r   rS   rT   )r   r   rS   r   )rS   r2  )rS   r   )rS   r   )rS   r  )rS   r  r   )r  r   r  r  rS   r  r  )r
  )r   r  r  r#   rS   rT   )r  r  r  r  	__slots__r  __annotations__r   r  r   rF  r  r  r  r  r  r  r  r  r  r;  r  r   r   r   r  r   r
  r   r   r   r     s         I.9, 	 	*	
 	 	0 	, 	, 	, 	4 	0 	* 	 	9 	2  	/!" 	*#J    * "+ , , , " "     (,R2 R2 R2 R2 R2 R2h    * * * *
. . . .$ $ $ $G G G G
! ! ! !@ @ @ @O O O O! ! ! !        J2< 6 6 6 6 6= = = = =( ( ( (" " " " " " "r   r   )rc   r  rS   r  )r  r+   r~  r+   rS   r  )
r  r  r   r   r   r   rx   r  rS   r  )rx   r  rS   rT   )lr  
__future__r   r  r   rV  collectionsr   rg   r   pathlibr   typingr   r  r   !sphinx.domains._domains_containerr	   sphinx.environment.adaptersr
   rg  sphinx.errorsr   r   r   r   sphinx.localer   sphinx.transformsr   sphinx.utilr   sphinx.util._filesr   r   sphinx.util._pathlibr   r   sphinx.util._serialiser   sphinx.util._timestampsr   sphinx.util.docutilsr   sphinx.util.i18nr   r   sphinx.util.nodesr   sphinx.util.osutilr   r   collections.abcr   r    r!   r"   r#   r$   r%   docutilsr&   docutils.nodesr'   docutils.parsersr(   sphinx.applicationr)   sphinx.buildersr*   sphinx.configr+   sphinx.domainsr,   sphinx.domains.c._symbolr-   CSymbolsphinx.domains.cpp._symbol	CPPSymbolsphinx.eventsr.   sphinx.extensionr/   sphinx.projectr0   sphinx.registryr1   sphinx.util.tagsr2   	getLoggerr  r   rF   r
  r  r]   r   r   r   r   CONFIG_CHANGED_REASONrO   rQ   rb   r   r  r  r   r
  r   r   <module>r0     s   " " " " " " " " "     				  # # # # # #                               ? ? ? ? ? ? C C C C C C                  / / / / / /       > > > > > > > > ; ; ; ; ; ; ; ; - - - - - - @ @ @ @ @ @ 0 0 0 0 0 0 A A A A A A A A - - - - - - B B B B B B B B &EEEEEEEEEEEE**********######''''''))))))''''''$$$$$$%%%%%%::::::>>>>>>************&&&&&&777777%%%%%%		8	$	$ !.<!"$ $     (  	
  <  BB'((rr"677  M M     W8 W8 W8 W8 W8 W8 W8 W8t   
5 
5 
5 
5+ + + +8   *`" `" `" `" `" `" `" `" `" `"r   