o
    Ni<&                     @  s  U 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
 ddlmZmZ ddlmZ dd	lmZ erdd
lmZmZ ddlmZ ddlmZ eedB eed B f Zded< ee Zded< edB Zded< eeeeef f Z ded< eee ef Z!ded< eee!f Z"ded< eeeeeeeeeeeef  ef f  f  Z#ded< e$e%Z&G dd dZ'd2d#d$Z(d3d'd(Z)d4d+d,Z*d5d.d/Z+d6d0d1Z,dS )7z.Index entries adapters for sphinx.environment.    )annotationsN)groupby)TYPE_CHECKING)NoUri)___)logging)_split_into)Literal	TypeAlias)Builder)BuildEnvironmentFr   _IndexEntryTarget_IndexEntryTargets_IndexEntryCategoryKey_IndexEntrySubItems_IndexEntry_IndexEntryMap_Indexc                   @  s,   e Zd ZdddZdedfdddZdS )IndexEntriesenvr   returnNonec                 C  s   || _ |  d S )N)r   )selfr    r   \/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/environment/adapters/indexentries.py__init__6   s   zIndexEntries.__init__Tz(.*) ([(][^()]*[)])builderr   group_entriesbool_fixrere.Pattern[str]r   c           (      C  s  i }| j jj}|j D ]\}}z|d|}W n ty$   d}Y nw |D ]\}	}
}}}|duo8| d| }z|	dkrfz
tdd|
\}}W n tyZ   tdd|
\}d}Y nw t	||||||d n|	d	krtdd	|
\}}t	||||||d t	||||||d nx|	d
krtdd
|
\}}}t	||d | ||||d t	||d | ||||d t	||d | ||||d n@|	dkrtdd|
\}}t	|t
d| d|d|d n%|	dkrtdd|
\}}t	|t
d| d|d|d n
tjtd|	|d W q' ty } ztjt||d W Y d}~q'd}~ww q| D ]\}}}|jtd | D ]\}}|jtd q1q"t| td}|rd}i }d}|t|k r|| \}\}}}|s||}|r||dkr||d g |f} | d | ||= qP|d}n|}|}|d7 }|t|k sWg }!t|tD ]4\}"}#g }$|#D ]#}%|%\}&\}}}dd | D }'|'jtd |$|&||'|ff q|!|"|$f q|!S )z7Create the real index from the collected index entries.genindexF#single       )diclinkkeypairtriple    z, seezsee %sNseealsozsee also %szunknown index entry type %r)location)r*   r   c                 S  s   g | ]
\}\}}||fqS r   r   ).0sub_keysub_targets_sub_category_keyr   r   r   
<listcomp>   s    
z-IndexEntries.create_index.<locals>.<listcomp>)r   domainsindex_domainentriesitemsget_relative_urir   r	   
ValueError
_add_entryr   loggerwarningr   strvaluessort_key_func_0sorted_key_func_1lenmatchgroup
setdefaultextendr   _group_by_func_key_func_2append)(r   r   r   r    newr8   docnamer9   rel_uri
entry_typevalue	target_idmaincategory_keyurientry	sub_entryfirstsecondthirderrtargets	sub_items_category_keyr4   r5   new_listold_keyold_sub_itemsir*   mprevgrouped	group_keyrH   
group_listgroup_entry	entry_keypairsr   r   r   create_index:   s   





	K
zIndexEntries.create_indexN)r   r   r   r   )r   r   r   r   r    r!   r   r   )__name__
__module____qualname__r   recompilerl   r   r   r   r   r   5   s
    
r   wordr@   subwordrT   
str | Noner(   r)   str | Literal[False]r*   r   r   c                C  sR   | | g i |f}|r|d  |g |fd }n|d }|r'|||f d S d S )Nr&   r   )rI   rM   )rr   rs   rT   r(   r)   r*   rW   r]   r   r   r   r=      s   	r=   rW   !tuple[bool, str | Literal[False]]c                 C  s   | \}}| |fS )z(Sort the index entries for same keyword.r   )rW   rT   rV   r   r   r   rC      s   
rC   tuple[str, _IndexEntry]tuple[tuple[int, str], str]c                 C  sp   | \}\}}}|r|}t d| }|dr|dd }|dd  s.|ds.d}nd}||f| d fS )zSort the index entriesNFD   ‏r&   Nr   r   )unicodedata	normalizelower
startswithisalpha)rW   r*   _targets
_sub_itemsrU   lc_keyrH   r   r   r   rE      s   
rE   tuple[str, _IndexEntryTargets]c                 C  sT   t d| d  }|dr|dd }|dd  s"|dr(td| }|S )zSort the sub-index entriesry   r   rz   r&   Nr      )r{   r|   r}   r~   r   chr)rW   r*   r   r   r   rL      s   
rL   c                 C  sd   | \}\}}}|dur|S | dr|dd }td|d d  }| s,|dkr.|S tdS )z,Group the entries by letter or category key.Nrz   r&   ry   r   r   Symbols)r~   r{   r|   upperr   r   )rW   r*   r]   r^   rU   letterr   r   r   rK     s   
rK   )rr   r@   rs   r@   rT   rt   r(   r   r)   ru   r*   r   r   r   )rW   r   r   rv   )rW   rw   r   rx   )rW   r   r   r@   )rW   rw   r   r@   )-__doc__
__future__r   rp   r{   	itertoolsr   typingr   sphinx.errorsr   sphinx.localer   r   sphinx.utilr   sphinx.util.index_entriesr	   r
   r   sphinx.buildersr   sphinx.environmentr   tupler@   r   __annotations__listr   r   dictr   r   r   r   	getLoggerrm   r>   r   r=   rC   rE   rL   rK   r   r   r   r   <module>   sn     

 




